△▲ WebProg 初心者の質問 pert14▲△
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2006/06/28(水) 22:37:10ID:???質問したいけど、どうしたら良いか分からない。
そんなときは、ここに書き込んでください。
板の住人や、その他が、けなしながら、厳しく教えてくれるかも。
質問する前に、まずはここを読んでね。
【注意事項】
・質問する前にGoogleで検索してみましょう
http://www.google.co.jp/
・環境(ソフトウェアのバージョンなど)は、必ず書いてください。できるだけ詳しく。
後から情報を書き足す、いわゆる情報の小出しは極力避けてください。
・何がしたくて、何ができて何ができないのかを書きましょう
・マルチポスト(複数のスレッドで質問する行為)は絶対に禁止です。
・過去ログは必ず読みましょう。あなたと同じ質問をしてる人がいるかも知れません。
2ch 総合ガイド
http://www.2ch.net/guide/
お願い。
適切な、板、スレ、を発見した場合、誘導してあげましょう。
スレの性質上 age 進行でお願いします。
関連情報は
>>2-3
0875ポン太
2007/01/04(木) 19:39:57ID:f9RGTlv/0876nobodyさん
2007/01/04(木) 19:50:28ID:???0877nobodyさん
2007/01/05(金) 00:11:12ID:???SCRIPTが生成されるってこと知ってる?
0878nobodyさん
2007/01/05(金) 00:29:09ID:???0879nobodyさん
2007/01/05(金) 09:25:05ID:UZOqG6YAランダムリンクを表示したいページの先頭に
<?php FOR(;;){}
?>
と書き、ファイルの拡張子を.phpにしてサーバーにアップすればおけー。
0880nobodyさん
2007/01/05(金) 09:26:24ID:UZOqG6YA<?php for(;;){} ?>
だった。
0881nobodyさん
2007/01/05(金) 17:07:09ID:???for($i=1;$i=0;$i++){
header(Location:ここに自分のサイトURLを書く");
}
echo"ここにランダムアクセスさせたいURLを書く1";
echo"ここにランダムアクセスさせたいURLを書く2";
echo"ここにランダムアクセスさせたいURLを書く3";
echo"ここにランダムアクセスさせたいURLを書く4";
echo"ここにランダムアクセスさせたいURLを書く5";
?>
0882nobodyさん
2007/01/05(金) 19:10:40ID:???0883nobodyさん
2007/01/06(土) 10:23:50ID:???縦方向にデータをグループ化したいです。
colspan なども考慮する必要があります。
例:
value = HTML.create( 'http://example.com/table.html' ).CSSSlecter('table')[0].data[1][0].innerText // 2列目1行目の文字列を得る
0885nobodyさん
2007/01/09(火) 05:47:25ID:???データベースにテーブルを作成する為のCRIATE TABLEの文はどの様な形で記述すれば良いのでしょうか?
データベースとCGIのデータのやりとりはDBIで行っています。
今まではInterBaseと言うソフトで直接CRIATE TABLEの文を記述すればテーブルが作成できていたのですが、諸事情でInterBaseが使用できなくなり困っています。どなたかご教授お願いします
0886nobodyさん
2007/01/09(火) 07:53:51ID:???0887nobodyさん
2007/01/09(火) 09:23:10ID:???プログラムを確認したところCREATEになっていす。
MySQLが入っていないとできないなんて事ありますか?
0888nobodyさん
2007/01/09(火) 13:22:27ID:???0889nobodyさん
2007/01/09(火) 16:06:52ID:???------------------------------------------
if ($hoge !~ /[0-1]/) { $hoge=0; }
------------------------------------------
って $hoge が0か1じゃない場合は、0にします、
って意味であっていますか?
phpをちょっとかじっただけなのですが、
---------------------
$hoge = 0;
if( $hoge ){ }
---------------------
上の文ってperlでは{}内は処理されないのでしょうか?
つまり、$hoge は真ではないと判断されるのでしょうか?
PHPなら真と判断されますよね??
どなたかお願いします m(_ _ )m
0890nobodyさん
2007/01/09(火) 16:38:37ID:???質問1
> $hoge が0か1じゃない場合は、0にします、
> って意味であっていますか?
いいえ。文字列として0及び1を含まない場合に0にする、です。
すなわち10や11は素通りします。
そういう動作にするのであれば
if ($hoge != 0 && $hoge != 1) { $hoge=0; }
if ($hoge < 0 || 1 < $hoge) { $hoge=0; }
if ($hoge !~ /\A[01]\z/) { $hoge=0; }
等々
質問2
> 上の文ってperlでは{}内は処理されないのでしょうか?
> つまり、$hoge は真ではないと判断されるのでしょうか?
試してみりゃわかりますが、0は偽として評価されるため処理されません。
> PHPなら真と判断されますよね??
いいえ。PHPでも0は偽として評価されます。
Rubyであれば数値0が真として評価されます。
0891nobodyさん
2007/01/09(火) 17:14:25ID:???PHPの場合:
$hoge = 0;
if ($hoge) { echo 0; }
else { echo 1; }
> 1
Perlの場合:
$hoge = 0;
if ($hoge) { print 0; }
else { print 1; }
> 1
ウソツキ…。
0892889
2007/01/09(火) 17:27:43ID:???気づかなかったら、えらいバグを作りそうでしたね。
ありがとうございます、助かりました。
0893nobodyさん
2007/01/09(火) 22:27:52ID:???そこで自社用に編集を行っていたのですがフォームの送信プログラム
の所でもう???が一杯になってしまいました。
どうか回答のほう宜しくお願いいたします。
フラッシュの送信ボタンのプログラムとして
on (rollOver) {
gotoAndPlay("s1");
}
on (releaseOutside, rollOut) {
gotoAndPlay("s2");
}
on (release) {
var phone_descr = _parent.phone_descr;
var your_name_descr = _parent.your_name_descr;
var your_email_descr = _parent.your_email_descr;
var phone = _parent.phone;
var message = _parent.message;
var your_email = _parent.your_email;
var your_name = _parent.your_name;
getURL("contact."+_parent.server_option, "_blank", "POST");
i = 1;
while (this["field_"+i]) {
this["field_"+i] = "";
i++;
}
_parent.message = "";
_parent.your_name = "";
_parent.your_email = "";
_parent.phone = "";
_parent.fax = "";
}
0894nobodyさん
2007/01/09(火) 22:28:23ID:???<%
Set reg = New RegExp
reg.Pattern = "^[A-Za-z0-9\._\-]+@([A-Za-z0-9\._\-]+\.)+[A-Za-z0-9\._\-]+$"
Set m = reg.Execute(Request.QueryString("your_email"))
if m.count > 0 then
smtpServer = "swapper.loc"
smtpPort = 25
name = Request.QueryString("your_name")
Set myMail = CreateObject("CDO.Message")
myMail.Subject = "from " & name
myMail.From = Request.QueryString("your_email")
myMail.To = Request.QueryString("recipient")
myMail.HTMLBody = "<html><head><title>Contact letter</title></head><body><br>" & Request.QueryString("message") & "</body></html>"
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing) = 2
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver) = smtpServer
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverpor... = smtpPort
myMail.Configuration.Fields.Update
myMail.Send
Response.Write("Your email was sent")
else
Response.Write("Invalid email")
End if
%>
<script>
resizeTo(300, 300)
//window.close()
</script>
とあります。
0895nobodyさん
2007/01/09(火) 22:28:57ID:???<?
$subject="from".$_GET['your_name'];
$headers= "From:".$_GET['your_email']."\n";
$headers.='Content-type: text/html; charset=iso-8859-1';
mail($_GET['[email protected]'], $subject, "
<html>
<head>
<title>Contact letter</title>
</head>
<body>
<br>
".$_GET['message']."
</body>
</html>" , $headers);
echo ("Your message was successfully sent!");
?>
<script>
resizeTo(300, 300)
//window.close()
</script>
があり、どこを変更すれば正しく当社に送信できるようになるでしょうか?
宜しくお願いいたします
0896nobodyさん
2007/01/09(火) 22:32:25ID:???> mail($_GET['[email protected]'], $subject, "
ここにメアドがハードコーディングされてるんだから
ここを書き換えるだけでいいんじゃね?
0897nobodyさん
2007/01/09(火) 22:34:22ID:???> mail($_GET['[email protected]'], $subject, "
↓
> mail("[email protected]", $subject, "
でよいかと
0898nobodyさん
2007/01/09(火) 22:37:32ID:???PHPのほうは自分で色々いじりたおしていた途中のプログラムでした・・・・
元々は
<?
$subject="from".$_GET['your_name'];
$headers= "From:".$_GET['your_email']."\n";
$headers.='Content-type: text/html; charset=iso-8859-1';
mail($_GET['recipient'], $subject, "
<html>
<head>
<title>Contact letter</title>
</head>
<body>
<br>
".$_GET['message']."
</body>
</html>" , $headers);
echo ("Your message was successfully sent!");
?>
<script>
resizeTo(300, 300)
//window.close()
</script>
です。すみません 思いっきり個人情報放出してしまいました・・・w
0899nobodyさん
2007/01/09(火) 22:40:13ID:???まだあるよ。
・mail関数が body として送るものは「それ」でいい、のか?
Content-type: text/htmlらしいから納得してりゃいいけど。
・$_GET['message'] に何が入るのか知らないけど本当に charset=iso-8859-1 なのか?
あとはちゃんと見てない。
0900897
2007/01/09(火) 23:04:45ID:???とりあえず
$_GET['recipient'] → メアド
に書き換えれば動くよ。宛先を動的に変更したいなら
QueryStringのrecipientを変更しないといけないけど
それらの情報はこの3ソースにはないな。
フラッシュの内部からリンクしてるのかも。フラッシュのことはわからん。
0901nobodyさん
2007/01/09(火) 23:12:21ID:???とりあえずやってみます
$_GET['recipient']を消してメアドではなく['recipient']のrecipientの部分をメアドでおkですか?
マニュアルが同封させてなく初心者なものでこまりはててました。
0902nobodyさん
2007/01/09(火) 23:17:09ID:???Your message was successfully sent!
とフォームを送信すると表示されるのですが、メールは待てど暮らせど届きません・・・
なにか特別なアップロードをする必要があるのですかね??
0904nobodyさん
2007/01/09(火) 23:29:00ID:???1歩前進しました。ありがとうございます
mail("[email protected]", $subject, "
とすると届きましたが
メール送信者の欄にfrom 件名にhttpd と表示されているだけでフォームに何を記入しても同様のメールしか届きません・・・
0905897
2007/01/09(火) 23:34:23ID:???べ、別にやさしくしたいとかそんなんじゃないんだからね!!!
フラッシュの
_parent.message = "";
_parent.your_name = "";
_parent.your_email = "";
_parent.phone = "";
_parent.fax = "";
↓
_parent.message = "This is maildoy. ここは本文です";
_parent.your_name = "This is subject. ここは題名です";
_parent.your_email = "[email protected]";
_parent.phone = "0312345678";
_parent.fax = "031245679";
これでどうか。
0906nobodyさん
2007/01/09(火) 23:40:55ID:???し・・しかし だめです from と httpd しかメールに記載されてません・・・
0907nobodyさん
2007/01/09(火) 23:41:52ID:???> _parent.message = "This is maildoy. ここは本文です";
> _parent.your_name = "This is subject. ここは題名です";
今んとこ日本語部分は削ってASCIIだけにしたほうが悩み事少ないかも。
MUAが頑張ってどうにかするかもしれないけど、指定されてるのはiso-8859-1だし。
0908897
2007/01/09(火) 23:45:07ID:???flaファイルからswfファイル作るのってFlashの開発ツールがないとできないんでしょ?
テンプレート買ったやつがFlashの開発ツール持ってるとは限らないんだよね。
じゃあどうやっていじるかっていうと、フラッシュのなかにある「_parent」ってのが
何を指してるのか。なんかそれは設定ファイルかなんかを差してて
その設定ファイルにメール本文とか題名とか書くようになってるんじゃないの?
0909897
2007/01/09(火) 23:47:09ID:???だね。日本語は削ったほうがいい。動作させることが先決。
ちなみにmaildoyはmailbodyのまちがい。あとツンデレのやり方はまだ慣れてない。
0910nobodyさん
2007/01/09(火) 23:48:04ID:???フォームをブラウザで開いた時、フォームにはなにも記載されてないのですが
送信して、新規ページでYour message was successfully sent!と表示された後
フォームのページを見たら
parent.message = "This is maildoy. ここは本文です";
_parent.your_name = "This is subject. ここは題名です";
_parent.your_email = "[email protected]";
_parent.phone = "0312345678";
_parent.fax = "031245679";
の文章が入ってました!!
ってこれはこれで微妙ですよね?・・・
そして メールを開くと from httpd は変わらずです・
0911nobodyさん
2007/01/09(火) 23:50:05ID:???> つーかさ、フラッシュのこと知らないから適当に書くけど
> flaファイルからswfファイル作るのってFlashの開発ツールがないとできないんでしょ?
> テンプレート買ったやつがFlashの開発ツール持ってるとは限らないんだよね。
> じゃあどうやっていじるかっていうと、フラッシュのなかにある「_parent」ってのが
> 何を指してるのか。なんかそれは設定ファイルかなんかを差してて
> その設定ファイルにメール本文とか題名とか書くようになってるんじゃないの?
いや 購入にあたり FLASH 8を購入しました
新しいやつより安かったんで・・・
ま・・・まさかこのソフトがわるいんですか!!
0912897
2007/01/09(火) 23:55:28ID:???ソースコードがフォームに表示されるなんてありえないよ。
たぶんダブルクオートを変なとこでとじたり開始したりしてぶっこわれたんでしょう。
つーか俺にはさすがに限界だなあ。フラッシュわかるやつがいればすぐ解決できそう。
というかテンプレートの説明書にこことここの設定をいじってくださいとか書いてないの?
0913nobodyさん
2007/01/09(火) 23:56:49ID:???あコードじゃなくて フォームの記入する欄に
This is maildoy. ここは本文ですと記入されてます
0914897
2007/01/10(水) 00:05:02ID:???なんだよ!じゃあちゃんと動いてるじゃん!
_parent.message = "This is maildoy. ここは本文です";
_parent.your_name = "This is subject. ここは題名です";
_parent.your_email = "[email protected]";
_parent.phone = "0312345678";
_parent.fax = "031245679";
↓
_parent.message = "This is maildoy";
_parent.your_name = "This is subject";
_parent.your_email = "[email protected]";
_parent.phone = "0312345678";
_parent.fax = "031245679";
これに変えてもう一回。
俺の想定だと題名が「from This is subject」になるはずだが。
0915nobodyさん
2007/01/10(水) 00:24:53ID:???自分の中では先ほどと変化はないのですがもう一度詳しく書きます
Flashのボタンのプログラムを
_parent.message = "This is maildoy";
_parent.your_name = "This is subject";
_parent.your_email = "[email protected]";
_parent.phone = "0312345678";
_parent.fax = "031245679";
としました。
ファイルをアップロードして ブラウザでフォームのページを開き
なにも記入せず送信ボタンを押しました。
Your message was successfully sent!が新規ページで表示されました
そのページからフォームのページに戻ると
何も記入しなかったはずのフォームのメッセージ欄 メールアドレス 名前 電話番号 FAX番号に
this is maildoy
this is subject
hogehoge@
等プログラムで書いた例文がフォームに記載されています
0916nobodyさん
2007/01/10(水) 00:26:33ID:???件名にfrom 送信者にhttpdと記載されたメールが届きました
本文には何も記載されていませんでした
0917nobodyさん
2007/01/11(木) 13:57:29ID:???PHP恐るべし・・・
色々ありがとうございました。
0918nobodyさん
2007/01/11(木) 15:46:57ID:xo8i09qtサーバー上のファイルをCGIで上書きするように指示した場合ジャンクファイルになりませんか?
例えばperlのCGIの場合アップローダーのソースから以下の部分を消す様な事。
# 同じファイル名がないかチェック
if ( -f "$Temp/$basename") {
exitError("同じファイル名が存在します。" .
"ファイル名を変更して送信してください。\n");
}
0919nobodyさん
2007/01/11(木) 17:39:42ID:???webページ製作中なんですが、
1.A.htmlに画像をおく
2.その画像にwordの文書ファイル(圧縮and/orそのまま)をドラッグ&ドロップ
3.B.htmlにはそのファイルがファイルのかたちで貼り付けられていく
4.C.htmlには2.のファイルが、圧縮されている場合は解凍されてテキストとして貼り付けられていく
…という一連の流れを管理人権限なしで、サイト閲覧者全員が行えるようにしたいんですが、
どういったタグまたはスクリプトを用いたらいいかおしえていただけませんでしょうか。
よろしくお願いいたします。
0920nobodyさん
2007/01/11(木) 23:05:00ID:???そゆことやりたいならイントラネット用のなんらかのソフトを考えたほうがいいよ
0922nobodyさん
2007/01/12(金) 11:09:35ID:???あれは何の情報をもとにしたどんな理屈のCGIなんでしょうか。
phpで作成中のものに類する機能を追加したいのですが、
ヒントとなるような情報探してます。
ご存知の方いたらおしえてください。
アホ質問ですいませぬ・・・
0926918
2007/01/12(金) 23:46:46ID:???質問を代えます、アップローダーを自作するのはあきらめました。
フリーCGI配布サイトで配布されているCGIのアップローダーを設置して
使っているのですが同じ名前のファイルがあると上書きが出来ないので、その
CGIプログラムのソースのファイルを改造して上書き可能にしたいのですが
、サーバーに問題が起きたりしないでしょうか?
# 同じファイル名がないかチェック
if ( -f "$Temp/$basename") {
exitError("同じファイル名が存在します。" .
"ファイル名を変更して送信してください。\n");
}
↑この部分を消してしまう改造。
0927nobodyさん
2007/01/13(土) 01:51:25ID:???だれが使うのよそんなの・・・
0928nobodyさん
2007/01/13(土) 11:01:41ID:b7kiLmafもらってきたデータそのまま$basenameに突っ込んでると、
関係ない他のファイルまで消されるので注意な。
簡単にクラックされちゃう。
0929nobodyさん
2007/01/13(土) 11:02:47ID:b7kiLmafHTMLで、OLEドロップ?(だっけか)は無理ジャマイカ?
0930nobodyさん
2007/01/13(土) 11:03:27ID:b7kiLmafローカルのソフトで、そういうの作れば可能だろうけど。
0931922
2007/01/13(土) 13:45:19ID:???一般におこなわれている方法かどうかは不安があるけど
session_save_path()でセッションの保存ディレクトリを指定し、
ファイル数を数える仕組みにしました。
セッションの寿命や、ガベコレの頻度を調整することで思うようにいきました。
ですが、レンタルのUNIX鯖に上げると動きません。
phpinfoではsession.save_pathのデフォルトが「値なし」になっており、
いろいろ調べるうちセッションファイルがsession.save_pathに保存されるのは
Winだけらしい、とは思ったのですが、資料も少なく、
結局UNIXでセッションファイルにアクセスする方法がわかりませんでした。
次のヒントをいただけるとありがたいのですが・・
何度もすみません。
0932nobodyさん
2007/01/13(土) 15:07:11ID:???動かないというかパーミッションのないディレクトリを指定してるんじゃないの?
素直に/tmpを指定したほうがいいよ。
つーか、php.iniをそのままあげたのか?
「C:\Document Setting\〜」とかなってたらUNIXでは読めないぞ。
0933922
2007/01/13(土) 16:13:44ID:???ありがとうございます!/tmpを指定したらパッと見うまくいきました!
これまではFTPでアクセスできる範囲(借りているスペースである/home以下)にディレクトリを作っていて、
気づきませんでした・・orz
しかしこの/tmpってレンタル鯖の一ユーザである自分が勝手に使っていい領域なんでしょうか。
問い合わせた方がいいのかな・・
自宅Winのときはアクセスによってセッションファイルが消えたり増えたり
目視できたので確認できて安心感があったのですが
今はまだ公開してないページなのにクリックするたびに人数が増減してたり・・・なんか不安・・
各種設定はphp.iniではなく、スクリプト内でini_set関数やsession_save_path('/tmp')などとしていました。
あとは.htaccessで指定してみたり。。。
他のスクリプトでセッションを使うときを考えて(今回のはすぐ消えてしまうセッションにしてるから)
/tmp/hogeくらいしておけばいいのかもしれませんね。
これからテストして、表示されてる人数がほんとに自分のプログラムのセッションなのかものも含め
いろいろ試してみます。ありがとうございました!
0934922
2007/01/13(土) 17:54:32ID:???確認したら/tmp内のファイルは全部セッションファイルだったんですが、
妙に増えるので、いくつかの内容を読み取ってみた・・・
そしたら全然他人さまのセッションでした・・・
やばい俺、どんどん消しちゃったヨ・・・(寿命を短くしてるスクリプトの影響受けてるはず)
PHPのマニュアルにも書いてあったけど、/tmpにしとくと、鯖を共有してる人にジャックされちゃう危険が・・・って、
多分これのことですよね・・・ひとつ勉強になりますた・・こ、こわい。
あとはやっぱり鯖に問い合わせてお伺いしてみますです・・
session.save_pathで指定しなくてもデフォで/tmpみたいだったから
今回はカウンターみたいなものだからたいしたことないけど、
まじで危ないところだった。違った意味でも感謝です>>932
0935nobodyさん
2007/01/13(土) 21:07:44ID:???ワロスww
0936nobodyさん
2007/01/14(日) 00:31:49ID:???0937922
2007/01/14(日) 12:19:12ID:???自分がかりてる/home以下にセッションの保存ディレクトリをつくるのは
最初に自分が試したのと同じだったんですが(/home/tmpなど)
保存できなかったのはパーミッションを間違えていたからでした。
それだけでした・・・orz
もしセッションの保存先を/tmpなどのデフォルトにしてる人はなおした方がいいと思います。
初心者レベルの自分ですら、他人の内容やセッションIDを取得できてしまったし、
自分の(プログラムからの)ワンクリックで何10件のセッションが一発で消えました。
途中で切れるのではなく、あとで復元される可能性のある
保存期間中のセッションの廃棄時間が早まっただけだったとは思うんですが・・・
PHPマニュアルのセッション処理関数のページでも警告されてました。
0938nobodyさん
2007/01/14(日) 12:40:48ID:???0939nobodyさん
2007/01/14(日) 20:03:22ID:8EeRVv4Pファイルにパスワードによるダウンロード認証をかけるには
どうしたらよいのでしょうか?
環境は、
サーバはAAA!CAFEの無料スペースを使っています。
CMSにはPukiwikiを使っています。
0940nobodyさん
2007/01/14(日) 20:32:26ID:???それがいやならパス付アップローダにうp
0941nobodyさん
2007/01/15(月) 02:07:31ID:G92pVELOさくらのレンタル鯖にアップすると
表示できる時と表示できない時があります。
<?php echo "HELLOWORLD" ?>
みたいな一行プログラムでさえ。
原因が思いつかず、文字コードでしょうか
DOCTYPEでしょうか、
原因にあてがつく方、ご指摘ください。
0942nobodyさん
2007/01/15(月) 02:14:49ID:???<?php echo "HELLOWORLD" ?>
↓
<?php echo "HELLOWORLD"; ?>
0943nobodyさん
2007/01/15(月) 20:34:31ID:???どうせパーミッションとかミスってるんじゃないか?
他に原因らしい原因は浮かばない
>>942
どちらも文法的には正しい。が、推奨されない。
?> が終端を意味するために最後のセミコロンは省略可能。
0944nobodyさん
2007/01/15(月) 20:45:52ID:???method=getで受けとった部分が文字化けしてしまいます。method=postは大丈夫でした。
よろしくお願いします。
↓の一番下の部分も参考にしましたが直りませんでした。
http://tech.bayashi.net/pdmemo/chara2.html
apache perlは↓のサイトを参考に構築してあります。
http://www.y-kit.jp/saba/
------------------------------
環境
Apache/2.0.59 (Win32) PHP/5.1.4
------------------------------
コード例
require './jcode.pl';
#GET用
$myindata=$ENV{'QUERY_STRING'};
#POST用
#read( STDIN, $myindata, $ENV{ 'CONTENT_LENGTH' } );
#$myindata =~ tr/+/ /;
#$myindata =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
&jcode'convert( *value, 'sjis' );
print "Content-type: text/html\n\n";
print $myindata;
------------------------------
getデータ
http://localhost/bbsmt/write.cgi?name=a&mail=&message=あいうえお&a=11
表示データ
name=a&mail=&message=???¢???|?¨&ip=&a=11
0945nobodyさん
2007/01/15(月) 20:59:07ID:???0946nobodyさん
2007/01/16(火) 00:03:57ID:MtEn2NkXさくらって、phpは実行権限つけないといけないんじゃなかったかな?
いや、でも表示できるときとできないとき?ってのがわからん。
さくら使ってるがちゃんとphpは動いている
0947944
2007/01/16(火) 16:03:39ID:???require './jcode.pl';
#GET用
#$myindata=$ENV{'QUERY_STRING'};
#POST用
read( STDIN, $myindata, $ENV{ 'CONTENT_LENGTH' } );
$myindata =~ tr/+/ /;
$myindata =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
&jcode'convert( *value, 'sjis' );
print "Content-type: text/html\n\n";
print $myindata;
------------------------------
postデータ
フォームデータは以下のとおり
name=a
mail=
message=あいうえお
a=11
http://localhost/bbsmt/write.cgi
表示データ
name=a&mail=&message=あいうえお&ip=&a=11
0948944
2007/01/16(火) 16:08:44ID:???あれからだいぶ調べて原因を絞りました。(get.cgiは上と同じコードです。)
(パターン1)
http://localhost/test/get.cgi?name=%82%A0%82%A2%82%A4%82%A6%82%A8&
name=あいうえお
(パターン2)
http://localhost/test/get.cgi?name=あいうえお
name=???¢???|?¨
上記getデータ2つのうち後者の場合エラーが出ることがわかりました。
↓の質問者と同じ現象だと思いますが時間をかけて調べても対処方法が見つかりませんでした。
http://www.rescue.ne.jp/CGI-BBS/beginners/jcode/20030205163817.shtml
0949nobodyさん
2007/01/16(火) 17:39:55ID:???対処方法というより「日本語をそのまま投げない」のがお約束なので
パターン1の「%82%A0%82%A2%82%A4%82%A6%82%A8」方式でCGIに渡してください。
RFC3986を読んだり解説サイトを探したりしてみると詳しく書かれてるんだと思う。
試してみたんだけど、IE6で test.cgi?あいうえお と日本語のQUERY_STRINGを渡すと
"\x3F\x3F\x3F\x81\x91\x3F\x3F\x3F\x7C\x3F\x81\x4E" # SJIS環境では"???¢???|?¨"
こんなのが届くので、UTF-8が扱えるJcode.pmさんでも対処に困る模様。
0950944
2007/01/17(水) 23:34:11ID:???今回は別アプリ(flash)からのデータを受け取りたいのです。
で、今まではan httpdウェブサーバで動かしており、
上記パターン2でも問題なく動いていたので、
アパッチでも同様に動かしたいのです。
flash、cgi連携部分は既存品に組み込まれており、flash側を変更するのは
現実的な修正時間となっておりません。
アパッチの設定でどうにかなればベストなのですが、
それ様のアパッチモジュールとか自作すればどうにかなるのかな?
0951nobodyさん
2007/01/18(木) 00:43:46ID:???ActivePerlのバージョンは5.6.2?(今は確認がとれないです)だったと思います。
文字列や単純な計算結果を
htmlで表示させるようなCGIであればきちんと動いてくれるんですが
htmlでリンクからスクリプトを動かそうとすると
CGIファイルをダウンロードしようとしてしまい、動いてくれません。
ちなみにそのCGIはデータベース検索CGIです。
googleで「CGI ダウンロードになる(orなってしまう)」等で検索してみましたが
どれも微妙に今回の件とはずれており、解決できませんでした。
また、設定等も何度も見直しましたが、どこが間違っているのかわかりませんでした。
一応、リンクを介さないCGIであればきちんと動いてはくれているようです。
どうすればリンクからスクリプトを起動させることができるのでしょうか?
0952nobodyさん
2007/01/18(木) 01:14:57ID:???現在CGIを改造して、アクセス禁止プログラムを書いてるのですが、プログラム自体は完成して動作するのですが・・・
$subno=$ENV{'HTTP_X_UP_SUBNO'};
if($subno eq "***********_**.ezweb.ne.jp"){
error("アクセス禁止処置を受けています"); }
これでサブスクに対応したアクセス禁止は作れたのですが、複数追加するとソース自体がとても長くなってしまいます。
そこで配列化を用いて、スリムにしたいのですがどうすればいいでしょうか?
@ackin=('固体ID',固体ID'');
$subno=$ENV{'HTTP_X_UP_SUBNO'};
if($subno eq $ackin){
error("アクセス禁止処置を受けています"); }
こんな感じでいいんですかね?foreach(@ackin)を使えばいいんでしょうが、よくわからないので;
どなたか助けていただけませんか?
0953nobodyさん
2007/01/18(木) 01:55:16ID:???$subno=$ENV{'HTTP_X_UP_SUBNO'};
foreach $ackin (@ackin) {
if ($subno eq $ackin) { error("アクセス禁止処置を受けています"); }
}
かな。
ハッシュを使って
$ackin{'個体ID1'} = 1;
$ackin{'個体ID2'} = 1;
$subno=$ENV{'HTTP_X_UP_SUBNO'};
if ($ackin{$subno}) { error("アクセス禁止処置を受けています"); }
という手も。
0955951
2007/01/18(木) 18:56:26ID:tfUWxBLC0956nobodyさん
2007/01/18(木) 19:04:14ID:???HTMLはともかく、CGIはローカルファイル(file:///とか)じゃなくて
localhost(http://127.0.0.1とかhttp://localhost/とか)から見ないと
真面目に動いてくれないよ。
0957nobodyさん
2007/01/18(木) 19:04:23ID:+mY5vYdKブラウザ上からHTMファイルを更新する際、/cgi-binから/public_htmlの
ファイルを直接操作できる環境は一般的でしょうか。
また、/cgi-binに作成した *.html をそのまま表示することはできないと
思いますが(Internal Server Errorで)、CGIを呼び出して print << する
のが一般的でしょうか。
例えば、inde.htmlで更新情報を表示したい場合などで負荷を抑えた方法を
探しています。
0958957
2007/01/18(木) 20:28:41ID:???表示する事ができない?
0959nobodyさん
2007/01/18(木) 21:03:02ID:???こういうところだと、どこに.cgiファイルを置いても良い。
逆に言えば、画像などを置いても問題ないようだ。
0960951
2007/01/18(木) 22:35:39ID:tfUWxBLCcgiもhtmlもhttp://localhost/から見てます。
それと今思い出しましたがIISのヘルプを表示させると
なぜか左側の白く囲った枠の中がタブしか表示されてなかったです。
これもなにか関係あるんでしょうか?
0961957
2007/01/18(木) 22:58:35ID:???ありがとうございます。知人に頼まれた環境での構築になるので、それを
踏まえた上で設計の参考にさせて頂きます。
>>960
ダウンロードしたファイルを開いてみて、それがエラーメッセージであれば
Perlのエラー(文法エラーとか、ファイルオープン)属性とかソースの見直し。
ホントにcgiファイルをDLするのであれば、サーバの方がおかしいと思われます。
サーバのエラーログ確認してみると何かあるかもです。
0962nobodyさん
2007/01/19(金) 01:21:11ID:???http://example.com/cron/hoge.php
を叩きたい(アクセスさせたい)のですがどのように書けばいいのでしょうか?
0964nobodyさん
2007/01/19(金) 14:11:35ID:mc90E3znフォームから入力されたメールアドレスあてに
「このURLをクリックしてパスワード変えて」
みたいな内容のメールを送りたいのですが、その際にURLに埋め込むキーが
他のユーザと被らないように暗号化したいわけですが、
そういうのはどうやって実装すればいいんでしょうか
0965nobodyさん
2007/01/19(金) 16:27:58ID:???0966nobodyさん
2007/01/20(土) 19:16:52ID:???クライアントの動作テスト用のソフト(サーバ上で動く)ありますか?
0967nobodyさん
2007/01/20(土) 19:29:59ID:???0968nobodyさん
2007/01/20(土) 22:38:51ID:???アクセス集計を取りたいページを掲示板(KENT-WEBさんのJoyful Note)に
設定したいのですが、cgiのどこに文を入れたらよいかわかりません。
というか、それが可能なのかもわからない初心者です。
親切な方教えてください。
もし板違いでしたら誘導お願いします。
0969nobodyさん
2007/01/20(土) 22:48:34ID:???【 スクリプト改造依頼スレ 】(丸投げ) part6
http://pc10.2ch.net/test/read.cgi/php/1157787046/
0970nobodyさん
2007/01/22(月) 20:27:06ID:???メールで確認することを考えています。
cronで月一程度走らせればよいのですが、
quota|sendmail というシェルスクリプトと、
quota とsendmail を exec するPerlスクリプトと、
どちらがサーバ負荷小さくて済むでしょうか。
0971nobodyさん
2007/01/22(月) 21:01:57ID:???0972nobodyさん
2007/01/22(月) 22:32:37ID:???0973nobodyさん
2007/01/22(月) 22:35:12ID:???スパゲッティコードを書く
というのはまぁ冗談として「難読化」てぐぐってみんさい
0975nobodyさん
2007/01/23(火) 00:00:52ID:???PHPはZend Encodeなんちゃらとかあるし
.NETはexeファイルになって元に戻せないし。
レス数が950を超えています。1000を超えると書き込みができなくなります。