CGIだけど、なんか質問ある? part 6
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/04/23 20:28ID:Kp0cZQna<<注意:CGIは特定の言語に依存するものではありません>>
Perlのコーディングに関する質問はこちら
【Perl】初心者コーナーPart11
http://pc.2ch.net/test/read.cgi/php/1017201229/
過去ログは>>2
0133nobodyさん
02/05/03 23:48ID:???【Perl】初心者コーナーPart12
http://pc.2ch.net/test/read.cgi/php/1019917048/
0134129
02/05/04 00:24ID:KDDclJiBレスどうもです。
print "[$buf]";
とすると、
[]
が返されます。
REQUEST_METHOD
ではPOSTが返ってきます。
ifでPOSTの方に入っていますがreadでSTDINから読めていないのですね。
CGIの分類に入りますよね?この記事は。
0135127
02/05/04 00:36ID:???うち(UNIX)で試してみたけど、出るね。
残念ながら、Windowsの問題かも。
あきらめて sysread() を使うか <> で読むしかないかも。
perlの話になってきたので、続きがあればperlスレで。
0137nobodyさん
02/05/04 01:14ID:???それで表示されなけりゃHTTPDのバグ。
表示されれば100%コーディングミス。
tuka晒したコードが全然参考にならん。
ちゃんとコピー&ペーストしろよ。
0138nobodyさん
02/05/04 02:01ID:???ワ カ リ マ セ ー ン
0139129
02/05/04 02:17ID:KDDclJiB<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>$title</TITLE>
</HEAD>
<BODY>
<CENTER>
<FORM action="cgi-bin/test.cgi" id=FORM1 method=post name=FORM1>
<INPUT TYPE="hidden" NAME="md" VALUE="1">
<TABLE bgcolor=#b0b0b0 border=0 cellPadding=3 cellSpacing=2>
<TBODY>
<TR bgcolor=#f0f0f0>
<TD nowrap><FONT size=-1>ハンドル</FONT></TD>
<TD nowrap><INPUT id=hd name=TXT_ID size="22" maxlength="40"></TD>
</TR>
<TR bgcolor=#f0f0f0>
<TD nowrap><FONT size=-1>メッセージ</FONT></TD>
<TD nowrap><INPUT id=ms name=TXT_PASS size="62" maxlength="200"></TD>
</TR>
</TBODY>
</TABLE>
<BR>
<TABLE bgcolor=#b0b0b0 border=0 cellPadding=3 cellSpacing=2>
<TBODY>
<TR bgcolor=#f0f0f0>
<TD nowrap><INPUT id=submit1 name=submit1 type=submit value=" 投稿 "></TD>
<TD nowrap><INPUT id=reset1 name=reset1 type=reset value="リセット"></TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</CENTER>
</BODY>
</HTML>
このフォームです。
0140nobodyさん
02/05/04 02:54ID:???0141110
02/05/04 09:50ID:oeq3Bzwcログファイルの$hoge[3]にそれぞれ数字がありまして
その数の合計を求めるにはどうすれば宜しいのでしょうか?
ログファイルは\tで区切ってあります。
答えろや!!
0142(゚Д゚)ハァ?
02/05/04 10:27ID:???0143nobodyさん
02/05/04 10:32ID:???それとも141は外国人なのか。
どちらにしても頭が悪い人は施設に収容した方がいいと思う。
地球の人口も増え続けていることだし、詩んでください141。
0144nobodyさん
02/05/04 10:47ID:???0145nobodyさん
02/05/04 13:28ID:???ここで答えてるじゃん・・・
http://pc.2ch.net/test/read.cgi/php/1019561283/319
0146145
02/05/04 13:28ID:???間違った。こっち。
http://pc.2ch.net/test/read.cgi/php/1019917048/319
0149139
02/05/04 15:49ID:HBkDorCduse CGI;
my $cgi = new CGI;
これのせいでSTDINからPOSTの場合取得できなかったのです。
自前フォームデータ取得と共存できないということなのでしょうか?
0150nobodyさん
02/05/04 15:50ID:???a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
こんな感じで保存されているクッキーがあって、
$COOKIE{a}と書くと
aaaaのみ表示されて、
aaaa
aaa
aa
と表示されません。
どうすればいいのでしょうか?
0151nobodyさん
02/05/04 16:41ID:???0153nobodyさん
02/05/04 17:08ID:???sub a1{$a = "a";}
sub a2{$a = "aa";}
sub a3{$a = "aaa";}
sub a4{$a = "aaaa";}
この書き方から
a
aa
aaa
aaaa
と書く方法があったら教えてくれ。
tu-ka,コーディングに関することは↓こっちで。
ttp://pc.2ch.net/test/read.cgi/php/1019917048/
0154nobodyさん
02/05/04 18:10ID:BiCGNSgGContent-Disposition: attachment; filename="XXXXX"
Content-Type: Application/octet-stream
をヘッダに設定しています。
NN4,NN6ではうまくいきますが、
IE5,IE6のSSLモードではうまくいきません。
(ダウンロードダイアログでサーバに接続できないエラーになります)
どうすればよいですか?
0156nobodyさん
02/05/04 18:34ID:BiCGNSgGうまくいきます。
0159154
02/05/04 18:50ID:BiCGNSgG方はいらっしゃいますか?
0160あぼーん
NGNG0163nobodyさん
02/05/05 08:35ID:UV8B0Y8+THE ROOMさんのアイコンチャットを使っておるのです。
このチャットURLをオートリンクをしてくれるのはいいのですが、フレーム内に取り込んでしまいます。
なんとかtarget=_blank属性をつけたいのですが、無知なりにいろいろ試してみても直らず。
情けない話ですがソースのどの部分を提示してよいやらわかりませんので、
とりあえず配布ページを晒します。
http://dream.lib.net/room/cgi/e_ichat.html
配布元で質問しようにもこれは改造の話になるかと思いまして、
どうかご教示くださいませ。
0164nobodyさん
02/05/05 08:51ID:???ichat.cgiの792行目を
$msg =~ s/(http:\/\/[a-zA-Z0-9\.\/\-+#_?~&%=^\@:;]+)/<a href="$1" target="_blank">$1<\/a>/g;
にすればいいと思う。
けど、スレ違いなんで気をつけてな。
スクリプト改造工房 Part4
http://pc.2ch.net/test/read.cgi/php/1012839651/
0165nobodyさん
02/05/05 10:32ID:???ディレクトリの構成ってどういう意味なの?
なんかよくわかんないんだけど。
例を書いて詳しくキボンヌ
質問あんだけどさ。
わかんないんだけどってどういう意味なの?
なんかよくわかんないんだけど。
例を書いて詳しくキボンヌ
0167dosv
02/05/05 11:49ID:12OG6xB2もし宜しければ教えてください。
<HDML version=3.0 markable=true>
<ENTRY name=name key=name>
<ACTION type=accept task=go dest=#text>
名前入力
</ENTRY>
<ENTRY name=text key=text>
<ACTION type=accept task=go dest="xxxx.cgi" method=post postdata="name=$name&text=$text">
内容入力
</ENTRY>
</HDML>
このように名前と内容を入力して xxx.cgi に送った時、どのように受け取ればいいのでしょうか?。
どのようにって・・・。
$nameと$textを受け取ればいいだけでしょ。
0169dosv
02/05/05 12:09ID:12OG6xB2HTMLの普通のフォームからなら cgi-lib.pl を使って
if ($ENV{'REQUEST_METHOD'} eq "POST"){
&ReadParse();
$name = $in{'name'};
$text = $in{'text'}
で変数に代入できるのですが、Ezweb(HDML)でのやり方がよくわからないのです(T_T)
0172nobodyさん
02/05/05 13:37ID:???とりあえず、
print "Content-type: text/plain\n\n";
print $_ while(<>);
の結果キボン。
0173nobodyさん
02/05/05 14:27ID:TrmCPbRtファイルあぷできない場合はどうしたらいいのかなぁ・・・
0175dosv
02/05/05 14:49ID:12OG6xB2それはどのような処理なのでしょうか?。
CGI初心者なので教えて頂けないでしょうか?。申し訳ございません。
0178nobodyさん
02/05/05 16:50ID:???0179nobodyさん
02/05/05 16:52ID:???0182nobodyさん
02/05/05 20:39ID:???(・∀・)イイ!人だっ (惚
0183nobodyさん
02/05/06 11:12ID:???かちゅ〜しゃ動作test
0184nobodyさん
02/05/07 21:54ID:Y09RJpX9画像表示タグでCGIプログラムを呼び出すやつって、
どんなふうにつくれば(*゚∀゚*) イイんですか?
0185nobodyさん
02/05/07 23:15ID:???ヘッダーが画像になるように出力して。
画像データを、そのまま出力すればよいのです。
print 'Content-type: image/jpeg',"\n\n";
open IN,"<適当なjpeg のファイル";
binmode IN; # DOS バイナリストリームに配慮
binmode STDOUT; # DOS バイナリストリームに配慮
@data =<IN>;
print @data;
0186nobodyさん
02/05/08 12:53ID:7MwNUEiIssiを使わずにcgiでhtml内にランダムで単語を埋め込みたいんです。
で、例えばアメリカの歴代大統領の名前をランダムで表示させるとすると、
まず、大統領の名前だけを改行で縦に羅列しただけのテキストファイルpresident.txtを作って、こんな感じにしました。
-------president.cgiのないよう---------
$president='president.txt';
open(DATAIN,"$president");
@president= <DATAIN>;
close(DATAIN);
$random = int(rand(@president));
$president=$president[$random];
chomp($president);
print "Content-type: text/html\n\n";
print "<!--\n";
print "document.write(\"$president\")\;\n";
print "//-->\n";
--------------------------------------
html側にはこれをはさみます。
<script language=JavaScript src=president.cgi>
</script>
ようはcgiを外部javascript的に使う方法だと思うのですが、
うまくいくにはいったのですが、いくらリロードしてもランダムで名前が変わってくれません。
最初に読み込んだ時と同じ名前のまま。
cgi側のURLをアドレスバーに打ち込むとちゃんとランダムで変わってるので、
ブラウザが一度president.cgiを呼びに行くと、2度目からは横着しとるようです。
<script language=JavaScript>
<!--
i=Math.random();
document.write(i);
// -->
</script>
<script language=JavaScript src=president.cgi?a=i>
</script>
html側だけ苦し紛れに上みたいな感じにしてみましたが、同じでした。
何かいい方法ないでしょうか?おねがいします。
0187186
02/05/08 14:05ID:7MwNUEiI上の最後の方の
document.write(i);
は関係ないです。無視してください。
あと、長文でごめんなさい
0188nobodyさん
02/05/08 14:53ID:???Pragma: no-cache
Cache-Control: no-cache
とかあったほうがいいのか?
でもcgiって普通キャッシュしないのか?
hogehoge.cgi?xxxxxxxxxxx <- ランダムな文字列をjavascriptで書き出す
とかもありかな?
0189186 でけた!
02/05/08 15:49ID:7MwNUEiI> hogehoge.cgi?xxxxxxxxxxx <- ランダムな文字列をjavascriptで書き出す
ではできませんでしたが
print "CacheControl: no-cache\n";
print "Pragma: no-cache\n";
print "Expires: -1\n\n";
を加えることで出来ました!!
ありがとうございます!
0190nobodyさん
02/05/10 01:28ID:kiNPE2Bo結局のトコ、内部処理自体は専用ヘッダ+バイナリを
吐き出すだけという認識でいいれすか?
スレ違いだったらスマソ
0191nobodyさん
02/05/11 02:39ID:r65u0NIV1つのプログラムファイルにたくさんのサブルーチンを作ると、処理速度は遅くなりますか?
サブルーチンと言っても、2〜300行のものが2つです。
カウンターで、ログ表示部分とセッティング部分を別のファイルに分散するか
1つのファイルにまとめてしまうかを迷っています。
0192nobodyさん
02/05/11 03:17ID:um9GfuZV0193nobodyさん
02/05/11 03:28ID:???プログラムを組む人間だったら、1つのファイルにまとめたほうが
きれいだし、配布する際にも説明がしやすい。ので1つがいいと感じるはず。
処理スピードは300行程度じゃ人間には感じられないくらいの差だよ。
ただでさえ汚いソースになるPerlなんだから。。ねぇ?
0194nobodyさん
02/05/11 03:45ID:2K/qf1ca0195nobodyさん
02/05/11 03:58ID:???話題とずれるがもうちょっと処理ごとに短くした方がいいと思うが
0196nobodyさん
02/05/11 04:41ID:???データー部分とCGI本体を別鯖にしてる場合、データー側の鯖への負荷ってどの位なのでしょうか?
0197nobodyさん
02/05/11 11:21ID:r65u0NIVそうですか。
まとめた方がよさそうですね。
配布cgiなのですが、設置する手間は少ない方がよいですね。
>>195
カウンターのセッティング処理・ログ表示処理とかなので、分ける必然性も
ないと思って、まとめてサブルーチンにしました。
0198nobodyさん
02/05/11 15:55ID:ao+wsWev┣cgi-bin━bbs.cgi
┃
┗www━index.htm
こういうディレクトリのとき、bbs.cgiからindex.htmを
ローカルで指すパスの書き方ってありますか?
http://から書いても、フルパスでも駄目でした。
http://www.midnightroam.org/
の
mini BBS++ ver2.79
使ってます。
../www/index.html
0200198
02/05/11 16:05ID:ao+wsWevくだらねえ質問に即レスどうもありがとうございます。
0201198
02/05/11 16:25ID:ao+wsWevindex.htmの中にbbs.cgiを取り込んだような形になるcgiです。
(htmlファイルに<--bbs-->と書けば、そこに掲示板が表示される)
http://〜/cgi-bin/bbs.cgi
でテスト読み込みをしてみるとエラー等なくindex.htmを読んでくれて、
bbsのcgiが表示されますが、
http://〜/index.htm
にアクセスすると何も表示されません。
くだらない質問で、スレ違いかもしれませんがどうかよろしくお願いします。
0202nobodyさん
02/05/11 16:36ID:???こんなんできるの?
掲示板(bbs.cgi)に投稿したら HTMLファイルの <--bbs--> 部分に記事が
挿入される形のスクリプトかと思うが、、、
こういう場合はどこのスクリプトなのかまずはっきりさせていただきたい。
0203198
02/05/11 16:38ID:ao+wsWevどこの・・・というと?
スクリプトの行でしょうか?
つかってるcgiの事でしたら
http://www.midnightroam.org/
の
mini BBS++ ver2.79
です。
0205198
02/05/11 16:43ID:ao+wsWevです、すみません
あたりまえです。何も表示されるわけはありません。
根本的に動作を勘違いしています。
index.htmlがbbs.cgiを読み込むのではなく、bbs.cgiにアクセスすると
index.htmlをテンプレートとしてその中にbbs.cgiの吐き出す部分を
埋め込んで表示される仕組みです。
0207nobodyさん
02/05/11 16:56ID:???そのスクリプトDLしてきました。あなたは大きな誤解をしていると思います。
このスクリプトは index.htm をブラウザに表示させたら <!---BBS---> の部分に
掲示板が表示されるのではなく、minibbs2_279.cgiをブラウザに表示させたら
index.htmの<!---BBS--->部分に掲示板が表示されるものだと思います。
ttp://www.midnightroam.org/ にアクセスしたら掲示板がでているではないかと
言われるかもしれませんが、.htaccessでいじれば ttp://www.midnightroam.org/
と入力したときに index.htmlではなくindex.cgi にアクセスさせることができます。
つまり、アクセスはあくまでbbs.cgiであり、前後に他の何かを
表示させたいのならテンプレートhtmlを好きに編集すればいいという
だけです。
0209198
02/05/11 16:57ID:???ほんとくだらねえ質問にお付き合いくださってどうもありがとうございました。
0210nobodyさん
02/05/11 16:57ID:???そのサイトは DefaultIndex を .htaccess か何かで弄っているんでしょ。
index.html無いし。
0211nobodyさん
02/05/11 16:58ID:???0213あぼーん
NGNG0214nobodyさん
02/05/11 17:27ID:WnQgyRupパーミッションの設定の仕方がわかりません。
ファイルは大学から某有料サーバーへ転送しているのですが、
大学はunixなのでコマンドラインのftpしか使えません。
有料サーバーはTelnet禁止です。
状況説明不足でしたら補足します。
0215nobodyさん
02/05/11 18:02ID:???cgi本体は755、jcode.plは644
0216nobodyさん
02/05/11 18:06ID:WnQgyRupすみません、何を質問してるのかもっと詳しく書くべきでした(汗
215さんの言っている事はわかります、
その変更をどうやって行ったらいいのかわからないんです…
telnet禁止なのでchmodは使えないし、
あらかじめ設定してから転送しても元に戻っているし…
ftpでログインしたのならchmod使えばいいだけでしょ。
コマンドはmanで調べればいい。
以降、UNIX板ででも聞いてください。
0219nobodyさん
02/05/11 18:26ID:WnQgyRupFTPのマニュアルは読みましたが
パーミッションを設定するという類のコマンドは
見つかりませんでした。
0220nobodyさん
02/05/11 18:28ID:WnQgyRupInvalid commandでした…
UNIX板逝ってきます…。
0221nobodyさん
02/05/11 19:33ID:???>>214
どんな ftp クライアント使っているか解らないけど…
一応、大抵の ftp クライアントで使える方法教える
>site help
これで、chmod 使えるかどうかは解る
>site chmod <permit> <filename>
んで、これで <filename> で指定したファイルが <permit> で
指定されたパーミッションになる
0222nobodyさん
02/05/11 19:45ID:???データベースをCGIで作りたいと考えていますが、
なにを勉強すればいいのかさっぱりです。
どこか初心者向け勉強サイトがあれば教えていただけませんか。
本はダメです。お金がないから。
0223nobodyさん
02/05/11 20:24ID:1yiBbWMEどげんしたらよいでしょうか?
0224nobodyさん
02/05/11 20:28ID:???このサイト結構使えるYO!
http://google.com
0225nobodyさん
02/05/11 23:40ID:JXrRw2rRほかのサバはできるけど、Triだけなぜか設定しても、設定が反映されないという意味
0226nobodyさん
02/05/12 00:05ID:???Tripod CGI パーミッション 設定 できない
http://www.google.com/search?num=100&hl=ja&as_qdr=all&q=Tripod+CGI+%83p%81%5B%83%7E%83b%83V%83%87%83%93+%90%DD%92%E8+%82%C5%82%AB%82%C8%82%A2&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0227nobodyさん
02/05/12 14:30ID:???画像を用意しなければならないのでしょうか?
0228nobodyさん
02/05/12 14:36ID:???画像を変えることで、累計と今日/昨日違いをわかりやすくしてんじゃないの?
いやなr設定のとこ書き換えて累計用と今日/昨日用の画像同じの使うようにすればいいじゃん。
0229nobodyさん
02/05/12 15:30ID:u+TnkKJYCGIの神。
0230227
02/05/12 16:15ID:???あーなるほど、つまり仕様の問題上そうするしか仕方ないとかそんなんじゃなく、
単に累計用カウンタと今日/昨日用の画像に違う画像を使いたいって時のためか。。
あと今KENTさんのコード見ながらカウンタを作ってみたんですが
ちょっとロック処理の部分で分からないところがあります。。
ロック処理サブルーチンの一部分↓↓↓↓
if (-e $lockfld)
{
# 現在時刻を取得し$nowに代入
my($now) = time;
# $lockfldの最終変更時間
my($val) = (stat($lockfld))[9];
# 30秒以上経過していれば削除
if ($now - $val > 30) { &lockend; }
}
exit
↑↑↑↑ここまで
下に続く
0231227
02/05/12 16:16ID:???--------------------
ログ読み込みからログ更新までの間、同じ階層にフォルダを作って
フォルダがある場合は他のユーザーを弾くようにして、
上の処理ではもしロック処理が終了したにも関わらずフォルダが削除されなかった
場合に、そのフォルダの最終変更日を取得し、現在時刻と比較し30秒以上経過して
いたらフォルダを削除するようにしてあるんです。
で、なにがダメかというと、上の処理のコードの書き方を簡略化しようと思い、
以下のようにしましたが、なぜか下のコードだと動きません。なぜか分かるでしょうか?
ここから↓
if (-e $lockfld) || exit;
# 現在時刻を取得し$nowに代入
my($now) = time;
# $lockfldの最終変更時間
my($val) = (stat($lockfld))[9];
# 30秒以上経過していれば削除
if ($now - $val > 30) { &lockend; }
■ このスレッドは過去ログ倉庫に格納されています