CGIだけど、なんか質問ある? part 6
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/04/23 20:28ID:Kp0cZQna<<注意:CGIは特定の言語に依存するものではありません>>
Perlのコーディングに関する質問はこちら
【Perl】初心者コーナーPart11
http://pc.2ch.net/test/read.cgi/php/1017201229/
過去ログは>>2
0514nobodyさん
02/06/08 17:37ID:???> どうして2ちゃんねるはCGIなのに拡張子.cgiじゃないんですか?
とりあえず、2chはCGIではありません。
2chで使用しているCGIスクリプトのことなら、幾つか理由が考えられます。
1.CGIスクリプトではないから
2.パフォーマンスの為に静的なHTMLを吐くCGIスクリプトだから
3.つーかCGIスクリプトと拡張子.cgiの間には何の関係も無いのでCGIスクリプトの拡張子=.cgiと考えることは本当は間違い。
2chの場合は2かな。
0517511
02/06/08 18:01ID:WOT+eMUF…よくわかんないや。勉強します。
0518代表
02/06/08 18:27ID:???0519nobodyさん
02/06/08 20:02ID:???>>514 みたいに中途半端に知ったか君の知識を鵜呑みにする >>513 とか
いるし(w
はっきり言うが、>>514 は嘘。>>515 が圧倒的に正しい。
0520nobodyさん
02/06/08 20:02ID:???Perlでソケットを使用したプログラムのスケルトン
貼り付けてくれませんか?
接続>送信>切断
おねがいできますか?
0523nobodyさん
02/06/08 20:13ID:MlccEoMeどの過去ログですか?
0524nobodyさん
02/06/08 20:18ID:???ごめん。perl スレの 12 だ
http://pc.2ch.net/test/read.cgi/php/1019917048/753
スレ読めないないからコピペするね
753 名前:nobodyさん 投稿日:02/05/20 (月) 01:01 ID:???
ソケットのことでついての質問です。
#!/usr/local/bin/perl
use IO::Socket;
use IO::Select;
@servers = ('www.zdnet.co.jp','www.asahi.com',);
print "Content-type: text/html\n\n";
foreach $server (@servers){
$socket = IO::Socket::INET->new(PeerAddr => $server,
PeerPort => 80,
Proto => 'tcp',
);
print $socket "GET /index.html\r\n";
print $socket "Host: $server:80\r\n";
$socket->flush();
print <$socket>;
}
これでページを取得出来るんですが、
ページを全部読み込んでしまいます。
これを一部のみ読み込むにはどうすればいいのでしょうか?
と、、、
print <$socket>;
これを変数にあてはめて表示するにはどうすれば、、、。
0525514
02/06/08 20:21ID:???>>511の質問を解釈するに当たって
(1)http://pc.2ch.net/test/read.cgi/php/1019561283/
(2)http://pc.2ch.net/php/index.html
の二通りが考えられるだろ。この点はいいよな?
で、俺は、(1)の拡張子は.cgiだから質問者の意図は(2)のことだと考え
>>514のように書いたが、何かおかしかったかね?
0527nobodyさん
02/06/08 21:24ID:???0528nobodyさん
02/06/08 21:28ID:MlccEoMeサンクス!
0530nobodyさん
02/06/09 02:00ID:5YEPjzCA0531nobodyさん
02/06/09 02:44ID:???0532nobodyさん
02/06/09 18:13ID:???use IO::Socket;
これやりたいのだけど
ppmでなんてコマンドうったらええの?
0534nobodyさん
02/06/09 18:32ID:???ホントにそのコマンドでええの?って感じ
なんていうか、それ!っ手感じの
文献がみあたりません。
0536nobodyさん
02/06/09 18:37ID:???prompt$ perldoc [Module, program]
でドキュメントが読める。英語だけど。
perldoc ppm
とか
perldoc IO::Socket
とか。
0538nobodyさん
02/06/09 18:51ID:???これは成功しますた。
ソケットが使えるということでよろしいですか?
#!/www/bin/perl
use IO::Socket;
print "Content-type: text/html\; charset=EUC-JP\n\n";
print "コマネチッ!";
0539nobodyさん
02/06/09 18:55ID:???えーごはわかりません
しかし、Winsock2.0と同じと考えて
よろしいですか?
メソッドも同じようなのばかりだったので
手順はかなりことなる?
0540nobodyさん
02/06/09 18:59ID:???0541nobodyさん
02/06/09 19:01ID:???/∵∴∵∴\
/∵∴∵∴∵∴\
/∵∴∴,(・)(・)∴|
|∵∵/ ○ \|
|∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄
|∵ | __|__ | < うるせー馬鹿!
\| \_/ / \_____
\____/
0542nobodyさん
02/06/09 19:46ID:???Winsock2でBerkleyスタイルの関数(bind,listen,...)を使ってたなら
perlのIO::Socketもまあ同じように使えるでしょう。
MSスタイルのWinsockAPI(WSAなんちゃら)のほうはよくわからんです。
でもほんとに英語のドキュメント一切よまずにプログラム作ってんの?
そっちのが信じられん。いやでも読まざるを得ないと思うんだが。
0543nobodyさん
02/06/09 19:57ID:???Win房はひたすら日本語訳を待ちます
しかたなくBSD系の時は英語、否、、単語を読みます
Denger、Safe、Install、Ok これで凌いでいるが何か
0545nobodyさん
02/06/09 20:41ID:???しかし、これでつながらんぞ
#!/www/bin/perl
use IO::Socket;
use IO::Select; ← これ意味わからん
@servers = ('www.zdnet.co.jp','www.asahi.com',);なんでふたつなんだ?
print "Content-type: text/html\n\n"; ← ほうそれで
foreach $server (@servers){ ← なんだ連想か?
$socket = IO::Socket::INET->new(PeerAddr => $server, ← なんだ=>って
PeerPort => 80, ← 構造体ではないな
Proto => 'tcp',
);
#######なに?これで接続できるのか?
print $socket "GET /index.html\r\n"; これはSend()か
print $socket "Host: $server:80\r\n"; なんで2回にわける
しかも、\n\nじゃないのか?
##########レシーブにあたる関数がないぞ!
$socket->flush(); ← クローズソケットか?
print <$socket>; なんだ?
0548nobodyさん
02/06/09 22:34ID:???0552548
02/06/09 23:04ID:???パーミッションのが変化しません。(FFFTP使用です)
0553nobodyさん
02/06/09 23:11ID:???http://www.google.co.jp/search?q=%74%72%69%70%6F%64%20%43%47%49%20%83%70%81%5B%83%7E%83%62%83%56%83%87%83%93%82%CC%95%CF%8D%58%82%CC%95%4B%97%76%82%CD%88%EA%90%D8%82%A0%82%E8%82%DC%82%B9%82%F1&hl=ja&lr=
二度と来るな
0554548
02/06/10 00:02ID:???0555nobodyさん
02/06/10 00:14ID:???Tripodでは、拡張子が「.cgi」、「.pl」のものを実行権限があると自動的に認識し、実行しますの で、パーミッションの変更の必要は一切ありません。
、だそうな。これが使用者が変える必要が無いことを意味するのか、
鯖の設定でうまくいかない時はあきらめろということかは分からん
0556名無しさん@お腹いっぱい。
02/06/10 11:49ID:5eebash+新規ユーザーがアカウント登録をする際に重複アカウントがないか
チェックするcgiをつくってほしいという要望なんですが、実際に
公開されているスクリプトとかこの関数を使えばいいとか、何か
情報ください。Perlに関しては全くの初心者です。
0557nobodyさん
02/06/10 12:07ID:???アカウントはWebサーバー利用者のアカウントか?
そんなものをCGIから参照できるようにするなといいたいが、
やるならノーマッチ目的だから
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
この辺読んでみるとよかろう。
0558556
02/06/10 17:50ID:OTakUXl/そうです。Webサーバーのアカウントです。
よくレンタルサーバーでやってるアカウントチェックみたいなやつです。
テキストボックスに希望アカウントを入力してボタンを押すと、
アカウントが空いているか、使用済みか を表示するという
ものをつくりたいんです。
0559nobodyさん
02/06/10 18:58ID:???0560nobody
02/06/11 01:37ID:al4egrbe0561nobodyさん
02/06/11 06:16ID:g6WS6tIa0562nobodyさん
02/06/11 06:53ID:???0563556
02/06/11 09:25ID:AI8qzrkT昨日「すぐわかるperl」という本を買ってきました。
・とりあえずアカウント一覧をつくる
・フォームをつくり変数を受け取る
・ifでマッチするなら「NG」をprint、マッチしなければ「OK」をprint
ってかんじでつくればいいんでしょうか?
561さんの「/home以下にディレクトリがあるかどうか」という場合は
なにか便利な方法があるんですか?
こっちのほうが管理が楽そうなのでやってみたいです。
また、他に何かヒントやアイデアがありましたら教えてください。
よろしくお願い致します。
0564nobodyさん
02/06/11 10:52ID:GLgx63Ns0566nobodyさん
02/06/11 12:33ID:nbFvKVaAperlで「変数内にキーワードがいくつあるか」を調べるにはどうすればいいんでしょうか?
例えば$a="2chでの2002年6月12日"ならば$aには"2"が四回登場しますよね。そういうことを調べたいのですが・・・。
0567nobodyさん
02/06/11 13:28ID:???$a = '2chでの2002年6月12日';
$b = '2';
$count = 0;
while ($a =~ /$b/g) { $count++ }
print "Content-type: text/plain\n\n";
print "「$a」 の中に $b は $count 個";
0569566
02/06/11 13:49ID:???$count = howmany($a,$b);
みたいに直接(?)調べる方法ってのは存在しないんですね…。
ありがとうございました。自分で何とかルーチン書いてみます(>>567では永遠に回る気が…)。
0571nobodyさん
02/06/11 15:03ID:bp5oCR3J$countは真(1)か偽(0)にしかならないぞ。
>>567が正解。マッチするものを全て見つけたら、ちゃんと終了してくれます。
0572webmaster
02/06/11 16:05ID:o3eoRD7n自分のHPドコから見に来てるか知りたいのです。
(正直に言えば、自分以外の人がどのくらい見ているのか知りたい)
0573nobodyさん
02/06/11 16:10ID:???定番(Perlの神様)
http://www.kent-web.com/data/report.html?
上の改造版で多機能(設置は若干難しいかも)
http://air.vis.ne.jp/at-works/access/access.html
0575nobodyさん
02/06/11 19:39ID:???検索対象の文字が決め打ちできる場合はそれな。変数なら>>567だが。
Perlのコーディングの話を続けるならこっちに移ろう。
http://pc.2ch.net/test/read.cgi/php/1022731565/l5
0576nobodyさん
02/06/12 16:07ID:Zj93qd1Pとりあえず書きます。
任意の文字列を検索するcgiスクリプトをbashで作成せよ。
対象は、http://・・・・1・・・・/htm
ここでは、アドレスをいうことはできません。
で、1のところは、1,2,3,4,・・・255まで検索します。
つまり、255個のページを調べ、任意の文字列があれば、その行を抜き出せということです。
実行結果は、例えば、linkを検索した場合。
http://・・・・1・・・・/htm
linkという文字があれば、その行を出力。
・・・・・・・・・・・
・・・・・・・・・・・
http://・・・・255・・・・/htm
linkという文字があれば、その行を出力。
と、なります。
perlとawkは使わないこと。
HTMLでフォームを作って、そこに入れた文字が検索されるようにすること。
という課題です。
とりあえず、フォームを作り、そこに入れた文字がCGIの方にいくようにしました。
method="post"でやってます。
0577nobodyさん
02/06/12 16:07ID:Zj93qd1P#!/bin/bash
arg='tr"&+" "\012" | sed-e "s/^.*=//"'
echo "Content-type:text/html"
echo ""
echo "<HTML><HEAD>"
echo "<TITLE>index.html search</TITLE>"
echo "</HEAD><BODY>"
ここにプログラムを書く
echo "</BODY></HTML>"
まだシェルスクリプトについて習ったばかりフォームから送られてきた文字をどうやって処理するかもわかりません。
というか、最初はフォームの作り方すら知りませんでした。
というわけで、だれか、おしえてください。ヒントでもいいです。
0578nobodyさん
02/06/12 16:31ID:NJerhR65月の最後の日が簡単に分かる関数がありますでしょうか?
ありましたら教えて頂きないでしょうか?
また、ない場合は、一番サーバーに負荷を掛けずに(軽い)同じ動作を
させるにはどうすればよいか教えて頂けないでしょうか?
自分なりにも考えてみました。
for ( $i = $mday ; ; $i++ ) {
( $k_sec , $k_min , $k_hour , $k_mday , $k_mon , $k_year , $k_day ) = localtime( time + $i * 24 * 3600 );
if ( $k_mon != $mon ){
last;
}
}
0579nobodyさん
02/06/12 16:36ID:???そこまで考えたなら、「次の月の1日の24時間前を調べる」という発想が出てもいいんじゃないか?
それと、Perlのコーディングの話は、専用スレで。
ttp://pc.2ch.net/test/read.cgi/php/1022731565/
0580nobodyさん
02/06/12 16:38ID:NJerhR65逝ってきます。
0581579
02/06/12 16:38ID:???ちゃんと読んでなくて変なレスになってた。
チグハグなレスですまない。
続きはPerlスレにするとして、うるう年とかをどうするかはハッキリさせて質問してくれな。
0585nobodyさん
02/06/12 19:29ID:VJt9CQqy0586577
02/06/12 19:47ID:6bAybkaS0587nobodyさん
02/06/12 19:56ID:???宿題って何のためにあるんだ?
自分で勉強する為だろ?
カンニングはいかんぞ。
0588577
02/06/12 22:09ID:6bAybkaS逝ってきます。
0589nobodyさん
02/06/12 22:41ID:???>フォームから送られてきた文字をどうやって処理するかもわかりません
その部分はもう問題に答が書いてあるじゃん。
送られてきた文字列は変数$argに入る。
ただし577のシングルクォートはバッククォートに直しとけ。
0590577
02/06/13 14:00ID:Db0ssdevどうもありがとうございました。
実はあれからがんばって、何とかやり方がつかめてきました。
変数の処理の方法はわかってきたのですが、どれに入るのかわからなかったので参考になりました。
0591nobodyさん
02/06/13 20:21ID:9mq1CqQx一度認証したメールアドレスから送られたメールのみを受信し、
未知のメールアドレスからのものは着信拒否するようなCGIは
ありますか。
「メールを受信」ってどういう意味で言ってんだ?
自分宛のメールをCGIで選別したいとでも?
0594nobodyさん
02/06/13 20:49ID:IshuAhXl0595591
02/06/13 20:57ID:9mq1CqQx>593
こういうことです。
メール送信者にIDとパスワードを入力させて、あっていたら、メール入力フォームを
表示する。その時に送信側が使用したメールアドレスを記憶しておく。
その後は、メール入力フォームを使用しなくとも、メール送信できるようにする。
ただし、入力フォームからの送信実績のないメールアドレス、つまりIDとパスワード
があってないものからの受信は拒否する。
0597nobody
02/06/13 21:26ID:ZDF6ztrUようするにどーいうことよ。
俺にはサッパリ。。
0599login:root
02/06/13 22:40ID:TI2f9Ncuどうやって看板入れ替えてるんでしょうか…
どういうcgi組んだらああいう動きするのか見当がつきません。
スイッチは何なんでしょうか…
>>598 sudo使えばいいんじゃ
フォームを使用しなくてもということは、普通のメーラからということか?
自分でメールサーバでも持ってるのか?
なんだかよくわからんのぅ。
0601nobodyさん
02/06/14 01:42ID:???俺もよくわからんのだが
奴(>>595)はwebメールサーバーの真似事をCGIで
やりたいんじゃないのか?誰か>>595を解読してくれ。
0602nobodyさん
02/06/14 07:34ID:puWMPG8Rまたどうやってそのidをcgiで参照することができるんでしょうか?
0603nobodyさん
02/06/14 08:15ID:???0606nobody
02/06/14 13:50ID:AFlyc9kuQUERY_STRINGによって動作を分けてるだけでしょ。
0607602
02/06/14 15:27ID:puWMPG8R一度ためしてみます
0608Miku
02/06/14 18:11ID:AX6Bkw1WTripodでCGIを動かしたいのですが、
本体は動いてるのですが画像がぜんぜん表示されません。
gifはcgi-bin以外のフォルダにということだったので
cig-gifというフォルダを作ってその中に入れてるのですが・・・
0609nobodyさん
02/06/14 19:05ID:???http://pc.2ch.net/test/read.cgi/perl/1019752903/
鯖特有の事は、鯖のスレで聞いた方がいいと思われ。
0610577
02/06/14 23:02ID:fQhm2Pa6>>577
>フォームから送られてきた文字をどうやって処理するかもわかりません
その部分はもう問題に答が書いてあるじゃん。
送られてきた文字列は変数$argに入る。
ただし577のシングルクォートはバッククォートに直しとけ。
とあるのですが、argに入った文字列を出力しようとしても、何もでません。
echo $arg
↑
これでは、フォームから送られてきた文字を出力できないのですか?
0611nobodyさん
02/06/14 23:34ID:???それでいいはずなんだけどね。
POSTメソッドで送信してるか?
あとテキストボックスにname属性は指定してる?
<input type="text" name="hogehoge">とか。
name属性をつけないとIEはそのデータを送信しないよ。
0612nobodyさん
02/06/14 23:35ID:???sub header {
print "<html>\n<head>\n";
print "<meta http-equiv=\"content-type\"content=\"text/html; charset=x-sjis\">\n";
print "<title>$title</title>\n";
print "$style\n";
print "</head>\n";
print "<body text=\"$color\" link=\"$color\" alink=\"$color\" vlink=\"$color\" bgcolor=\"$color2\" background=\"$bgcg\">\n";
この場合、背景画($bgcg)を中央にだけ固定して表示したい場合にはどこをどういじれば良いのでしょうか。
BGPROPERTIES="FIXED"で固定だけは出来たのですが中央に一枚だけ表示する方法がわかりません…。よろしくお願いします。
0613577
02/06/14 23:49ID:fQhm2Pa6<BODY>
<FORM action="cgiのあるページのアドレス"
method="post">
<p>文字:<INPUT type="text" name="osu"><BR>
<BR>
<INPUT type="submit" value="送信"></p>
</FORM>
</BODY>
postをgetに変えたりして、色々やってもできません。
誰かヘルプ・・・
■ このスレッドは過去ログ倉庫に格納されています