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

CGIだけど、なんか質問ある? part 6

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/04/23 20:28ID:Kp0cZQna
CGIスクリプトの運用に関する質問スレです。

<<注意:CGIは特定の言語に依存するものではありません>>

Perlのコーディングに関する質問はこちら
【Perl】初心者コーナーPart11
http://pc.2ch.net/test/read.cgi/php/1017201229/


過去ログは>>2
049749602/06/07 16:47ID:???
とおもったらむしろ漢字だけでした。
open NAME_, "$namelog";
$name_ = <NAME_>;
close (NAME_);
if ($name_ =~ /,$name/) {
print $error2;
exit(0);
}
$nameがformから送られてくるもので$namelogが探す一覧です。
漢字以外はマッチしません
0498nobodyさん02/06/07 17:58ID:???
名前探すだけならindex使えば?
0499nobodyさん02/06/07 21:02ID:???
>>493-495
ありがとうございます。
submitにこだわらなくてもいい、ってことなんでしょうか。

もうちょっと調べてみます。
0500nobodyさん02/06/07 21:07ID:???
>>496
JPERL使うとか。
EUCなら、
$EUC_JP_ = '[\x00-\x7F]|[\xA1-\xFE][\xA1-\xFE]|\x8E[\xA1-\xFE]|\x8F[\xA1-\xFE][\xA1-\xFE]';
$str =~ /^(?:$EUC_JP_)*,\Q$name\E/;

>>498
indexも日本語はうまくいきませんな。確か。
050150002/06/07 21:16ID:???
あれ?
よく考えたら、`,'があるなら、
$str =~ /,\Q$name\E/;
で十分?
0502nobodyさん02/06/07 21:45ID:???
ちょい質問

http://www.mistlarouge.com/game/efm/
↑みたいなサイトがあるんだけど、これって、昔はやったFFAじゃない?
検証きぼんぬ


ちなみに、FFA本家は
http://mati.wnj11.jp/index2.htm
FFA(改)本家は
http://www.gun-online.com/
0503あぼーんNGNG
あぼーん
0504nobodyさん02/06/08 00:38ID:IssrbWFC
配列のなかでパターンにマッチした要素の要素番号を知ることってできますか?
0505nobodyさん02/06/08 01:05ID:???
>>504
プログラミング言語はなんすか?
0506nobodyさん02/06/08 01:05ID:lYR6rg87
perlです。
0507nobodyさん02/06/08 01:20ID:???
>>504
できます。
0508nobodyさん02/06/08 01:21ID:lYR6rg87
どうすればよいですか?
どう書けばよいですか?
0509nobodyさん02/06/08 01:33ID:???
>>504
配列要素に重複がない場合
@hash{@array} = (0..$#array);
@matched = map { $hash{$_} } grep { /PATTERN/ } @array;
print "@matched\n";
こんな感じ?
0510nobodyさん02/06/08 01:35ID:lYR6rg87
ありがとうございます。
やってみます。
0511nobodyさん02/06/08 17:08ID:WOT+eMUF
どうして2ちゃんねるはCGIなのに拡張子.cgiじゃないんですか?
教えてください。
0512nobodyさん02/06/08 17:36ID:???
>511
.htaccessとかを勉強するとわかるようになる。
ここで教えるには板違いだから、自分でがんばろう。
0513nobodyさん02/06/08 17:36ID:???
>>511
2chのCGIは拡張子.cgiだけんど?
コレとか→ <form method=POST action="../../../bbs.cgi">
コレとか→ http://pc.2ch.net/test/read.cgi/php/1019561283/510
0514nobodyさん02/06/08 17:37ID:???
>>511
> どうして2ちゃんねるはCGIなのに拡張子.cgiじゃないんですか?
とりあえず、2chはCGIではありません。
2chで使用しているCGIスクリプトのことなら、幾つか理由が考えられます。

1.CGIスクリプトではないから
2.パフォーマンスの為に静的なHTMLを吐くCGIスクリプトだから
3.つーかCGIスクリプトと拡張子.cgiの間には何の関係も無いのでCGIスクリプトの拡張子=.cgiと考えることは本当は間違い。

2chの場合は2かな。
0515nobodyさん02/06/08 17:43ID:???
>>514( ´,_ゝ`)プッ

PATH_INFO も知らないの?(藁
051651302/06/08 17:45ID:???
>>514
あ、なるほど。511の言ってる意味がわかった。
おれも514の2に賛成デス。
051751102/06/08 18:01ID:WOT+eMUF
ありがとうございました。

…よくわかんないや。勉強します。




0518代表02/06/08 18:27ID:???
アホばっかりですいません
0519nobodyさん02/06/08 20:02ID:???
>>518禿同。

>>514 みたいに中途半端に知ったか君の知識を鵜呑みにする >>513 とか
いるし(w

はっきり言うが、>>514 は嘘。>>515 が圧倒的に正しい。
0520nobodyさん02/06/08 20:02ID:???
すみませんが

Perlでソケットを使用したプログラムのスケルトン
貼り付けてくれませんか?

接続>送信>切断 

おねがいできますか?
0521nobodyさん02/06/08 20:03ID:???
>>520過去ログ漁れ。本スレのどっかに載っているぞ
0522nobodyさん02/06/08 20:06ID:???
>>521
サンクス
0523nobodyさん02/06/08 20:13ID:MlccEoMe
Grepでさがしたが、存在しなかった
どの過去ログですか?
0524nobodyさん02/06/08 20:18ID:???
>>523
ごめん。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>;
これを変数にあてはめて表示するにはどうすれば、、、。
052551402/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のように書いたが、何かおかしかったかね?
0526nobodyさん02/06/08 20:31ID:???
>>514
サンクス!
0527nobodyさん02/06/08 21:24ID:???
(・∀・)******デシタ
0528nobodyさん02/06/08 21:28ID:MlccEoMe
>>524
サンクス!


0529nobodyさん02/06/09 00:03ID:???
>>526
サンクス!
0530nobodyさん02/06/09 02:00ID:5YEPjzCA
サンクス!
0531nobodyさん02/06/09 02:44ID:???
サントス!
0532nobodyさん02/06/09 18:13ID:???
perlで
use IO::Socket;
これやりたいのだけど
ppmでなんてコマンドうったらええの?
0533nobodyさん02/06/09 18:25ID:???
>>532
試してみてから聞いてる?
0534nobodyさん02/06/09 18:32ID:???
文献は探したよ、でも
ホントにそのコマンドでええの?って感じ

なんていうか、それ!っ手感じの
文献がみあたりません。
0535nobodyさん02/06/09 18:35ID:???
>>833
いや、実際に
use IO::Socket;
ってやってみて問題が起きたかどうか聞いてるんだけど。
0536nobodyさん02/06/09 18:37ID:???
ちなみに文献なら
prompt$ perldoc [Module, program]
でドキュメントが読める。英語だけど。
perldoc ppm
とか
perldoc IO::Socket
とか。
0537nobodyさん02/06/09 18:38ID:???
>>535
まだだよ
なにかモジュールいれるのが当然かと思っていたから
では、やってみます。
0538nobodyさん02/06/09 18:51ID:???
>>535
これは成功しますた。
ソケットが使えるということでよろしいですか?

#!/www/bin/perl
use IO::Socket;
print "Content-type: text/html\; charset=EUC-JP\n\n";
print "コマネチッ!";
0539nobodyさん02/06/09 18:55ID:???
>>536
えーごはわかりません
しかし、Winsock2.0と同じと考えて
よろしいですか?

メソッドも同じようなのばかりだったので
手順はかなりことなる?
0540nobodyさん02/06/09 18:59ID:???
英語を読めない人はプログラムをする資格がありません。
0541nobodyさん02/06/09 19:01ID:???
     ____
    /∵∴∵∴\
   /∵∴∵∴∵∴\
  /∵∴∴,(・)(・)∴|
  |∵∵/   ○ \|
  |∵ /  三 | 三 |  / ̄ ̄ ̄ ̄ ̄
  |∵ |   __|__  | < うるせー馬鹿!
   \|   \_/ /  \_____
     \____/
0542nobodyさん02/06/09 19:46ID:???
>>539
Winsock2でBerkleyスタイルの関数(bind,listen,...)を使ってたなら
perlのIO::Socketもまあ同じように使えるでしょう。
MSスタイルのWinsockAPI(WSAなんちゃら)のほうはよくわからんです。

でもほんとに英語のドキュメント一切よまずにプログラム作ってんの?
そっちのが信じられん。いやでも読まざるを得ないと思うんだが。
0543nobodyさん02/06/09 19:57ID:???
>>542
Win房はひたすら日本語訳を待ちます

しかたなくBSD系の時は英語、否、、単語を読みます

Denger、Safe、Install、Ok これで凌いでいるが何か
0544nobodyさん02/06/09 20:11ID:???
確かperlのsockって、もともともwinsockを移植したんじゃなかったけ?
>>543
hogeを忘れていないか?w
0545nobodyさん02/06/09 20:41ID:???
Denger、Safe、Install、Ok、hage これ最強

しかし、これでつながらんぞ
#!/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>; なんだ?
0546nobodyさん02/06/09 21:27ID:???
>>545
モジュールどころか構文すら理解していないとは恐れ入った。
0547nobodyさん02/06/09 22:15ID:???
>>545
掲示板に頼るな。検索エンジンに頼れ。
どうせここで答えても何かあったらまたすぐ聞きにくるんだろう?
0548nobodyさん02/06/09 22:34ID:???
tripodはパーミッション変更できないのですか?
0549nobodyさん02/06/09 22:39ID:???
>>545
ワラッタ

>>548
デキルヨ!
0550nobodyさん02/06/09 22:40ID:???
>>546-547
スマソ

うんじゃ少し調べてみる
あした就職試験あるんで寝る

また、手取り足取りおしえてね
0551nobodyさん02/06/09 22:48ID:???
>>550
二度と来るな
055254802/06/09 23:04ID:???
ftpから変更しようとしているのですが、
パーミッションのが変化しません。(FFFTP使用です)
0553nobodyさん02/06/09 23:11ID:???
>>552
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=
二度と来るな
055454802/06/10 00:02ID:???
すいません
0555nobodyさん02/06/10 00:14ID:???
>>552
Tripodでは、拡張子が「.cgi」、「.pl」のものを実行権限があると自動的に認識し、実行しますの で、パーミッションの変更の必要は一切ありません。
、だそうな。これが使用者が変える必要が無いことを意味するのか、
鯖の設定でうまくいかない時はあきらめろということかは分からん
0556名無しさん@お腹いっぱい。02/06/10 11:49ID:5eebash+
今度、Webサーバー(Linux)を管理する事になりました。

新規ユーザーがアカウント登録をする際に重複アカウントがないか
チェックするcgiをつくってほしいという要望なんですが、実際に
公開されているスクリプトとかこの関数を使えばいいとか、何か
情報ください。Perlに関しては全くの初心者です。
0557nobodyさん02/06/10 12:07ID:???
>>556
アカウントはWebサーバー利用者のアカウントか?
そんなものをCGIから参照できるようにするなといいたいが、
やるならノーマッチ目的だから
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
この辺読んでみるとよかろう。
055855602/06/10 17:50ID:OTakUXl/
>>557
そうです。Webサーバーのアカウントです。
よくレンタルサーバーでやってるアカウントチェックみたいなやつです。

テキストボックスに希望アカウントを入力してボタンを押すと、
アカウントが空いているか、使用済みか を表示するという
ものをつくりたいんです。
0559nobodyさん02/06/10 18:58ID:???
アカウント一覧ファイルを定期的にuniq
0560nobody02/06/11 01:37ID:al4egrbe
簡単に出来そうな予感
0561nobodyさん02/06/11 06:16ID:g6WS6tIa
/home以下にディレクトリがあるかどうかでいいような予感
0562nobodyさん02/06/11 06:53ID:???
別にDBを用意してどうにか汁。
056355602/06/11 09:25ID:AI8qzrkT
アドバイスありがとうございます。
昨日「すぐわかるperl」という本を買ってきました。

・とりあえずアカウント一覧をつくる
・フォームをつくり変数を受け取る
・ifでマッチするなら「NG」をprint、マッチしなければ「OK」をprint

ってかんじでつくればいいんでしょうか?

561さんの「/home以下にディレクトリがあるかどうか」という場合は
なにか便利な方法があるんですか?
こっちのほうが管理が楽そうなのでやってみたいです。

また、他に何かヒントやアイデアがありましたら教えてください。
よろしくお願い致します。
0564nobodyさん02/06/11 10:52ID:GLgx63Ns
GETリクエストの最大文字数って決まってるんですか?
0565nobodyさん02/06/11 11:05ID:???
>>564
URL
0566nobodyさん02/06/11 12:33ID:nbFvKVaA
すみません、一応過去ログ検索したつもりなのですが
perlで「変数内にキーワードがいくつあるか」を調べるにはどうすればいいんでしょうか?
例えば$a="2chでの2002年6月12日"ならば$aには"2"が四回登場しますよね。そういうことを調べたいのですが・・・。
0567nobodyさん02/06/11 13:28ID:???
>>566

$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 個";
0568nobodyさん02/06/11 13:29ID:???
>>567
永遠に回らない?
056956602/06/11 13:49ID:???
例えば
$count = howmany($a,$b);
みたいに直接(?)調べる方法ってのは存在しないんですね…。
ありがとうございました。自分で何とかルーチン書いてみます(>>567では永遠に回る気が…)。
0570 02/06/11 14:22ID:???
$a = '2chでの2002年6月12日';
$b = '2';
$count = 0;
$count = $a =~ /$b/g;
0571nobodyさん02/06/11 15:03ID:bp5oCR3J
>>570
$countは真(1)か偽(0)にしかならないぞ。
>>567が正解。マッチするものを全て見つけたら、ちゃんと終了してくれます。
0572webmaster02/06/11 16:05ID:o3eoRD7n
フリーのアクセスログ集計ソフトって、定番のものありますか?
自分のHPドコから見に来てるか知りたいのです。
(正直に言えば、自分以外の人がどのくらい見ているのか知りたい)
0573nobodyさん02/06/11 16:10ID:???
>>572
定番(Perlの神様)
http://www.kent-web.com/data/report.html?

上の改造版で多機能(設置は若干難しいかも)
http://air.vis.ne.jp/at-works/access/access.html
0574nobodyさん02/06/11 19:24ID:???
>>566
$count = $a =~ tr/2/2/;
0575nobodyさん02/06/11 19:39ID:???
>>574
検索対象の文字が決め打ちできる場合はそれな。変数なら>>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
perlについて質問です。

月の最後の日が簡単に分かる関数がありますでしょうか?
ありましたら教えて頂きないでしょうか?
また、ない場合は、一番サーバーに負荷を掛けずに(軽い)同じ動作を
させるにはどうすればよいか教えて頂けないでしょうか?

自分なりにも考えてみました。
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:???
>578
そこまで考えたなら、「次の月の1日の24時間前を調べる」という発想が出てもいいんじゃないか?

それと、Perlのコーディングの話は、専用スレで。
ttp://pc.2ch.net/test/read.cgi/php/1022731565/
0580nobodyさん02/06/12 16:38ID:NJerhR65
>>579
逝ってきます。
058157902/06/12 16:38ID:???
>578
ちゃんと読んでなくて変なレスになってた。
チグハグなレスですまない。

続きはPerlスレにするとして、うるう年とかをどうするかはハッキリさせて質問してくれな。
0582nobodyさん02/06/12 17:05ID:???
>>578マルチやめよう
0583nobodyさん02/06/12 17:20ID:???
>>582
すみません。
>>579 に専用スレを教えて頂いたので、そちらにも書き込ませて頂きました。
0584 02/06/12 17:46ID:???
(´-`).。oO(宿題なんかを・・・)
0585nobodyさん02/06/12 19:29ID:VJt9CQqy
なぜ.tsvよりも.csvが多いんですか。
058657702/06/12 19:47ID:6bAybkaS
誰も教えてくれないようなので、スレを作って聞いてみます。
0587nobodyさん02/06/12 19:56ID:???
>586
宿題って何のためにあるんだ?
自分で勉強する為だろ?
カンニングはいかんぞ。
058857702/06/12 22:09ID:6bAybkaS
宿題ができないので、もう死ぬしかありません。
逝ってきます。
0589nobodyさん02/06/12 22:41ID:???
>>577
>フォームから送られてきた文字をどうやって処理するかもわかりません
その部分はもう問題に答が書いてあるじゃん。
送られてきた文字列は変数$argに入る。
ただし577のシングルクォートはバッククォートに直しとけ。
059057702/06/13 14:00ID:Db0ssdev
>>589

どうもありがとうございました。
実はあれからがんばって、何とかやり方がつかめてきました。
変数の処理の方法はわかってきたのですが、どれに入るのかわからなかったので参考になりました。
0591nobodyさん02/06/13 20:21ID:9mq1CqQx
CGI初心者です。ここに質問していいのかわかりませんが・・・。
一度認証したメールアドレスから送られたメールのみを受信し、
未知のメールアドレスからのものは着信拒否するようなCGIは
ありますか。
0592nobodyさん02/06/13 20:26ID:???
>>591
ではお聞きしますが、どうやって一度目の認証をするのでしょうか?
0593 02/06/13 20:27ID:???
>>591
「メールを受信」ってどういう意味で言ってんだ?
自分宛のメールをCGIで選別したいとでも?
0594nobodyさん02/06/13 20:49ID:IshuAhXl
自宅PCサ−バ内でsendmail実験できますか?
059559102/06/13 20:57ID:9mq1CqQx
>592
>593
こういうことです。
メール送信者にIDとパスワードを入力させて、あっていたら、メール入力フォームを
表示する。その時に送信側が使用したメールアドレスを記憶しておく。
その後は、メール入力フォームを使用しなくとも、メール送信できるようにする。
ただし、入力フォームからの送信実績のないメールアドレス、つまりIDとパスワード
があってないものからの受信は拒否する。

0596nobodyさん02/06/13 21:02ID:???
>>594
やればぁ?
■ このスレッドは過去ログ倉庫に格納されています