CGIだけど、なんか質問ある? Part 8
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/09/22 23:15ID:???※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
↓
Perl 初心者コーナー Part16
http://pc.2ch.net/test/read.cgi/php/1032070299/l50
過去ログ・関連スレッドは >>2
0514511
02/11/04 14:53ID:???回答どうもありがとうございます
ちょっとスクリプトに手を加えてファイルにそーゆーのを吐き出すよーにしてみました
しばらく様子をみようか…と思ったのですが致命的な欠陥が…(ぉ
>>513
別に平気なんじゃないかと思うのですがでければEUCコードとかも使えるエディタでやったほうがイイのではないかと思われ
うちはPerlEditorなるものを使っておりますがなんか挙動が変でつ、機能自体はあんまし問題は無いのでつが
色々と串について調べてたら行き着いたサイトなんですが
tp://www8.big.or.jp/~000/CyberSyndrome/evc.html
このサイトの診断を見て、プロクシ関連の情報、のとこの下に表示されてるのが
環境変数名なのかとフツーに思って書いていて、イザ動かしてみたら動かず…
試しに串さして環境変数を全部吐き出させてみたところ
これらの変数名が含まれてないことが発覚( ´Д⊂
どうすればいいのか、調べてみてもなんか全然引っかかってきません(汗
連続ですみませぬがどうか御教授ください…
0516nobodyさん
02/11/04 14:58ID:???されるの? ヘッダとしては、Client-IP: かな。見たことが
無いんだけど、こういうヘッダを付けるプロキシがあるんで
しょうか?
0518nobodyさん
02/11/04 15:35ID:???だからそんなの、サーバ管理者の気分次第でいくらでも変えられるんだってば。
HTTP_FUCK_YOUでもHTTP_2CH_NETでも好きにできるよ。
# 基本的にHTTPなんたらっていう環境変数は当てにならん。
0519うえの
02/11/04 22:11ID:tA0Z4q/O「10日でおぼえるPerl/CGI入門教室」という本で勉強しています。その本にはCDロムが
付録でついていて、その本に紹介されているプログラムが収録されています。私は本の
とうりプログラムを入力してプログラムを実行してみて、うまく行かなかった場合、付
録のCDロムのプログラムを1行ずつコピーして、自分で入力したプログラムにペースト
して実行してみて、入力ミスを探しています。だいたいの時はこれで、入力ミスを見つ
けてうまく行きます。ですが今まで2回ほど、すべての行をこのやり方でやっても、入
力ミスが見つからないことがありました(プログラムはうごかないままです)。一行ず
つコピー&ペーストしてうまく行かないのに、全ての行を一度にコピー&ペーストして
プログラムを実行してみると、うまく行きました。これは、いったいどういう事でしょ
うか?
すみません、何方かどうか宜しくお願いします。
0520☆脱
02/11/04 22:19ID:Xjm9EuR3http://www.i-chubu.ne.jp/~tomomi-h/marion/navi/navi.cgi?links=20311
0521511
02/11/04 22:45ID:???がんがって
>>518
そうは言っても日本人の朝食はパンかゴハンが主流であるわけで
それ以外の朝飯喰ってるヤツなんかあんましいないでしょ
つーわけで、何事にも一般論とゆーのがあるのでは…とゆー
>>519
気がつかないような些細なミスがあるに違いない
えと、あと>>514でした質問なのですが、
今現在Windows2K+ActivePerl5.6+AN-HTTPDとゆー環境でテストしてるのですが
なんか環境依存とゆーかたまにこの環境じゃ吐かない環境変数があるような(;´Д`)
つーわけで吊りつつもーちょっと自分で調べることにします…
0522あい
02/11/04 23:01ID:G/C4foN1何卒お願いします。
0523nobodyさん
02/11/04 23:06ID:???激しく板違い
0524nobodyさん
02/11/04 23:08ID:???マルチは氏ねよ。
0525nobodyさん
02/11/05 10:03ID:???の画像掲示板を設置して使っているのですが、タイトルなどに
半角カナを使われると文字化けしてしまいます。2chユーザーは
やはり半角カナ使用率が高いので、できれば半角カナも表示
できるようにしたいのですが、なにかうまい方法はあるのでしょうか?
0527525じゃないけど
02/11/05 18:39ID:5Ci8Aq1yあ、それでいいんですか。
EUC今まで使ったことがなかったんですが(^^;
なるほどー。
0528nobodyさん
02/11/06 17:50ID:???エラーにして、文字コードの変換は行わないね。
0529うえの
02/11/06 22:25ID:TwygVRhZ分かってきました。
0530nobodyさん
02/11/06 23:52ID:???0532nobodyさん
02/11/07 00:43ID:???0533nobodyさん
02/11/07 00:51ID:Gt0qGrXXSJIS
出力もSJISにしてるわ
0534nobodyさん
02/11/07 01:06ID:???0536age
02/11/07 07:52ID:???別にそんなこといわれてないよ。
半角カナで書き込むと化ける可能性がある、ってのならあるけど。
0538nobodyさん
02/11/07 11:13ID:Y8ygs/b/$testという変数に入ってるhtmlの<table>タグが邪魔なので消去しようと思い、
$test =~ s/<table width=100% border=0 cellspacing=0 cellpadding=15><tr><td>//;
$test =~ s/<\/td><\/tr><\/table>//;←スラッシュをエスケープしてるつもり
とやったけどダメでした。
この場合はどうすればよいのでしょうか?
よろしくお願いします、、、
0539nobodyさん
02/11/07 11:27ID:5h9enSGw<が<になってるとかじゃないよね。
0540nobodyさん
02/11/07 11:38ID:8nsGokx4急に
HTTP 405 - 許可されていないリソースです。
インターネット インフォメーション サービス
とでるようになりました。最近やったことといえば、SP3を
適用したことと、容量がいっぱいだったので、いらないフォルダ
(といっても公開してる部分の要らないIMAGEフォルダやHTML)
を削除したぐらいです。同サーバのASPは問題なく動いていますが、
別のCGIはアドレスを打つと「保存しますか?」とダイアログが出てきます
。原因および対処法わかりますか?
0541538
02/11/07 11:44ID:Y8ygs/b/というかめちゃ適当に書いたのにこれで合ってたとは、、、
ありがとうございました。
0542nobodyさん
02/11/07 14:15ID:X99Axcr/ユーザ設定用の部分でそのCGIのファイル名を入れさせるのってありますよね。
わざわざ $ENV{'SCRIPT_NAME'} 使わないのには何か理由があるんでしょうか。
0543nobodyさん
02/11/07 14:27ID:???$ENV{'SCRIPT_NAME'} が /hoge/index.cgi になるからとかじゃない?
0544nobodyさん
02/11/07 14:30ID:???まあ
$file = $ENV{SCRIPT_NAME};
$file =~s/.*\/([\/]+)$/$1/;
で良いんだけど、余計な処理するくらいなら指定させた方が良いだろ、とか。
0545nobodyさん
02/11/07 14:33ID:???コマンドプロンプトやらで動作チェックするとき$ENV{SCRIPT_NAME}が入らないからとか
0546nobodyさん
02/11/07 14:49ID:???sendmailでメールを送ります。
宛先が存在しないとfromに設定したアドレスに failure notice とかいう
メールが自動で来ますよね。
sendmailで送った直後にアドレスが存在しないかどうか、CGI側で判断するにはどうしたらいいんですか?
例えば、入力されたメールアドレスにただちにsendmailしてみて
正常に送られたらそのアドレスはテキストファイルに書き込むみたいなことをしたのです。
0547nobodyさん
02/11/07 15:16ID:???答え返ってきてるだろが
http://pc.2ch.net/test/read.cgi/php/1034583844/633
0548nobodyさん
02/11/07 15:27ID:???じゃぁ、よくある会員サイトで、
メールアドレスを間違えて入力して会員登録してしまった人が居るとしますよね。
で、定期的に会員にメール配信したりしますよね。
その度にメール配信の管理者へ「こんなメールアドレスないですよメール」が返ってくるって事ですよね?
最悪じゃないですか?
そんな会員管理者で勝手に削除すればいいと思われるかもしれませんが、
例えば会員数が膨大なサイトとかどうするんですか?
0549nobodyさん
02/11/07 15:50ID:???会員数の大きいところはreturn pathが専用のメアドだから、管理者は困らない。
定期的にreturn path をスクリプトでチェックすればいいんじゃないの。
0550nobodyさん
02/11/07 15:53ID:???けどそれはCGIでする事ではありえない。
0551nobodyさん
02/11/07 18:29ID:oUI+pRbtよろしくお願いします。
ttp://www.kent-web.com/chat/robo.html
↑この人工知能型チャットスクリプトを身内のサイト用に使いたいと思っているのですが、
フレーム表示ではなく一画面に発言フォームとログが出るように作り直したいんです。
簡単なHTMLなら書けるし、BBSの背景色を変える程度のCGI改造なら出来るので、
わかるかなーと思ってソースを見てみましたが、さっぱり分かりません。
どこをどう書き直したら、フレーム表示ではなく、一画面表示となるでしょうか?
スクリプトの中の怪しい部分を以下に載せさせてもらいますので、
教えていただければと思います。
0552550
02/11/07 18:29ID:oUI+pRbt#------------------#
# フレームを生成 #
#------------------#
sub frame {
# クッキーを取得
&get_cookie;
# クッキーにリロード時間/行数のない場合は初期値を代入
if ($ck{'retime'} eq "") { $ck{'retime'} = $re_sec; }
if ($ck{'line'} eq "") { $ck{'line'} = $line[1]; }
?
print <<"EOM";
<frameset rows="147,*">
<frame name="form" src="$script?mode=form&retime=$ck{'retime'}&line=$ck{'line'}">
<frame name="log" src="$script?retime=$ck{'retime'}&line=$ck{'line'}">
<noframes>
<body>
フレーム非対応のブラウザの方は利用できません
</body></noframes>
</frameset>
</html>
EOM
exit;
}
0554551
02/11/07 18:30ID:???ここがフレーム表示を決めてるのは間違いないと思うんですが、
普通、フレームってframe srcにHTMLファイルのパスが入りますよね?
このスクリプトだと、
<frame name="form" src="$script?mode=form&retime=$ck{'retime'}&line=$ck{'line'}">
<frame name="log" src="$script?retime=$ck{'retime'}&line=$ck{'line'}">
こうなっています。
src以下が、それぞれ入力フォームとログ表示画面を現しているんじゃないかという事は分かるんですが、
それをどう並べれば一画面表示となるのかが分かりません……
どなたか、お教えいただけないでしょうか???
0555nobodyさん
02/11/07 19:00ID:???フレーム使わないならチャットスクリプトじゃなく一行掲示板みたいなの
探したほうが早いと思うが。
0556nobodyさん
02/11/07 19:10ID:???http://pc.2ch.net/test/read.cgi/php/1028193595/
0557551
02/11/07 19:11ID:wiJfESIxレスありがとうございます。
このroboチャットに入ってる自動応答の人工知能スクリプトを、一画面で使いたいんです。
0558551
02/11/07 19:12ID:???あ、ありがとうございます。
そちらへ移った方が良さそうですね。
すみません、>>551の質問は無視して下さい>all
失礼しました。
0559nobodyさん
02/11/07 21:31ID:???ログの各項目をタブで区切ってるんですが
訪問者が名前とかメールとか発言とかでタブ使うと表示項目がズレちゃうとゆー欠点が有るのです
それを消そうと、タブをスペース4つに置換とか、""に置換とかしたいのですが、できません
$name=~ s/\t/ /g;
$name=~ s/[TAB(のつもり)]/ /g;
とかはやってみたのですが…
すみません、何卒御教授ください
0560nobodyさん
02/11/07 21:44ID:???tr使うとか・・・フォームから受け取るときにタブ全部消すとか・・・あ、消すのは聞いてないか。
0562nobodyさん
02/11/08 02:28ID:???あ,分かった。ログ自体が
>名[TAB]前[TAB]メール[TAB]ほげほげ
ってなってるんですね?
ログに保存する前に置換するべきだと思うんですが。
0563559
02/11/08 08:07ID:???trって正規表現を使わない置換演算子でしたっけ…
とりあえず利用者の 入力してきたタブを消せればよい方向です
>>561
ぇゃ、なんかそれじゃできませんでした(゚∀゚)アヒャ
なぜだろう…
>>562
そう、そういう意味でつ 伝達能力低くてすみません
今現在はそのように入力されるとメール欄に前が、コメント欄にメー(略
とりあえずガッコから帰ってきたら御教授いただいた方法とか試してみます
他のとこでも不具合がポコポコと・゚・(ノД`)・゚・
0564nobodyさん
02/11/08 08:19ID:???s/\t//g;
0565559
02/11/08 15:29ID:???むしろなぜ昨日できてなかったのか…
すみません、馬鹿丸出しですので吊ってきます
御親切にしていただいて嬉しかったっす どうも有り難うございました
>>564
URLエンコードってなんですか(;´Д`)
ぐらいの初心者ぶりを発揮しています
おいおいがんがって勉強していくつもりで…
(´-`).。oO( バグの原因は変なとこで変数を宣言していたことでした )
(´-`).。oO( ソースの書き方がめちゃめちゃダメぽな匂いがプンプンです )
0566nobodyさん
02/11/09 00:43ID:???今までずっと1つのファイルでまとめてたんですけど、覚えきれなくなってきたんで。
0567nobodyさん
02/11/09 12:41ID:???半角英数字以外と数字以外の規制はどうやればいいですか?
0568nobodyさん
02/11/09 13:31ID:XnEMYEgkハッピーマンデー対応にするととてもむずかしいです。
そもそもハッピーマンデーの仕組みがわからないな・・・
よろしくおねがいします。
0570nobodyさん
02/11/09 16:46ID:???初心者です・・・それもかなりの・・・。
ぇぇと、CGIですよね・・・
CGIでなんていうか・・・、掲示板とかゲームとか作っていきますよね・・・。
それで、掲示板にしろゲームにしろつくるときにはまず最初に何からやればいいのでしょうか?
なんか他のとこでまずperlでやるんだったらなんかダウンロードするとか言われたんですけど、よくわかりません。
何をダウンロードしてどこでどのようにつくっていけばいいのでしょうか?
perlとかはどこに打てばいいんでしょうか?
なんかおかしいこと行ってるかもしれませんね・・・私・・・。
すいませんがどなたか教えてくれませんでしょうか?
0571nobodyさん
02/11/09 16:59ID:XnEMYEgkhello world!!
0572nobodyさん
02/11/09 17:04ID:???それをどうやればいいのかなってこと・・・。
ちょっと私の質問はやヴぁかったみたい・・・w
0573nobodyさん
02/11/09 17:06ID:XnEMYEgkprint"Content-type: text/html";
print"hello World!!";
0575nobodyさん
02/11/09 17:30ID:0mUtXyM1FTPから読み込めない設定にしてしまいました。
これを復旧させる方法はあるのでしょうか?
垢はinfoseekです。容量はだいぶ超えてるので(ちなみに3G弱(ワラ
管理者に直してもらう選択肢は無いと思われ。
0576nobodyさん
02/11/09 17:47ID:MmuLdSXo0577nobodyさん
02/11/09 18:21ID:???ttp://pc.2ch.net/test/read.cgi/php/1034583844/749n
0578最近始めた者
02/11/09 19:44ID:???って何でしょうか。
マジレス希望です。
0580nobodyさん
02/11/09 20:17ID:4Q7VYiKo0581nobodyさん
02/11/09 20:18ID:???kent-webのaska.cgiにひみこーどをつけようと思うんですが
ほかの場所はうまくいったんですがここだけわからないんですよ
書き込み処理部分に
{ # 対フェイザーオンの場合は実際に発行されたコードかどうか照合
if ($FORM{'facheck2'} eq '') { &error('チェックコードエラー',"投稿コードが入力されてません(^^;;");
}
$dukecheck = $FORM{'facheck2'} . $FORM{'facheck3'};
if ( !open(DB,"$himicode_log") ) { &error('0'); }
@lines = <DB>;
close(DB);
$himikocheck=0;
foreach $line (@lines) {
chop($line);
if ($dukecheck eq $line) {
$himikocheck=1;
}
}
if ($himikocheck != 1) {
&error('x');
}
}
っていれたら、いくらひみこーどがあってても
チェックコードエラーってでてしまうんですよ
誰か教えてくれないでしょうか?
0585nobodyさん
02/11/10 00:51ID:???0586nobodyさん
02/11/10 02:48ID:???この2chのアドレスみたいに
cgiのあとに?とかはさまずに続く文字列は
どのようにしたら使えるんでしょうか?
この場合/php/1032704121/っていう情報を
どうやれば使えるのか知りたいです
0587nobodyさん
02/11/10 02:51ID:???どの部分がおかしいのかは突きとめたんですが、なぜそうなるのかがわかりません。
# 出力テスト
print ($lines[378] eq $eachdate_string[0]); print "$lines[378] eq $eachdate_string[0]<br>\n";
print ($lines[379] eq $eachdate_string[1]); print "$lines[379] eq $eachdate_string[1]<br>\n";
で、結果は自鯖では
1[02/11/10] eq [02/11/10]
1[02/11/11] eq [02/11/11]
こうなって正常なんですが、プロバイダのだと「1」の部分だけが出ません。
つまり条件式が偽になってしまうみたいなんです。
どうして?TT
0589587
02/11/10 04:41ID:???プロバイダの鯖のほうだと、chomp @lines; が無効にされてたみたいです。
なぜかはわかりませんが・・
結局、
$lines[$i] =~ s/\r\n//g;
$lines[$i] =~ s/\r//g;
$lines[$i] =~ s/\n//g;
で改行文字取り除いたらうまくいきました。
0590nobodyさん
02/11/10 11:08ID:8jnCcvHXマニュアル読みなさい。配列にchompはできないぞ。
0591nobodyさん
02/11/10 11:22ID:???/(1\d\d|2[0-5][0-5]|\d{1,2}).(1\d\d|2[0-5][0-5]|\d{1,2}).(1\d\d|2[0-5][0-5]\d{1,2}).(1\d\d|2[0-5][0-5]|\d{1,2})/)
これだと192.168.000.001OKですけど
192.168.0.1はだめなんです。
いい方法ありませんか?
0592591
02/11/10 11:54ID:ZM8p4h+c/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/
にすることにしました。
0593nobodyさん
02/11/10 17:19ID:???カウンタとアクセス解析のCGIを作り、実際に使ってます。
同時アクセス問題の関係で、予め用意したlockというディレクトリに
lock/lockという風にディレクトリをつくっているのですが、
ごくたまに親のほうのlockディレクトリが消えてしまいます。
コードをくまなく見てもrmdirはすべて"lock/lock"と指定してあります。
rmdir以外にディレクトリが消える原因ってあるのでしょうか。
0594nobodyさん
02/11/10 17:39ID:???> rmdir以外にディレクトリが消える原因ってあるのでしょうか。
外部プログラムとして、rm や rmdir が呼ばれるとか。
言語は何?
0595nobodyさん
02/11/10 18:37ID:???外部プログラムというとどういうことでしょう。
たとえばjcode.plを読むような形ということでしょうか。
でしたら、使っているのはjcode.plだけです。
うー〜む。
0596nobodyさん
02/11/10 18:57ID:???0597594
02/11/10 19:52ID:???> 外部プログラムというとどういうことでしょう。
たとえば、system() や open() で /bin/rm を呼び
出すという意味ですた。でも今回は関係無さそう。
スクリプト中では、本当に全箇所で "lock/lock" と書い
ています? それとも、実際には変数にセットしてる?
0598593
02/11/10 23:27ID:???仰るとおり、変数にセットしていました。そして、
だいぶ昔に作ったものだったもので、そうだと決め付けてましたが、
"lock/lock"ではなく、$lock_file="lock/".$QUERY{'name'}として、
複数ページで流用していたのでした。そして、
nameはページ毎の呼び出し時に引数で指定しています。
$QUERYを読めなければ確かにlock/が消えそうです。調査不足でお手数かけました。
で、imgタグから何からチェックしてみたところ、CGIの呼び出し時に
引数の区切りに&ではなく&が使われているところが一箇所だけあって、
え〜まさかこれか??という心境。じゃあ何で今まで動いてたんだろうか。
ってたぶん原因は別にあると思ってます。
もうちょっと自分で調べてみます。
594さん、ありがとう。
0599593
02/11/10 23:30ID:???0600nobodyさん
02/11/10 23:50ID:???$lock_file="lock/dir".$QUERY{'name'};
みたいにしておくと間違いが起こりにくくなる。
0601593
02/11/11 00:01ID:???$lock_file="lock/lock".$QUERY{'name'}
と修正してありました。ってこれじゃわかりづらいか..
0602nobodyさん
02/11/11 00:16ID:hyDx3f4aやっぱり休日ってみなさんでもむずかしいものでしょうか?
0604nobodyさん
02/11/11 00:46ID:hyDx3f4a秋分の日、秋分の日、ハッピーマンデー、ゴールデンウィーク、振替休日、うるう年
これらのパターンがむずかしいところです。
0605nobodyさん
02/11/11 00:50ID:???言語はなに?
年月日で決まってくるから、とりあえず 年、月、日 を入れると休日か否かを
返す関数をつくることになると思うが・・・
0606605
02/11/11 00:57ID:???月、日、曜日 を入れて休日か否かを返す関数と、年を入れてうるう年か否かを
返す関数の2つがあればいいのかな?
0607nobodyさん
02/11/11 07:47ID:hyDx3f4aできればPEALとPHPをおねがいしたいです。
仕組みがわかればPHPへの移植は自分でしますが
春分の日、秋分の日ってもしかして公転とか関係してません?
0608nobodyさん
02/11/11 15:53ID:???誤字を指摘したくてたまらない罠
釣られるな、俺 釣られるな、俺!!
ttp://www.gekkou.or.jp/k-1/koyomi.html
秋分の日はしばらくかわらないっぽい
0611nobodyさん
02/11/12 19:15ID:OMB1ZvzqCGIか.htaccessでUser-Agent(ブラウザ名)に「Docomo」という文字列が
含まれていないブラウザを全部はじくということまでは、わかったんですが…
そのプラグラムがわかりません。SOSOです。
0612nobodyさん
02/11/12 19:45ID:z7k0N3jXダウンロードしてきたPerlの掲示板なのですが、
一部の文字だけ化けてしまいます。
調べたら、Shift JISで書かれていると化けるとの事。
それで、Perlも出力も何もかもを、調べながらEUCに変えました。
(Perlは全然知らないので、もしかしたら間違えているのかも…。)
すると、Shift JISの頃化けていた文字は化けなくなったのですが、
別の文字が化けるようになりました。
そんなわけで、一部の文字だけが化けるという現状は変わっていません。
「EUCにあってSJISにはない漢字コードを埋め込むと良い」と聞いたので、
書き込みなどの表示画面には見えないように埋め込んでみましたが、
効果無し。
Perlについてよく知らないですし、もう自分で調べるのも限界です。
他にどのような対処法があるでしょうか。よろしくお願いします。
0613nobodyさん
02/11/12 21:40ID:???アクセスを弾きたいのはCGIなのかhtmlなのか。
CGIでやる場合CGI(例えば掲示板とか)へアクセスしか弾けないぞ。
それ以外アクセスに対して弾きたいなら.htaccess。
.htaccessなら専用スレに行け。
>>612
具体的に化ける文字は何か?
■ このスレッドは過去ログ倉庫に格納されています