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
0002nobodyさん
02/07/06 13:41ID:Mpxtn4bkPart3 http://pc.2ch.net/test/read.cgi/php/988727833/
Part4 http://pc.2ch.net/php/kako/1000/10008/1000804655.html
Part5 http://pc.2ch.net/php/kako/1009/10093/1009331505.html
Part5.01 http://pc.2ch.net/php/kako/1015/10151/1015127347.html
Part6 http://pc.2ch.net/test/read.cgi/php/1019561283/
■CGI以外のPerlに関する質問スレッド
Perl 初心者コーナー Part13
http://pc.2ch.net/test/read.cgi/php/1022731565/l50
CGIに依存しないPerlの話題一般
http://pc.2ch.net/test/read.cgi/php/991313362/l50
■関連スレ
【Perl,CGI】参考書籍
http://pc.2ch.net/test/read.cgi/php/988809842/l50
スクリプト改造工房 4
http://pc.2ch.net/test/read.cgi/php/1012839651/l50
こんなCGI探してますスレッド Ver6
http://pc.2ch.net/test/read.cgi/php/1021897804/l50
.htaccessの偉い人 Part3
http://pc.2ch.net/test/read.cgi/php/1019888234/l50
【スレッド】2ch型掲示板 その5【フロート型】
http://pc.2ch.net/test/read.cgi/php/1019414023/l50
0003nobodyさん
02/07/06 14:02ID:???いえ、特に何も。
0004nobodyさん
02/07/06 19:55ID:???0005nobodyさん
02/07/06 23:29ID:FjAmHIGZ$mailto = '****@**.**';
$mail = '****@**.**';
$mail2 = '****@**.**';
$mail3 = '****@**.**';
:
:
if (open(MAIL,"| $sendmail $mailto $mail $mail2 $mail3")) ・・・
これをfor文とかを使って短くしたいんですがどうしたら良いんでしょうか?
0007nobodyさん
02/07/07 00:20ID:???その送信先のアドレスは予め決まってるの?
なら、
$MailTo = array('hoge@example.tld', ……);
for($i = 0; $i < count($MailTo); $i++) {
// 送信処理
}
00087
02/07/07 00:21ID:???逝って来る。
0009nobodyさん
02/07/07 00:23ID:???って言うか。>>1 も読んでいない >>5 に答える義務は無いぞ
> ※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
> ↓
> Perl 初心者コーナー Part13
> http://pc.2ch.net/test/read.cgi/php/1022731565/l50
0010nobodyさん
02/07/07 00:24ID:tmXocpbP受け渡しをするプログラムを作っているんですが、他のURLへジャンプ
させるときに、
<A HREF="http://スクリプトパス/CGIスクリプト名?ジャンプ先URL">ジャンプ
</A>
としたいんですが、ジャンプ先URLをフルパスで出せるようにするには
どうしたらいいですか?以下がつくった内容です。
my($encoding) = @_;
my($method) = $ENV{'REQUEST_METHOD'};
if ($method eq 'GET') { $query = $ENV{'QUERY_STRING'}; }
elsif ($method eq 'POST') { read(STDIN, $query,
$ENV{'CONTENT_LENGTH'}); }
local(@query) = split(/&/, $query);
foreach (@query) {
tr/+/ /;
($key, $val) = split(/=/);
$key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c", hex($1))/ge;
$val =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c", hex($1))/ge;
$val =~ s/\r\n/\n/g;
$in{$key} = $val;
}
my $req = new HTTP::Request POST => $val;
$req->content_type('application/x-www-form-urlencoded');
$req->content('match=www&errors=0');
my $res = $ua->request($req);
if ($res->is_success) {
$myd = $res->content;
$myd =~ s/(\<A HREF=\")/$1test.cgi?/g;
print $myd;
} else {print "No!";}
今の状態ですと、 $myd =~ s/(\<A HREF=\")/$1test.cgi?/g;
をやると、 <A HREF=test.cgi?test/index.html> というような感じになって
<A HREF=test.cgi?http://www.***.co.jp/test/index.html>
というような形になりません。
超初心者なもので、どこをどう直したらいいか、詳しく教えて
いただけると助かります。 すいません、よろしくお願いします。
0011nobodyさん
02/07/07 00:25ID:U7LSUADECGIとして使うんですけどあっち逝った方が良いですか?
0012nobodyさん
02/07/07 00:28ID:???【お願いします】
等のキーワードを見ると嫌悪感感じるのは俺だけ?
0013nobodyさん
02/07/07 00:29ID:???0014nobodyさん
02/07/07 00:29ID:???【perl の for 文】についての質問がどこをどうしたら【CGI(Common Gateway Interface)】と
結びつくのか説明してくれ
0015yunyun42
02/07/07 00:29ID:WcNQAy1GWeb製作で質問するかここで質問するか迷いましたが、とりあえずこっちで聞いてみようと思います。
両方で聞いてみようかな?
私も自分のHP運営しているのですが、最近他人の名前を勝手に使って投稿する荒らし魔が続出して困っています。
そこで、掲示板に投稿者の名前が重複したり他人に勝手に使われないような手を施したいのですが、なにかお手軽な方法をご存じないでしょうか?
よろしくお願いいたします。
0016nobodyさん
02/07/07 00:32ID:???0017nobodyさん
02/07/07 00:32ID:???いくつか問題があるね
・PATH_INFO 非対応の鯖もある
・カレントスクリプトのディレクトリが PATH_INFO になるので、
スクリプト側から動的 html を生成する時、アンカータグとか
生成する場合のカレントディレクトリが PATH_INFO のディレ
クトリになってしまう
0020yunyun42
02/07/07 01:06ID:WcNQAy1Gやっぱりスレ違い?
これどこのスレで聞けばいいのかな。
いろいろ探してるんだけどこれぞーってのがまだ見つからないッス。
>>16
どこかの検索エンジンでトリップ+cookie+passをやれば見つかるということですか?
0023nobodyさん
02/07/07 01:36ID:NSgNCWjbCGIを実行させずに、ソースをダウンロードすることは出来るものでしょうか?
ご存知の方はお教えくださいませ
0024nobodyさん
02/07/07 01:43ID:???0025nobodyさん
02/07/07 02:19ID:???0026yunyun42
02/07/07 02:53ID:WcNQAy1G残念ながら知らない者です。
申し訳ないです
0027nobodyさん
02/07/07 02:59ID:???perlとか知らないで、その掲示板をどうしようとしてたの?
一応書いておくと、perlならcryptって言う関数で暗号化が出来るから
トリップは入力した名前をこの関数を通せば実現できるよ。
0028nobodyさん
02/07/07 09:02ID:oBR+k60E最初に自分が画像を投稿することで、今までの書き込みログが閲覧できるという
掲示板ってどこかにない?
いろんなとこ探したんだけど、そういうのって無いんだよね
0029nobodyさん
02/07/07 10:04ID:LtK4GFfeahhan255eをLinuxで使っているのですが、
Kondara/MNU Linux 2.1にインストールしたら軽快に動作しますが
TurboLinux Server 7 や Redhat Linux 7.3 にインストールすると
書き込みボタンを押してからリロードされるまで数分かかってしまいます。
Redhat 7.3 で Kondara みたく動作させるには何をどう設定すればよいのでしょうか。
ウチではTurboや赤帽でもちゃんとサクサク動いてる。
CGIの問題じゃないだろう。
003129
02/07/07 20:18ID:LtK4GFfeCGIの問題とは考えてないです。
apache の設定に何かまずいところがあるのではないかと。
うなぎスクリプトとかは体感的に変わらないのですが、アッhan!だけ遅くなってしまいます。
Turboや赤帽でサクサク動かすにはどう設定すればよいですか。
0033nobodyさん
02/07/08 00:25ID:R1ZQ7wuX今まで他のサーバーでは普通に動いていたCGIを、新しいサーバーに設置したところ
500のサーバーエラーを起こして動きません。
何度もローカルでテストして、実際に数カ所のサーバーではちゃんと動いているのですが・・・。
どなたか原因のおわかりになる方がいらっしゃったら、どうかご教示ください。
よろしくお願いいたします。
0034nobodyさん
02/07/08 00:28ID:???003633
02/07/08 00:36ID:R1ZQ7wuXありがとうございます。
特に特別なことはしていないと思うのですけども。
いままでいくつも同じところでサーバー(有料)をレンタルしており、今回もそこに
借りたのですが、今回に限ってまったく動かないのです。
スクリプトを見なおしたりしているのですがまったく見当がつきません。
003733
02/07/08 00:39ID:R1ZQ7wuXパーミッションもPerlのパスも確認して設定をしており、flockもはずしてあるのですが
動きません。
003933
02/07/08 01:20ID:R1ZQ7wuX最初のログインをするスクリプトは、ファイルを参照するためにオープンして
入力されたものと一致したら、予定表なり掲示板に飛ぶというものです。
0040nobodyさん
02/07/08 01:27ID:???これの実行結果を出力させて見てみろ。
004133
02/07/08 01:37ID:R1ZQ7wuXスクリプトのなかに書くのですか?
0042nobodyさん
02/07/08 01:41ID:???#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print for `perl_path/perl -wc ./script.cgi`;
004333
02/07/08 01:56ID:???実行してみたのですが、これもサーバーエラーで帰ってきてしまいます。
0044nobodyさん
02/07/08 01:57ID:???004533
02/07/08 02:00ID:???上手く動いているとの返事を頂き、見て見ましたら確かに動いています。
何が違うのか調べてみます。
0046nobodyさん
02/07/08 02:06ID:???ここのPerl Checker(文法チェッカ)ってやつ使ってみれ
http://www.kent-web.com/utility/index.html
004733
02/07/08 02:20ID:???本当にご親切にありがとうございました。
0048質問
02/07/08 12:44ID:nj01HSO5アクセス制御をCGIで行い、ID、パスワードが一致するとリンク先のHTMに飛ぶ
と言うのがよくありますが、これでリンクさきをCGIとすることは可能なのでしょうか?
アクセス制御(CGI)→ID、パスワード入力→掲示板のCGIって形なのですが・・・
CGI→CGIって言うのはどうなのでしょうか?
教えてください。よろしくお願いします。
0050nobodyさん
02/07/08 13:05ID:???0051質問
02/07/08 13:54ID:nj01HSO5はい。やってみたのですが、飛んだ先がCGIのテキストで出てくるんですよ。
掲示板では無くて、CGIのプログラムが・・・・・
755とかアクセス権はきちんと確認しているのですが・・・・
0052画像ライブラリ
02/07/08 14:46ID:E33z3r6c作り、それを検索して表示できるようなCGIがあったら、
教えてくれませんか?
そういうアクセス制御ではなく、目的のCGIソースの先頭に
追加するタイプのほうがいいだろう。
0056nobodyさん
02/07/09 02:21ID:???@gazou には画像のキャラクター名が、
@url には画像ファイルのURLが格納されてます。
@gazou[1]の画像ファイルは@url[1]となるよう揃えています。
print "<tr>\n";
foreach (@$gazou) {
print "<td>$_</td>\n";
}
print "</tr>\n";
}
print "<tr>\n";
foreach (@$gazou) {
print "<td><img src=\"$url\"></td>\n";
}
print "</tr></table>\n";
}
とやってみたのですが、テーブルが一列になってしまい、
非常に見栄えが悪いです。
恥ずかしながら、
foreach $1,$2 (@$gazou,@$url)
とやれば、それぞれに上手く入ってくれるかと思ったんですが駄目でした。
これを改善するにはどうしたらよろしいのでしょうか?
どうかよろしくおねがいします。
005756
02/07/09 02:23ID:???今使っている正しいソースはこちらです。
print "<tr>\n";
foreach (@$gazou) {
print "<td>$_</td>\n";
}
print "</tr>\n";
}
print "<tr>\n";
foreach (@$url) {
print "<td><img src=\"$_\"></td>\n";
}
print "</tr></table>\n";
}
0058nobodyさん
02/07/09 04:34ID:???どう考えても、CGI(Common Gateway Interface)とは関係なくて、
単なる「Perl のコーディング」に関する質問なんだけど?
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:???■ このスレッドは過去ログ倉庫に格納されています