CGIだけど、なんか質問ある? Part 6
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/07/06 13:41ID:Mpxtn4bk※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
↓
Perl 初心者コーナー Part13
http://pc.2ch.net/test/read.cgi/php/1022731565/l50
過去ログ・関連スレッドは >>2
0061nobodyさん
02/07/09 23:48ID:???理解できてなかったかもしれんが、>>56-57はアイコンをテーブルで
□□□□□
□□□□□
□□□□□
□□□□□
こんな感じで2次元配列で並べたかったんだろ?
だったらforのが簡単にできる。
0062nobodyさん
02/07/09 23:52ID:???0063nobodyさん
02/07/10 00:01ID:???いやいや、だから
print "<table>";
for($i=0;$i<$HEIGHT;$i++){
print"<tr>";
for($j=0;$j<$WIDTH;$j++){
print "<td><a href=$url[$i*$WIDTH+$j]>$gazou[$i*$WIDTH+$j]</a></td>";
}
print "</tr>\n";
}
print "</table>";
こういうことがやりたいんじゃないの?
0064nobodyさん
02/07/10 00:15ID:???まぎらわしくてスマソ(´Д`;)
for (@data) と foreach (@data) はいっしょですね。
0065Hideki ◆wtRzKEV2
02/07/10 00:28ID:???スレ読んでる途中で忘れました。逝こう。
0066名無しさん@そうだ選挙にいこう
02/07/10 01:59ID:2JSstgZh「ご意見・ご感想をどうぞ」の部分の
ハンドルネームと内容の項目が表示されません。
どうしてなのか、ご存知の方ご助言ください。
http://www.narishin.com/qnaire1.htm
0068Hideki ◆wtRzKEV2
02/07/10 08:39ID:???CGIが問答無用に動かなくなるのでしょうか?
Apache 1.3.26では動くCGIなのですが。ヘルプきぼん。
0069nobodyさん
02/07/10 08:51ID:???0070nobodyさん
02/07/10 09:13ID:???0071nobodyさん
02/07/10 09:21ID:???妙な内容の括弧のせいで文章全体が崩壊していると思われ。
0072Hideki ◆wtRzKEV2
02/07/10 10:02ID:???http://127.0.0.1/?Query=%a6%c6
デタラメですが、例としてはこんな感じです。
ちなみにデコードしるじゃなくて、CGIが頭から作動しなくなるの。
アドレスにurlエンコード入るとSSIが入ったページの全SSIがエラー起こしはじめます。
困りました。
0073nobodyさん
02/07/10 10:14ID:???だれかApache 2.0.39を使ってるやつ他にいないか?
0076Hideki ◆wtRzKEV2
02/07/10 20:20ID:???え?
0077nobodyさん
02/07/11 02:25ID:???0078nobodyさん
02/07/11 02:25ID:???0079nobodyさん
02/07/11 10:47ID:???0080nobodyさん
02/07/11 13:17ID:MOxFygTECGIそのものの改造ではないのでこちらで質問いたします。
ttp://www.prism-web.com/cgi/file/bbs/designbbs/index.html
ここの掲示板CGIをいただいて使おうと思っています.
この掲示板はデザインをテキストファイルで行います。
サンプル<tp://www.prism-web.com/cgi/file/bbs/designbbs/cgi/design4/bbs.cgi
(まだ見てるだけの状態なので、私のサイトにはないです。これは配布元のサンプル)
私が変更したいのは1箇所、「この記事へ返信」をリンクではなく、
投稿ボタンのような、ボタンにしたいのです。
どう変えればよいでしょうか。
00823PIO ◆3pIoOHKo
02/07/11 14:18ID:???<FORM ACTION="./bbs.cgi" METHOD="GET">
<INPUT TYPE="hidden" NAME="mode" VALUE="res">
<INPUT TYPE="hidden" NAME="no" VALUE="スレ番号">
<INPUT TYPE="submit" VALUE="この記事へ返信">
</FORM>
こんな感じになればいいと思うけど
0083nobodyさん
02/07/11 15:43ID:???0084nobodyさん
02/07/11 17:27ID:???0085nobodyさん
02/07/11 19:39ID:???JSだとこうかな。 (mes_sheet.txt)
<script type="text/javascript">
document.write("<form><input type='button' onclick='javascript:location.href=\"$script?mode=res&no=$no\"' value='この記事に返信'></form>");
</script>
<noscript>
[<a href="$script?mode=res&no=$no">この記事に返信</a>]
</noscript>
008680
02/07/12 14:15ID:lwKUS/YE迷ったのよ・・・(w
なぜなら、その改造は掲示板のCGIを書き換えるのではなく、
CGIが読み込むデザインファイル(テキストファイル)
を書き換えるものだから・・・CGI改造とは言わないんじゃ?
とか思ったの・・・。
でも助言サンキュ。今度から改造スレに行くよ。。。
>>82
おおっ。そうか、そうすればよいのか・・・。
有難うございます(TT)
(hiddenをどうしていいのか詰まってた(w))
>>83,84
ナイス案サンキュ。
>>85
有難うございます。
>>ALL
みんな教えてくれてありがとね!
0087nobodyさん
02/07/12 15:21ID:???そう思うなら、HTMLスレに行った方がよかったと思われ。
0088nobodyさん
02/07/13 18:34ID:???現在不都合が起きて困っております。
動作内容は FTPでアップロードした exe(自己解凍書庫)ファイルを
CGI経由でダウンロードさせる物です。
---- ここから ----
$|=1;
print "Content-Type: application/octet-stream\n";
print "Content-Disposition: attachment; filename=\"$file\"\n\n";
open(FILE, "$file_path$file") || die;
binmode(FILE);
binmode(STDOUT);
print <FILE>;
close(FILE);
----- ここまで ----
exeファイル以外は上手くいったのですが、(Lzh、zip等)
exeファイルの場合は ダウンロードは出来るものの、
アップロード時とファイル容量が違っておりました。
アップロード時:32,051 バイト
ダウンロード時:37,718 バイト
ダウンロードした後実行すると、
「ヘッダーの内容が不正 解凍できません」とエラー表示されます。
print "Content-Type: application/octet-stream\n";
上記を print "Content-Type: application/x-msdownload\n"; に変更してみたのですが、
それでも上手くいきませんでした。
何か解決策があれば教えてください。
0090nobodyさん
02/07/13 22:13ID:An7VzFLrこれってどうなの?
0091nobodyさん
02/07/13 22:16ID:???http://pc.2ch.net/test/read.cgi/hp/1001744788/l50
0092nobodyさん
02/07/14 00:18ID:YPZNOz0dアップロードしたファイルと元のファイルは同じもので、
再度FTPでダウンロードした場合正常に解凍できました。
他の原因としては何が考えられるでしょうか・・?
念のためにスクリプトを下記のように変更しました。
open(FILE, "$file_path$file") || die;
my $filebody = '';
while(read(FILE,$filebody,1024)){
print $filebody;
}
close(FILE);
スクリプトに問題があるとは思えない。
ローカルのファイルサイズとFTPクライアントで見るサーバーのファイルサイズは本当に同じ?
0094nobodyさん
02/07/14 00:40ID:???再度確認しましたが同じでした。
CGI.pm を使って CGI経由でファイルのアップロードを行ったのですが、
その場合もだめでした。 exeファイルのみ壊れます。。
0096nobodyさん
02/07/14 00:54ID:CbCEC3kH余計なもの出力してるんだろ。
0097nobodyさん
02/07/14 03:34ID:???>>97
Linuxサーバならbinmodeは無関係でしょ。
0099nobodyさん
02/07/14 15:56ID:T31bpVIlhttp://dokosoko.com/hugahuga.cgi/path/to/object
だと普通に動くんですが、
http://dokosoko.com/hugahuga.cgi/path%2Fto%2Fobject
だと、cgi 側に制御がいくまえにサーバが 404 Not Found を返してきます。
これって回避出来ないでしょうかね。
というか、なんで Not Found が返ってくるんだろ。
0100nobodyさん
02/07/14 15:59ID:xUfIRkak/path%2Fto%2Fobject というファイルが見つからないといってるんだから、
おそらく見つからないのでしょう。
0101nobodyさん
02/07/14 16:10ID:???0102nobodyさん
02/07/14 16:11ID:???0103nobodyさん
02/07/14 16:41ID:T31bpVIlなんでスラッシュがエンコードされてる時だけ
普通にファイルサーチするんでしょう??
>>101
ディレクトリと見なされないっていうのは...
/(documentroot)/hugahuga.cgi って"ディレクトリ"の
"path/to/object" を探そうとするってことですか?
%2f が入っちゃうと cgi の PATH_INFO として認識しないってことなのかな。
でも普通の QUERY_STRING 渡しとかだと別になにも問題ないですしね。
そういう仕様なんでしょうか。
http://hoohoo.ncsa.uiuc.edu/cgi/interface.html
見たけどよくわからなかった。
もし、その CGI に "slash/including/file" みたいにスラッシュを中に含んだ
名前を渡したいときってどうするべき?
といってもUNIX はスラッシュを含むファイル名って作れなかったか。
0104nobodyさん
02/07/14 16:44ID:T31bpVIl>>99 じゃなく >>100 でした。
あと、単純に PATH_INFO の内容を出力するだけのプログラムで実験したんで
CGI 中でエラー吐いてるわけじゃないです。
0105nobodyさん
02/07/14 17:05ID:???path/to/object(というディレクトリ)が存在すれば、 %2f でもPATH_INFO は取得できますね。
>もし、その CGI に "slash/including/file" みたいにスラッシュを中に含んだ
>名前を渡したいときってどうするべき?
そのまま hoge.cgi/slash/including/file では?
0106nobodyさん
02/07/14 17:14ID:T31bpVIlその場合の path/to/object ってディレクトリはどこですか?
/(documentroot)/path/to/object ですか?
あと、普通の URL の / をエンコードした場合も Not found です。
そりゃそうだ。
>そのまま hoge.cgi/slash/including/file では?
あう、そうでした。区切にスラッシュ使ってた場合、
区切りじゃないスラッシュはどうやって渡せばいいのかって話でしたけど
区切りにスラッシュ使うなってことで解決ですな。
0107nobodyさん
02/07/14 17:57ID:???PATH_INFO 解ってない馬鹿共が雁首並べているスレはここですか?
0108nobodyさん
02/07/14 18:03ID:T31bpVIlすみません。わかってません。
CGI の / 以降 ? 以前のところを PATH_INFO として
CGI に渡すってのでまちがってます?
で、なんで %2F を渡すと CGI に渡さないで Not Found になるのか
わからないんです。
0109nobodyさん
02/07/14 18:04ID:???>その場合の path/to/object ってディレクトリはどこですか?
hogehogeディレクトリ以下です(下図)
hogehoge / hoge.cgi
|
+----- path
>区切りにスラッシュ使うなってことで解決ですな。
まあその場合は素直に QUERY_STRING 使うってことで。
0110nobodyさん
02/07/14 18:12ID:T31bpVIlええと、じゃあその %2f を含むパスの前の cgi プログラムの部分は無視
されるってことですか?
http://hogehoge.net/something.cgi/path%2fto%2fobject
の場合、
hogehoge / something.cgi
|
+----- path / to / object
で、
http://hogehoge.net/path/to/object と 等価????
それは違うような....??
とりあえず、 hogehoge 以下に path / to / object を配置してためしましたが
結果はおなじです。
something.cgi ってディレクトリを掘ってそこに path .. を配置しても同じでした。
サーバプログラムによるのかな。
当方 Apache/1.3.26 です。
0111nobodyさん
02/07/14 18:27ID:T31bpVIlPATH_INFO の中身は OS 上のファイル名として正しいかどうか検査されるらしく、
(PATH_TRANSLATED に渡すから。)
hoge.cgi/path%2fto%2fobject
とした場合、
/ 以降をきりはなしてから URL デコードが行なわれて
"path/to/object" というファイルが正しいかどうか検査されてしまうようでした。
で、スラッシュを含むファイル名は invalid なので Not Found になってしまうと。
0112nobodyさん
02/07/15 01:06ID:K04tugP+テストです!どうぞ閲覧してください。アドバイスなどあれば
おねがいします。
http://s55.net/~S123/
0113nobodyさん
02/07/15 09:16ID:???0114nobodyさん
02/07/15 21:34ID:???0121nobodyさん
02/07/15 21:53ID:???URLリクエスト実行と共にストップウォッチをスタートさせて、
ページが表示されましたがステータスバーに表示されると同時にストップ
、これを3回繰り返して平均値を採る。
0125nobodyさん
02/07/15 22:04ID:???time(), time()か、そのインターフェイスであるBenchmark.pmを使いなさい。
実際にはそれだけで済ますことが多いけどね(笑
0128nobodyさん
02/07/15 22:06ID:FYJg29vUHTTP::Monkeywrench とかも使えるかもしれない。
012999
02/07/16 15:55ID:2ITiCbadIIS だと %2F は問題無く渡せるんですよね。
SCRIPT_NAME まではいっちゃうってのはあるけど。
なっとくいかないなぁ…
0130コギャル&中高生
02/07/16 16:16ID:WKPR3v3mお役立ちリンク集
必ず役立ちます
コギャルとH出来るサイトはここ
ヌキヌキ部屋へ直行便
↓
http://kado7.ug.to/wowo/
0132nobodyさん
02/07/16 16:53ID:???こちらが発行したクッキーがあるかどうか調べて、あったら、htmlファイルへのアクセスを許すというcgiが欲しいのです。
htmlファイルにアクセスされたら自動的にcgiが動いて調べて通すか通さないか決める。
こういうのってありますか?
というか、htmlファイルにアクセスされたら他のcgiが動くなんて出来るんですか?
0133nobodyさん
02/07/16 17:14ID:???time(), times()か、その〜
でした。ごめん。
0135nobodyさん
02/07/16 17:23ID:???できるよ。
SSIを使用して
何もないhtmlファイルにそのCGIを読み込むSSIのタグを記入。
それでもrefは取得できるから
良ければ指定のファイルを読み込んで表示。
だめならエラーを表示。
0136nobodyさん
02/07/16 17:27ID:???Action image/html /~user/bin/ref.cgi
0137nobodyさん
02/07/16 17:27ID:???text/html
0138132
02/07/16 19:22ID:???レスどうも。
まさかそんなフリースクリプト無いですよね。
0139nobodyさん
02/07/16 20:45ID:???くれくれ君でしたか。
URL に 〜.cgi ってのが出るのがいやじゃないなら
PATH_INFO を使ってやってくれるのもあるだろうね。
cgiwrapper みたいなかんじで。
でも、対象のファイルがパブリックなとこにあったら
あんまり意味ない。
シームレスにやるんだとしたら .htaccess 使えないとちょっと。
0140nobodyさん
02/07/16 21:19ID:???エラーになってしまいます・・・。いい解決方法ないですか?
{$A = $B / $C;}
$D = sprintf("%.2f",$A);
0141nobodyさん
02/07/16 21:27ID:???↑これってなにを表してるんですか?
0142nobodyさん
02/07/16 21:27ID:???どんなエラーなのか分からないとなんともいえないな。
エラーメッセージが
Illegal division by zero
ってのなら、$Cに入っている値が0または数値として有効な値ではない、ってことで
キミの考えている値が$Cに入っていないということなんだけど。
0144140
02/07/16 22:39ID:K1PKQlrMそのとおりでした!
無事解決です。どもです。
0145nobodyさん
02/07/17 12:32ID:???のaiueoを変数として受け取りたいのですがどうすればいいでしょうか。
0146コギャル&中高生
02/07/17 12:36ID:k/AJy+eKお役立ちリンク集
必ず役立ちます
コギャルとH出来るサイトはここ
ヌキヌキ部屋へ直行便
↓
http://kado7.ug.to/wowo/
0147nobodyさん
02/07/17 12:38ID:???local(@pairs) = split(/&/,$buffer);
foreach $pair(@pairs){
local($name,$value) = split(/=/,$pair);
$FORM{$name} = $value;
}
0148nobodyさん
02/07/18 00:52ID:PSEaDSiMdbmopenを使っているPerlスクリプトを、CGIとしてApacheで動かし
たいんですが、dbmopenが動きません。.htaccessファイルの設定
がいるのでしょうか?
お分かりになる方、ご教授ください。
・dbmopenのないCGIスクリプトは問題なしです。
・別のPerlスクリプトをローカルで動かすと問題なしです。(http://www.psl.ne.jp/perl/pdojo03.htmlのスクリプト)
0149nobodyさん
02/07/18 00:57ID:PSEaDSiM不十分なので、再度。
「dbmopenを使っている別のPerlスクリプトを動かすと
問題なしです。これは非CGIスクリプトです。
(http://www.psl.ne.jp/perl/pdojo03.htmlのスクリプト)」
0151nobodyさん
02/07/18 01:18ID:PSEaDSiMですよね。(^^;
このCGIスクリプトでは、ほとんどエラーメッセージがで
ないんです。「スクリプトに use CGI qw(:standard); を付
ければ」というのを頂いたのですが、このスクリプトには
既にこれが記入されていました。
十分なエラーメッセージを出す方法がわかれば、と思うん
ですが、、
0152nobodyさん
02/07/18 02:20ID:BBLbgizeuse CGI::Carp qw( fatalsToBrowser );
を入れてみたら?
エラーをブラウザに表示してくれるよ。
0153nobodyさん
02/07/18 02:28ID:???同じ質問に同じ解答をしてそれに対し同じような返事がきてまた同(略
本気でデジャヴかとおもたよ
◆JAPH9PWA さん〜よく頑張ってますね(はぁと
0154nobodyさん
02/07/18 09:38ID:PSEaDSiMuse CGI::Carp qw( fatalsToBrowser );は既に入っていて、
そのエラーメッセージは下の1行だけです。
(dbmopen) ./diff
0155nobodyさん
02/07/18 16:42ID:???のページで下の文を参考にしたのですが、標準入力の値がうまく取れませんでした。
if ($ENV{'REQUEST_METHOD'} eq "post"){
read(STDIN, $str, $ENV{'CONTENT_LENGTH'});
}
で、$ENV{'REQUEST_METHOD'}をprintで見たらPOSTが入っていました。
で、($ENV{'REQUEST_METHOD'} eq "POST")にしたらうまくいきました。
上の例文は間違っているんでしょうか?
0156nobodyさん
02/07/18 16:45ID:???0157fusianasan
02/07/18 16:46ID:???ネタにしても、もちっとレベルの高いやつを書こうね!
0158nobodyさん
02/07/18 16:46ID:yrmBF5Vl>メソッドは当然postで。(XHTMLでは大文字は禁止)
と書いてありますが。
0159nobodyさん
02/07/18 16:46ID:???0160nobodyさん
02/07/18 16:47ID:???なんでそこでXHTMLが出てくるんだ?
■ このスレッドは過去ログ倉庫に格納されています