トップページ⇒php
1001コメント300KB

CGIだけど、なんか質問ある? Part 9

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001ななし ◆E6qQ.htN7o 03/01/03 02:56ID:H5ub4PWW
CGIの運用に関する質問スレッドです。

※CGIは特定の言語に依存するものではありません。

※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
  ↓
【Perl】初心者コーナー Part18
http://pc.2ch.net/test/read.cgi/php/1037797479/l50

過去ログ・関連スレッドは >>2-5 あたりに
0810nobodyさん03/03/19 04:11ID:???
$message =~ s/(https?)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"$1\:$2\">$1\:$2<\/a>/g;
$message =~ s/(ttp)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:$2\">$1\:$2<\/a>/g;
すいませんこれで解決しました。
でももっとスマートな方法あれば教えて頂けませんか?
0811nobodyさん03/03/19 04:40ID:???
$message =~ s/(h?)(ttps?)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"h$2\:$3\">$2\:$3<\/a>/g;
0812nobodyさん03/03/19 07:52ID:???
いかんいかん
$message =~ s/h?(ttps?)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"h$1\:$2\">$1\:$2<\/a>/g;

ところで、なんでこんなことするわけ?
見たところ、掲示板か何かの本文の処理みたいだけど。
せっかくh抜きで書いたものを、強制的に直リンにしてしまうとは・・・
0813nobodyさん03/03/19 08:00ID:???
わざわざリンクを切っている意味を知らない厨だからだろう。
0814鳩03/03/19 10:52ID:???
Perlでwgetを使おうとしています。

#!/usr/local/bin/perl

$WGET = "/usr/bin/wget";
$URL = "http://www.yahoo.co.jp/index.html";

@lines = `$WGET -q -O - $URL` or die;

print "Content-type:text/html\n\n";
print @lines;

exit;

こんな感じで、とりあえず取得はできるんですが、User-Agentの指定はできるんでしょうか?
教えてください。お願いします。
0815nobodyさん03/03/19 11:07ID:???
>>814
-U オプション
0816nobodyさん03/03/19 21:31ID:dpgy+pXr
チャットで初期画面にログが出なくて、一度発言するとログが出るんですが、
なぜ出ないのでしょう?
どういうことが考えられるかわかりますか?
0817nobodyさん03/03/19 21:48ID:???
>>816
>どういうことが考えられるかわかりますか?

あなたの頭が相当に悪いということぐらいしかわかりません。
どこのチャット(スクリプト)の話をしてるかぐらい書きなさい。
0818nobodyさん03/03/19 22:04ID:nD9UxgHP
>>817
いや、自分で作ってるヤツなんですが、
初期画面でログが出ないのってよくある落とし穴かと思って、
よくある落とし穴の答えを出してくれるかと思っちゃいました。

初期画面でログが出なくて、フォームだけ出るのってあんまり無いことなのかな?
0819nobodyさん03/03/19 22:08ID:???
落とし穴も何も、自分で掘った穴に落ちてるだけじゃねーか

↓↓↓次の方どうぞ↓↓↓
0820nobodyさん03/03/19 22:08ID:???
>>818
初期画面でログが出ないようにお前が作ったんだろ。

お前しか知らないソースのバグが俺たちに分かるわけ無いだろうが。
0821nobodyさん03/03/19 22:09ID:???
お ま い が そ う 作 っ た か ら
-- 終了 --
次
0822nobodyさん03/03/19 22:19ID:???
よくある落とし穴じゃないってことですね。
どうもありがとうございました。
0823nobodyさん03/03/19 22:45ID:w/Iesnah
HP持ってるヤツのうち反戦者集まれ!行動しよーぜ
http://sports2.2ch.net/test/read.cgi/iraq/1048063233/l50

各板司令部へ入電
現在イラク板で反戦バナー製作の案が出ております。
これに伴い人材が不足している為苦戦中です。
余力のある方世界平和の為に救助を求みます。

計画
1、バナー画像を作る。
2、アクセス集計プログラムと設置集計プログラムを作る。
3、クリック先のページを作る。(2の設置できる場所)
0824nobodyさん03/03/20 19:49ID:7VWyNL/K
なつみかんなどのアンテナはサーバに常駐するものなのでしょうか?
また、そうなのであれば常駐しない手動更新のアンテナというものは存在するのでしょうか?
0825nobodyさん03/03/20 20:23ID:???
>>824
手動更新のアンテナって要するにLast-Modifiedチェッカ?

あるアクセスが前回のアクセスから一定時間たってる場合、Last-Modifiedを
再取得するようなスクリプトは組んでみたけど、サーバがLast-Modifiedを
返してくれなかったり、対象に日時を取得できるような文字列が無かったり
するケースだと、仕様的にNGだったなあ。
0826nobody03/03/20 23:34ID:Oa4xESM8
某サイトを運営しております。
先日、利用している掲示板のデータが紛失してしまいました。
バックアップを取っておいたので上書きしたらデータがおかしな所で区切られるようになりました。
普通は「,」で日付やタイトルや名前、本文などを区切られているのですが
途中から改行で区切られるようになってメチャクチャになってしまいました。
あたりまえですが掲示板のコメント本文には改行が多く含まれている為困っております。
データを一行ずつ改行を消すか<BR>を入れるにしても量がハンパじゃありません。
誰かCGIに詳しい方、正しく表示できる方法を教えてください。よろしくお願いします。
0827nobodyさん03/03/20 23:57ID:???
それだけで誰が答えられるって言うんだ・・・
0828nobodyさん03/03/21 00:05ID:???
本文中の改行と、レコード区切りの改行を違うものにして識別しているのは、
移植性が悪いと思うんだけど、その辺はレスキューやらKENTの脳では考えられ
なかったらしい…。っていうのがその問題の原因。あまり関係ないけど…。

で、どうやって復活させるかというと、1レコード中の項目数は同じなんだから、
これを利用すればいい。

レコードの区切りを\n、本文中の改行を\rにする

my @all = split(/,/, $all);
while (@all) {
 my @line = splice(@all, 0, 1行の項目数);
 foreach (@line) {
  s/\x0d\x0a/\r/g
  tr/\x0d\x0a/\r/;
 }
 print OUT join(',', @line) . "\n";
}
0829nobodyさん03/03/21 00:08ID:???
print OUTの前に、
$line[-1] =~ s/\x0d?\x0a?$//;
がないとゴミが発生するな。。
0830nobodyさん03/03/21 00:09ID:???
あ。。trがおかしい。
tr/\x0d\x0a/\r\r/;
083182603/03/21 00:22ID:7GAZusfY
ご親切にありがとうございます。
でも自分はperlやCGI言語が実はあまり分かりません…。
でもなんとか頑張ってみます。
0832nobodyさん03/03/21 00:38ID:???
> perlやCGI言語が実はあまり分かりません…。

じゃあ、どういう回答を期待していたのか。

0833nobodyさん03/03/21 00:41ID:???
>832
Web製作の方から誘導されてきた模様。
0834nobodyさん03/03/21 00:56ID:???
>>833
ふむ。提示された情報はあちらと同じなのかな。

>>826 は、掲示板スクリプトの入手先 or ログファイルの中身の一部(晒すべきでない
箇所はマスクして) 等の情報は、最低でも提示しないと。
0835nobodyさん03/03/21 02:19ID:???
HTMLみたく、「タグで何とかなる」と思ってんじゃない?
0836nobodyさん03/03/21 02:58ID:???
ここの画像アップBBS使ってるんですが、画像の番号をオリジナルに
するには、何処をつつけばいいのでしょうか?
www.kent-web.com/bbs/joyful.html?
0837nobodyさん03/03/21 03:13ID:???
>>836
改造スレへ
0838nobodyさん03/03/21 21:41ID:???
anHTTPdスレでレスが無かったので、こちらに来ました。

anHTTPdでCGIを起動している時、CGIでヘッダーを「text/plain」と
プレーンテキストとして出力しているのですが Htmlと解釈されていまします。
設定で直るのでしょうか?
0839nobodyさん03/03/21 21:51ID:???
>>838
IE は Content-Type を無視してデータの中身で判断する
インテリジェントなブラウザです。
0840nobodyさん03/03/21 23:01ID:???
>>838
hogehoge.cgi
なら
hogehoge.cgi/
で騙せる。> IE
0841nobodyさん03/03/21 23:10ID:???
お二方、有難うございます。
ずっと悩んでいたんですが、ブラウザの仕様・・?だったんですね。
0842T女の竹田03/03/22 00:08ID:???
>>841
hogehoge.cgi?.txt とか(笑)
0843T女の竹田03/03/22 00:13ID:???
あ、今試してみたけどダメだね。
wmaの時はこれでうまく行ったんだけど。
さすがマイクロソフト!
0844T女の竹田03/03/22 00:28ID:???
Wordもそうだけど、なぜマイクロソフトは
「HTMLっぽく見える」
「ユーザーがテキストだと激しく主張している何か」を
HTMLとして扱うことに、こうまで執念を燃やすのだろう?
マイクロソフトに何か利益が?
0845nobodyさん03/03/22 00:36ID:???
イラク攻撃と同じぐらいの何かがあるのだろうよ
0846nobodyさん03/03/22 04:28ID:???
IEだとHTML文書をそのままテキストとして見せたいという要求は認められないのか。
0847nobodyさん03/03/22 06:38ID:???
面白いのみつけた。
http://pc.2ch.net/test/read.cgi/prog/1045401372/381
さすがIE!
0848nobodyさん03/03/22 12:25ID:QDGorIu0
質問があります。
FORMで送信し、それを処理するのはCGIですよね?
他にもありますか?

実は、早稲田大学のシステムで、フォームターゲットが〜〜.htmになっているんですが、
これって機能するんでしょうか?
実際ページを表示できませんと出るんですが・・・科目登録ができない・・・
0849nobodyさん03/03/22 12:29ID:QDGorIu0
具体的ソースです。
一部伏せています。

<html>
<body onLoad="fncSubmit();">
<script type='text/javascript'>

function fncSubmit() {
// submit
document.frm1.submit();
}

</script>
<form name="frm1" action="https://www.***.******.**/******/********.htm" method="POST">
<input type="hidden" name="HID_P1" value="*******">
〜〜〜中略〜〜〜

</form>
</body>
</html>

これが原因でエラーなのでしょうか?
それとも単に込んでいるだけなのかわかりません......
0850nobodyさん03/03/22 12:29ID:???
>>848
ASPとかServletとかJavaScriptとかそもそもブラウザとか。いろいろ。
0851nobodyさん03/03/22 12:30ID:???
>>850
htm拡張子でも有り得るわけですね?
ありがとうございました
0852nobodyさん03/03/22 12:53ID:???
UNIXは拡張子に依存していない
0853nobodyさん03/03/23 05:01ID:obrjhThh
アップロード/ダウンロードCGIについて質問です。
通常、ひとつのファイルしかアップロード/ダウンロード出来ませんが
ディレクトリを指定して、その階層化のファイル、ディレクトリをまるごと
アップロード/ダウンロードする事は出来ませんか?
0854nobodyさん03/03/23 05:28ID:???
できません。
0855nobodyさん03/03/23 08:30ID:???
フォルダを圧縮すればok
0856nobodyさん03/03/23 16:27ID:GYklYBj0
アップロードcgiをperlで作っている最中です。

クライアント側を↓こう定義して、localファイルを指定してボタンを押し、
<FORM ACTION="/cgi-bin/upload.cgi" ENCTYPE="multipart/form-data" METHOD="POST">
ファイル: <INPUT TYPE="file" NAME="File" SIZE="32"><BR>
<INPUT TYPE="submit" VALUE="送信">
</FORM>

cgi側でこう受け取ると
require 'cgi-lib.pl';
&ReadParse(\%in);
print "$key=[$in{$key}]<BR>\n" foreach $key ( keys %in);

ファイルの内容は
$in{'File'}に格納されるのですが、
localファイル名を取得することができません。

htmlの定義が足りないような気がして色々調べてみましたが
よくわかりませんでした。

スレ違いなような気もしますがよろしくお願いします。

0857nobodyさん03/03/23 16:31ID:???
>>856
ファイル名なんて飛んでくるんですか?
0858nobodyさん03/03/23 17:24ID:???
ファイル名は来ませんよ。中身だけです。
0859nobodyさん03/03/23 17:38ID:???
>>856
cgi-lib.pl 使うのは悪いこっちゃないが、「やりたい事」がそこまで明確ならば、
まず標準入力からどんなデータを取得できるのかをファイルに落とす、等して
確かめてみればすぐ解ることだと思われ。
086085603/03/23 17:41ID:???
ありがとうございました。
0861nobodyさん03/03/23 19:38ID:???
>>825
亀レスですが、アンテナ自体のプロセスが常駐するものだと思っていました。
調べててcronを使えばいいことを知り、さっき設定がうまくいきました。どうもです。
0862nobodyさん03/03/23 21:52ID:???
元の名前でうpできるアップローダなかったっけ
0863nobodyさん03/03/23 23:32ID:hItEViUJ
$hoge$huga$fooのうち、
2つ以上選んだ場合にエラーが出るようにしたいんですが、
私の頭では恥ずかしながら下のが限界でした。
もうちょっとコンパクトに書くにはどうすればいいんでしょうか?

if (($hoge ne '' && $huga ne '') || ($huga ne '' && $foo ne '') || ($foo ne '' && hoge ne '') || ($hoge ne '' && $huga ne '' && $foo ne '')) {
 &error("一つだけにして!!");
}
0864nobodyさん03/03/23 23:43ID:???
>>863
選ぶと言うのがよくわからん。
それはHTMLのフォームから入力した場合をいうのか?
多分そうだろうな。
んで、言語はPerlか?
やっぱり、多分そうだろうな。

だったら、PerlではないHTMLの部分で、radioを使えばそもそも一つしか選べなくなるけど、
そういうことではないのか?
0865nobodyさん03/03/23 23:53ID:???
>>864
選ぶってのは間違いです。スマソ
テキストボックスが3つ(hoge,huga,foo)あって、
たとえば、hogeに何か書き込んであるのに
hugaにも値が入ってると、
えらーを出したいって事です。
0866nobodyさん03/03/23 23:53ID:???
あ、perlです
0867nobodyさん03/03/23 23:56ID:???
あ、因みに一つも選んでないときもエラーを出したいんですが、
今は別でやってます。
もしこれも一緒にできれば一緒にしたいんですが・・・
0868nobodyさん03/03/23 23:57ID:???
>>865


//hogeの処理
if($hoge ne "")
{
if(!($huga eq $baka eq ""))
エラー

}

//hugaの処理
if($huga ne "")
{
if(!($hoge eq $baka eq ""))
エラー

}


・・・
0869nobodyさん03/03/24 00:28ID:???
>>868
あぁ、そうやって処理をわけるか>>863か迷ったんですけど
そっちの方がいいですかね
参考になりましたサンクスです
0870nobodyさん03/03/24 01:52ID:???
>>865
die("いってよし") if ( ($hoge ne "") + ($huga ne "") + ($baka ne "") ) > 2;
ってのはどうよ?
0871nobodyさん03/03/24 01:54ID:???
>>863
$count=0;
map{$count++ if $_ ne ''; } ($hoge, $hage, $foo);
if ($count != 1) {
エラー
}
って手もあるよ。
087287003/03/24 01:57ID:???
>>865
die if (!$a + !$b + !$c) > 1;
こっちの方がよかったかも?
087387003/03/24 02:00ID:???
die unless (!$a + !$b + !$c) > 1;
ダタヨ。鬱だ。
0874nobodyさん03/03/24 02:15ID:???
>>872-873
それは、'0'のことを考えるとあまり良くないような。
それに、>1 じゃなくて、>=1と書きたかったのでは?

結局、
die unless ($a ne '') + ($b ne '') + ($c ne '') != 1;
でどう?
0875nobodyさん03/03/24 02:58ID:???
皆さんサンクスです。かなり参考になりました。
0876nobodyさん03/03/24 05:49ID:???
CGI動かしたら502ってエラーが出てきたけどこれはなんでしょう?
0877nobodyさん03/03/24 06:02ID:???
書き忘れ。調べたら、
「ゲートウェイ,もしくはプロキシとして動作させているサーバが,上流から無効なレスポンスを受け取ったことを示す」
って出てきたけど素人の俺様には意味が分かりませんでした。
0878nobodyさん03/03/24 12:29ID:???
>>863
$it = $hoge || $huga || $foo;
if ($hoge.$huga.$foo ne $it) { # 連結して比較
  &error("一つだけにして!!");
}
じゃだめか?
0879nobodyさん03/03/24 18:22ID:JKyHEx6G
質問です.

CGI で HTML のデータを標準出力するようなものを
実行したときには,その HTML が WWW ブラウザに
表示されるのでしょうか?
0880nobodyさん03/03/24 18:25ID:???
>>879
Perl スレの回答じゃダメなのか…
088187903/03/24 19:10ID:JKyHEx6G
あの,ある CGI プログラムに関して,
標準出力に HTML をちゃんとはき出してるのを確認したんですが,
WWW ブラウザからその CGI を実行すると,
何も表示されないんです.

どうしてなんでしょうか?
0882nobodyさん03/03/24 19:32ID:???
ソース晒せ
0883nobodyさん03/03/24 19:55ID:???
>>881
タグだけで、httpのヘッダがないんじゃないの?
0884nobodyさん03/03/24 20:02ID:???
>>881
telnetで確認しろ。最初の15行を晒せ
0885nobodyさん03/03/24 20:17ID:???
>>881
> 標準出力に HTML をちゃんとはき出してるのを確認したんですが,

これもあやしいな。どうやったんだか
0886nobodyさん03/03/24 20:41ID:???
CGIをダウンロードしようとするとhtmlファイルになってしまうのですが
そのままDLすることはできないんですの?
0887nobodyさん03/03/24 20:49ID:???
>>886
>CGIをダウンロードしようとすると
意味不明。まあ言わんとしてることは解るんだけど。

その CGI とやらは配布されているものなのか?
だとしたら配布元に聞くのが最速解。
0888nobodyさん03/03/24 20:57ID:???
配布元じゃないっすわ
フリーで配布されてる掲示板が上手く改造されてたんでちょっとあたしも欲しいな〜と
フォルダ覗けたんでcgiを頂きたいな〜と思ったんですの
でもhtmlに…
無知で文才もなくてすまそ。
0889nobodyさん03/03/24 21:07ID:???
***.cgiにアクセスすると、そのCGIが実行されて結果だけが送られてくる(という設定にしているサーバがほとんど
0890nobodyさん03/03/24 21:33ID:fQ3PutSJ
>>888
この方法で無断ダウンロードしようとすると、不正アクセス禁止法でタイーホされるかも(ウソデス)
本人にメールを送って頼み込むのがいい。ただし、必ずくれるとは限らないので注意。
0891403/03/24 21:37ID:muzproYQ
同じサーバのアカウントとってSCRIPT_FILENAMEから相手の
ディレクトリを予想してターゲットのファイルをopenすればうまい
具合にタイーホされる。
0892nobodyさん03/03/24 21:37ID:???
っちゅーかね、先に >>888 を言えよ。
どーしてこう質問下手な奴ばっかりなんだ?
0893nobodyさん03/03/24 21:48ID:???
【特許】今では一般的なCookieによるセッション管理に関する特許が成立していた
http://book.2ch.net/test/read.cgi/bizplus/1048507777/
0894nobodyさん03/03/24 21:48ID:???
もう一度お尋ねさせてもらいます。
502エラーが出ました。検索してみると
「ゲートウェイ,もしくはプロキシとして動作させているサーバが,上流から無効なレスポンスを受け取ったことを示す」
と、出てきましたが意味が分かりません。
このサーバーは俺に何をしろと言ってるのでしょうか?

502になる時と正常に動く事はマチマチです。
0895nobodyさん03/03/24 21:55ID:???
>>894
そのサーバは自鯖?レン鯖?
動かしてるプログラムは自作?拾い物?
サーバのログ等は見られるの?

この程度の情報も出さずに回答がもらえると思っちょるのかバカチン。
089687903/03/24 23:01ID:JKyHEx6G
ども.

>>885

確認はコマンドラインからしました.
ヘッダをつけても同じことでした.

なんででしょう?
0897nobodyさん03/03/24 23:07ID:???
>>896

>>882に対しては無視か? まともに質問ができない奴は回答されないぞ?
089887903/03/24 23:15ID:JKyHEx6G
ソースさらせというのはもっともなんですが,
質問に関係ない部分をどう廃除していいかわからなくて…
0899403/03/24 23:25ID:muzproYQ
>>898
先頭10行でいい
0900403/03/24 23:27ID:muzproYQ
コマンドラインから実行しても怪しい。
例えばREQUEST_METHODがGETの場合だけHTMLを出力するような
プログラムを書いたとしても、コマンドラインからでは何もでない。
その逆もある。
0901403/03/24 23:28ID:muzproYQ
>>899
先頭10行ってのはコマンドラインから出力した10行ね

キリ番ゲト
0902nobodyさん03/03/24 23:41ID:Q3dLkmth
★男はココを見るべし★女と金とサンプルムービー★
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
090387903/03/24 23:45ID:JKyHEx6G
ども.

それではコマンドラインで出力した結果を書きます
以下です.

Content-type: text/html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"></head>
<title>入力内容確認</title>
<body>
<h1>入力内容確認</h1>
(以下略)
0904nobodyさん03/03/24 23:50ID:???
>>903
合ってるな。
0905403/03/24 23:51ID:muzproYQ
普通だ。
それは何も条件なしで出力しているのか?
ついでに聞くがCGIは初めてです?
0906nobodyさん03/03/24 23:52ID:???
>>903
プログラム自体は合ってそうだから、
あとは>>895(と、パーミッション)に答えたら解決だな。
つっか>>895を無視ってんじゃねーよボケ。本当に質問に答えて欲しいのか?
0907403/03/24 23:53ID:muzproYQ
どうもいいが、<title>は<head></head>の中に書くのでは?
0908nobodyさん03/03/24 23:54ID:???
>>903
そのCGIってどこに置いて実行したの?
コマンドラインって、サーバに置いてtelnetかSSHで?
あまり関係ないけど、言語は何?
0909nobodyさん03/03/25 00:00ID:???
>>908
こういう時はPerlと相場が決まっている(よなぁ)

あと、>>884やれよ>>>879
それで解決だろ。
telnet ホスト 80
GET /hogehgoe.cgi HTTP/1.0

091087903/03/25 01:26ID:1VNT2YvW
ども〜

Windows98 でローカルで httpd というサーバを動かしてやってます.
CGI の言語は perl です.

で,この httpd を通して,WWW ブラウザ(IE)でみると,
何も表示しないんです.

なんででしょう?
レス数が900を超えています。1000を超えると表示できなくなるよ。