CGIだけど、なんか質問ある? Part 8
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/09/22 23:15ID:???※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
↓
Perl 初心者コーナー Part16
http://pc.2ch.net/test/read.cgi/php/1032070299/l50
過去ログ・関連スレッドは >>2
0557551
02/11/07 19:11ID:wiJfESIxレスありがとうございます。
このroboチャットに入ってる自動応答の人工知能スクリプトを、一画面で使いたいんです。
0558551
02/11/07 19:12ID:???あ、ありがとうございます。
そちらへ移った方が良さそうですね。
すみません、>>551の質問は無視して下さい>all
失礼しました。
0559nobodyさん
02/11/07 21:31ID:???ログの各項目をタブで区切ってるんですが
訪問者が名前とかメールとか発言とかでタブ使うと表示項目がズレちゃうとゆー欠点が有るのです
それを消そうと、タブをスペース4つに置換とか、""に置換とかしたいのですが、できません
$name=~ s/\t/ /g;
$name=~ s/[TAB(のつもり)]/ /g;
とかはやってみたのですが…
すみません、何卒御教授ください
0560nobodyさん
02/11/07 21:44ID:???tr使うとか・・・フォームから受け取るときにタブ全部消すとか・・・あ、消すのは聞いてないか。
0562nobodyさん
02/11/08 02:28ID:???あ,分かった。ログ自体が
>名[TAB]前[TAB]メール[TAB]ほげほげ
ってなってるんですね?
ログに保存する前に置換するべきだと思うんですが。
0563559
02/11/08 08:07ID:???trって正規表現を使わない置換演算子でしたっけ…
とりあえず利用者の 入力してきたタブを消せればよい方向です
>>561
ぇゃ、なんかそれじゃできませんでした(゚∀゚)アヒャ
なぜだろう…
>>562
そう、そういう意味でつ 伝達能力低くてすみません
今現在はそのように入力されるとメール欄に前が、コメント欄にメー(略
とりあえずガッコから帰ってきたら御教授いただいた方法とか試してみます
他のとこでも不具合がポコポコと・゚・(ノД`)・゚・
0564nobodyさん
02/11/08 08:19ID:???s/\t//g;
0565559
02/11/08 15:29ID:???むしろなぜ昨日できてなかったのか…
すみません、馬鹿丸出しですので吊ってきます
御親切にしていただいて嬉しかったっす どうも有り難うございました
>>564
URLエンコードってなんですか(;´Д`)
ぐらいの初心者ぶりを発揮しています
おいおいがんがって勉強していくつもりで…
(´-`).。oO( バグの原因は変なとこで変数を宣言していたことでした )
(´-`).。oO( ソースの書き方がめちゃめちゃダメぽな匂いがプンプンです )
0566nobodyさん
02/11/09 00:43ID:???今までずっと1つのファイルでまとめてたんですけど、覚えきれなくなってきたんで。
0567nobodyさん
02/11/09 12:41ID:???半角英数字以外と数字以外の規制はどうやればいいですか?
0568nobodyさん
02/11/09 13:31ID:XnEMYEgkハッピーマンデー対応にするととてもむずかしいです。
そもそもハッピーマンデーの仕組みがわからないな・・・
よろしくおねがいします。
0570nobodyさん
02/11/09 16:46ID:???初心者です・・・それもかなりの・・・。
ぇぇと、CGIですよね・・・
CGIでなんていうか・・・、掲示板とかゲームとか作っていきますよね・・・。
それで、掲示板にしろゲームにしろつくるときにはまず最初に何からやればいいのでしょうか?
なんか他のとこでまずperlでやるんだったらなんかダウンロードするとか言われたんですけど、よくわかりません。
何をダウンロードしてどこでどのようにつくっていけばいいのでしょうか?
perlとかはどこに打てばいいんでしょうか?
なんかおかしいこと行ってるかもしれませんね・・・私・・・。
すいませんがどなたか教えてくれませんでしょうか?
0571nobodyさん
02/11/09 16:59ID:XnEMYEgkhello world!!
0572nobodyさん
02/11/09 17:04ID:???それをどうやればいいのかなってこと・・・。
ちょっと私の質問はやヴぁかったみたい・・・w
0573nobodyさん
02/11/09 17:06ID:XnEMYEgkprint"Content-type: text/html";
print"hello World!!";
0575nobodyさん
02/11/09 17:30ID:0mUtXyM1FTPから読み込めない設定にしてしまいました。
これを復旧させる方法はあるのでしょうか?
垢はinfoseekです。容量はだいぶ超えてるので(ちなみに3G弱(ワラ
管理者に直してもらう選択肢は無いと思われ。
0576nobodyさん
02/11/09 17:47ID:MmuLdSXo0577nobodyさん
02/11/09 18:21ID:???ttp://pc.2ch.net/test/read.cgi/php/1034583844/749n
0578最近始めた者
02/11/09 19:44ID:???って何でしょうか。
マジレス希望です。
0580nobodyさん
02/11/09 20:17ID:4Q7VYiKo0581nobodyさん
02/11/09 20:18ID:???kent-webのaska.cgiにひみこーどをつけようと思うんですが
ほかの場所はうまくいったんですがここだけわからないんですよ
書き込み処理部分に
{ # 対フェイザーオンの場合は実際に発行されたコードかどうか照合
if ($FORM{'facheck2'} eq '') { &error('チェックコードエラー',"投稿コードが入力されてません(^^;;");
}
$dukecheck = $FORM{'facheck2'} . $FORM{'facheck3'};
if ( !open(DB,"$himicode_log") ) { &error('0'); }
@lines = <DB>;
close(DB);
$himikocheck=0;
foreach $line (@lines) {
chop($line);
if ($dukecheck eq $line) {
$himikocheck=1;
}
}
if ($himikocheck != 1) {
&error('x');
}
}
っていれたら、いくらひみこーどがあってても
チェックコードエラーってでてしまうんですよ
誰か教えてくれないでしょうか?
0585nobodyさん
02/11/10 00:51ID:???0586nobodyさん
02/11/10 02:48ID:???この2chのアドレスみたいに
cgiのあとに?とかはさまずに続く文字列は
どのようにしたら使えるんでしょうか?
この場合/php/1032704121/っていう情報を
どうやれば使えるのか知りたいです
0587nobodyさん
02/11/10 02:51ID:???どの部分がおかしいのかは突きとめたんですが、なぜそうなるのかがわかりません。
# 出力テスト
print ($lines[378] eq $eachdate_string[0]); print "$lines[378] eq $eachdate_string[0]<br>\n";
print ($lines[379] eq $eachdate_string[1]); print "$lines[379] eq $eachdate_string[1]<br>\n";
で、結果は自鯖では
1[02/11/10] eq [02/11/10]
1[02/11/11] eq [02/11/11]
こうなって正常なんですが、プロバイダのだと「1」の部分だけが出ません。
つまり条件式が偽になってしまうみたいなんです。
どうして?TT
0589587
02/11/10 04:41ID:???プロバイダの鯖のほうだと、chomp @lines; が無効にされてたみたいです。
なぜかはわかりませんが・・
結局、
$lines[$i] =~ s/\r\n//g;
$lines[$i] =~ s/\r//g;
$lines[$i] =~ s/\n//g;
で改行文字取り除いたらうまくいきました。
0590nobodyさん
02/11/10 11:08ID:8jnCcvHXマニュアル読みなさい。配列にchompはできないぞ。
0591nobodyさん
02/11/10 11:22ID:???/(1\d\d|2[0-5][0-5]|\d{1,2}).(1\d\d|2[0-5][0-5]|\d{1,2}).(1\d\d|2[0-5][0-5]\d{1,2}).(1\d\d|2[0-5][0-5]|\d{1,2})/)
これだと192.168.000.001OKですけど
192.168.0.1はだめなんです。
いい方法ありませんか?
0592591
02/11/10 11:54ID:ZM8p4h+c/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/
にすることにしました。
0593nobodyさん
02/11/10 17:19ID:???カウンタとアクセス解析のCGIを作り、実際に使ってます。
同時アクセス問題の関係で、予め用意したlockというディレクトリに
lock/lockという風にディレクトリをつくっているのですが、
ごくたまに親のほうのlockディレクトリが消えてしまいます。
コードをくまなく見てもrmdirはすべて"lock/lock"と指定してあります。
rmdir以外にディレクトリが消える原因ってあるのでしょうか。
0594nobodyさん
02/11/10 17:39ID:???> rmdir以外にディレクトリが消える原因ってあるのでしょうか。
外部プログラムとして、rm や rmdir が呼ばれるとか。
言語は何?
0595nobodyさん
02/11/10 18:37ID:???外部プログラムというとどういうことでしょう。
たとえばjcode.plを読むような形ということでしょうか。
でしたら、使っているのはjcode.plだけです。
うー〜む。
0596nobodyさん
02/11/10 18:57ID:???0597594
02/11/10 19:52ID:???> 外部プログラムというとどういうことでしょう。
たとえば、system() や open() で /bin/rm を呼び
出すという意味ですた。でも今回は関係無さそう。
スクリプト中では、本当に全箇所で "lock/lock" と書い
ています? それとも、実際には変数にセットしてる?
0598593
02/11/10 23:27ID:???仰るとおり、変数にセットしていました。そして、
だいぶ昔に作ったものだったもので、そうだと決め付けてましたが、
"lock/lock"ではなく、$lock_file="lock/".$QUERY{'name'}として、
複数ページで流用していたのでした。そして、
nameはページ毎の呼び出し時に引数で指定しています。
$QUERYを読めなければ確かにlock/が消えそうです。調査不足でお手数かけました。
で、imgタグから何からチェックしてみたところ、CGIの呼び出し時に
引数の区切りに&ではなく&が使われているところが一箇所だけあって、
え〜まさかこれか??という心境。じゃあ何で今まで動いてたんだろうか。
ってたぶん原因は別にあると思ってます。
もうちょっと自分で調べてみます。
594さん、ありがとう。
0599593
02/11/10 23:30ID:???0600nobodyさん
02/11/10 23:50ID:???$lock_file="lock/dir".$QUERY{'name'};
みたいにしておくと間違いが起こりにくくなる。
0601593
02/11/11 00:01ID:???$lock_file="lock/lock".$QUERY{'name'}
と修正してありました。ってこれじゃわかりづらいか..
0602nobodyさん
02/11/11 00:16ID:hyDx3f4aやっぱり休日ってみなさんでもむずかしいものでしょうか?
0604nobodyさん
02/11/11 00:46ID:hyDx3f4a秋分の日、秋分の日、ハッピーマンデー、ゴールデンウィーク、振替休日、うるう年
これらのパターンがむずかしいところです。
0605nobodyさん
02/11/11 00:50ID:???言語はなに?
年月日で決まってくるから、とりあえず 年、月、日 を入れると休日か否かを
返す関数をつくることになると思うが・・・
0606605
02/11/11 00:57ID:???月、日、曜日 を入れて休日か否かを返す関数と、年を入れてうるう年か否かを
返す関数の2つがあればいいのかな?
0607nobodyさん
02/11/11 07:47ID:hyDx3f4aできればPEALとPHPをおねがいしたいです。
仕組みがわかればPHPへの移植は自分でしますが
春分の日、秋分の日ってもしかして公転とか関係してません?
0608nobodyさん
02/11/11 15:53ID:???誤字を指摘したくてたまらない罠
釣られるな、俺 釣られるな、俺!!
ttp://www.gekkou.or.jp/k-1/koyomi.html
秋分の日はしばらくかわらないっぽい
0611nobodyさん
02/11/12 19:15ID:OMB1ZvzqCGIか.htaccessでUser-Agent(ブラウザ名)に「Docomo」という文字列が
含まれていないブラウザを全部はじくということまでは、わかったんですが…
そのプラグラムがわかりません。SOSOです。
0612nobodyさん
02/11/12 19:45ID:z7k0N3jXダウンロードしてきたPerlの掲示板なのですが、
一部の文字だけ化けてしまいます。
調べたら、Shift JISで書かれていると化けるとの事。
それで、Perlも出力も何もかもを、調べながらEUCに変えました。
(Perlは全然知らないので、もしかしたら間違えているのかも…。)
すると、Shift JISの頃化けていた文字は化けなくなったのですが、
別の文字が化けるようになりました。
そんなわけで、一部の文字だけが化けるという現状は変わっていません。
「EUCにあってSJISにはない漢字コードを埋め込むと良い」と聞いたので、
書き込みなどの表示画面には見えないように埋め込んでみましたが、
効果無し。
Perlについてよく知らないですし、もう自分で調べるのも限界です。
他にどのような対処法があるでしょうか。よろしくお願いします。
0613nobodyさん
02/11/12 21:40ID:???アクセスを弾きたいのはCGIなのかhtmlなのか。
CGIでやる場合CGI(例えば掲示板とか)へアクセスしか弾けないぞ。
それ以外アクセスに対して弾きたいなら.htaccess。
.htaccessなら専用スレに行け。
>>612
具体的に化ける文字は何か?
0614611
02/11/12 21:53ID:oePzQus9了解しますた
0615nobodyさん
02/11/12 22:06ID:t9NWb2RE0616612
02/11/12 23:58ID:z7k0N3jX今のところ確認しているのは、
「☆ミ」→「×」
「締め」→「鶴」
この二つです。
「こんにちは☆ミ」が「こんにちは×」という具合に化けます。
>>615
jcodeも、本を調べて直したつもりなのですが…。
Perlに触ったのは初めてですし、自信はないです。
0617612
02/11/13 00:15ID:35l0ru2/すみません、つけたしです。
変更した所ですけど、
&jcode::convert(\$text,"sjis");
となっていたのを、
&jcode::convert(\$text,"euc");
としました。
0619名無しさん@お腹いっぱい。
02/11/13 15:55ID:V86NhgWWどうか教えてください。
KENTなどの掲示板を設置したいのですが、どうしてもわからないので
代行業者に頼もうと思います。
その場合の予算や安い業者を知らないでしょうか?
あくまで趣味のサイトなので予算はあまりありません。
よろしくお願いします。
0620nobodyさん
02/11/13 19:05ID:???0621nobodyさん
02/11/13 21:08ID:???http://pc.2ch.net/test/read.cgi/php/1019888234/
0623nobodyさん
02/11/13 21:55ID:oshe/OYxCGIは?
0624hmk
02/11/13 22:38ID:???0625nobodyさん
02/11/13 23:11ID:S++Q0FXrCGIの動作で、DOS-プロンプトにコマンドを入力して送信するというものは作れますか?
コマンドというよりは、数字の"1"とかなのですが。
0626nobodyさん
02/11/13 23:16ID:xKhrwQgy( $a . $b , $c ) = split ( /./ , $ch );
上のようにするとエラーが出てしまいます。
0628nobodyさん
02/11/13 23:33ID:xKhrwQgyどうもです。
0629nobodyさん
02/11/13 23:40ID:gb4VbZ0m$subject = "テストtestあああ"; #JISに変換済み
print MAIL &mimeencode("Subject: $subject\n");
# メールで受け取ると「テスト test あああ」となる。
0630nobodyさん
02/11/13 23:41ID:S++Q0FXrご親切に有難うございます。CGIの動作でtelnetに繋ぐことが出来るのは知っているのですが、
繋がった後も、CGIを通じてデータを送信したいのです。データといっても数値を送るだけですが。
説明が下手で申し訳ありません(涙
0633612
02/11/14 01:15ID:UXGX4r4oBBSのバージョンが古いのが原因でした。
新しい物だと化けなくなっていることがわかりました。
どうもありがとうございました。
0634nobodyさん
02/11/14 05:22ID:???telnetデーモンに繋げたということ?
だったらそこへprintとかでデータを送ればいいだけ。
DOSプロンプトは関係ない。
# expectの話かと思った。
0635nobodyさん
02/11/14 11:27ID:a19LCBlb下のようなコードだと、変な数字が出てきます。
なにか変換が必要なのでしょうか?
local($sth) = $dbh->prepare("SELECT ....");
local($result)=$sth->execute();
$num_rows = $sth->rows;
print "該当 $num_rows 件\n";
for ($i=0; $i<$num_rows; $i++) {
@a = $sth->fetchrow_array;
print "date=$a[0]\n";
}
0636nobodyさん
02/11/14 12:14ID:a19LCBlbどういった場合にファイルが壊れてしまうのでしょうか。
CGIでファイルを読み込み専用でオープン中に、他のCGIが同じファイルを読み込み専用でオープンしようとしたときは安全ですか?
CGIが開こうとしているファイルをFTPで上書きしたりすると、FTP側が排他処理を行ってくれるのでしょうか?
またはその逆の、FTPで上書き中にCGIでファイルを開こうとした場合は??
0637nobodyさん
02/11/14 13:50ID:LexetFNQ一つの「掲示板.cgi」を動作させるのと、
「読み込み.cgi」「書き込み.cgi」「削除.cgi」等と分けるのでは
どちらが軽快に動作するのでしょうか?
一つにした場合より、分けた方が単一の動作に関しては軽く動きそうですが、
読み込み以外に書き込みや削除をしようとすると、
複数のcgiを動かさなければならなくなるのですが、どうなのでしょうか?
0638nobodyさん
02/11/14 14:24ID:???分けた方がコンパイル作業が多少軽くなるかもしれない。(Cやmod_perlは別)
複数のCGIを動かすと言っても同時に動かすようにするわけじゃないだろ?
書き込みをする時は、読み込みと削除のcgiは使わない。
単一cgiにしたって、結局呼び出す回数の合計は同じ。
組み方にもよるけどな。(書き込み後にlocationで読み込みに移動するなら増えるし)
ただ、単一cgiにした方が、管理は楽。
分ける事によって、極端なパフォーマンスの違いが出ない限り、
単一にしておいた方が、管理運営は楽だと思う。
最終的には作る人間使う人間の好みだよ。
分割で軽快になったって1回余計にcgi呼び出し受ければ、それでチャラ。
軽快にしたければ、いかにしてcgi呼び出し回数を減らすかを考えるべき。
BBSなら、読み込みcgiを使わずにHTML形式で保存してそれを参照させるとかね。
こっちの方がよっぽど軽快になる。
0639nobodyさん
02/11/14 14:48ID:???読み込みでは壊れない。
もし排他処理をロックファイルでやろうとしているんなら、FTPDを君が作らない限り排他処理にならない。
FTPで書込み中のファイルはCGIで開けず、CGIで開いてるファイルはFTPで開かれてしまうだろな。
ファイルシステムの排他機構なら、先に開いた方がやるだけだ。
あとはファイルシステムがしてくれる。
>>637
CGIプログラムのつくりの問題だ。
ファイルが複数かどうかは、よっぽどスクリプトのサイズが大きくないと関係ない。
0640637
02/11/14 15:32ID:LexetFNQありがとうございました。
たしかに、ごもっともです。
もう一つ、お伺いしたいのですが…
データ格納ファイルは、例えば、
data.dat data.log data.txt
等と意味も分からず使ってきましたが、
拡張子が変わる事で異なる部分があるのでしょうか?
0641nobodyさん
02/11/14 16:13ID:???data.txt
パーミッションで読み込み可能にしていれば、URL入力でブラウザを問わずログを直接読めてしまう。
ログ管理をする時、デフォルト設定のまま、メモ帳が使えるのが利点。
data.log
パーミッションで読み込み可能にしていれば、URL入力でログを直接読めてしまう事がある。
ブラウザや設定によって、ダウンロードプロパティが開く事も。
ログ管理の際には、ファイルの関連付けをしておかないとちょっと面倒。
data.dat
パーミッションで読み込み可能にしていれば、URL入力でログを直接読めてしまう事がある。
ブラウザや設定によって、ダウンロードプロパティが開く事も。
トクトクなどの場合、.datはシステム用ファイルとして扱われているのか、httpでの呼び出しはできない。(FTPは可能)
ログ管理の際、Win2kなどでは警告メッセージが出る事も。
ぱっと思いつくのはこれくらいか?
ログを読まれたくないなら、data.cgiとしていた方が、よっぽど安全。(鯖には優しくないが)
また、.txt、.log、.dat程度なら、ファイル名の予測がつけやすいという弱点もある。
あとは鯖のOSや設定によって何か変わる事があるかもしれない。
その辺は知識ある人よろ。
0642nobodyさん
02/11/14 16:19ID:IFE+msPuCGIで買い物カゴを作成しているんですが、買い物する商品を決めてもらって、
「内容確認 ⇒ 住所入力 ⇒ 注文確認 ⇒ 確定」とステータスを進めていくんですが、
一つ前のステータスに戻す方法がわかりません。
誰かやり方を教えてください。
0643nobodyさん
02/11/14 16:28ID:???要するに拡張子はタダの名前だからcgiからは違いがない。
パーミッション設定だけはちゃんとしとけ。
.cgiになんてするのは絶対にヤメロよ。
スクリプト書き込まれてアクセスされたら実行されるかもしれんからな。
>>642
たぶんステップ進む毎にデータを文書化して表示しちまってるんだろ。
それでは絶対に無理。
入力されたデータはそのままおいておく。
方法はクッキー使うなり、サーバにファイル作るなり、フォームとして埋め込むなり幾つかある。
好きなの選べ。
0644637
02/11/14 16:53ID:tv5vgXp6>>640 >>643 ありがとうございます。
私は、掲示板のデータファイルは
ファイル名.logで製作しているのですが、
ファイル名.datの方も多く、その違いが見出せません。
チョットしたデータならファイル名.txtの方が
メモ帳で扱いやすいとは思うのですが…
掲示板のデータファイルをtxtにしても問題がないため、
いったい、どれを使おうかと考えております。
0645nobodyさん
02/11/14 17:49ID:???スクリプト書き込まれること忘れてました。
自分とこでは1行目にパスが入らないようにするとか程度の工夫はしてあったので。
ツッコミサンクス。
>644
>643さんの言うようにパーミッションさえちゃんと設定してればtxtで問題ない。
0646637
02/11/14 18:09ID:gw28ZTht自分の中で、データファイルの拡張子は、
これまで通りファイル名.logで行くことにしました。
0647nobodyさん
02/11/14 19:27ID:05LSia440648647
02/11/14 19:28ID:05LSia44日本語間違えますた。。
2ちゃんねる型掲示板のフリースクリプトって何処がオススメでしょうか?
0649nobodyさん
02/11/14 19:41ID:???ttp://pc.2ch.net/test/read.cgi/php/1031910901/
こんなCGI探してますスレッド Ver7
0650nobodyさん
02/11/14 19:42ID:???【スレッド】2ch型掲示板 その6【フロート型】
http://pc.2ch.net/test/read.cgi/php/1028384308/
0653nobodyさん
02/11/15 02:31ID:/elwGBlb質問なのですが、トップページ以外にアクセスしてきたとしても
トップページに置いてあるカウンタを回すということは可能でしょうか?
0655653
02/11/15 04:34ID:/elwGBlbレスありがとうございます。どうやればいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています