CGIだけど、なんか質問ある? Part 8
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/09/22 23:15ID:???※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
↓
Perl 初心者コーナー Part16
http://pc.2ch.net/test/read.cgi/php/1032070299/l50
過去ログ・関連スレッドは >>2
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レスありがとうございます。どうやればいいのでしょうか?
0657nobodyさん
02/11/15 21:26ID:???他人のスクリプトを紹介して答えにしてしまって良いのかとは思いましたが、
Tackyさんの日記帳スーパーで、かなり詳細な祝日設定をやっていました。
ダウンロードして参考にしてみてはいかがでしょう。
0658653
02/11/15 23:48ID:6kFbwgWCなるほど。つまり隠しカウンタとしても使えるカウンタを使えばできるのですね。
探してみます。ありがとうございました。
0659nobodyさん
02/11/16 07:31ID:???そうだね。
(イメージカウンタだと仮定して)一部の人に見られてもいいのなら
<img src="カウンタ" style="display:none">という手もある。
0660nobodyさん
02/11/17 10:33ID:5gCJTG/POSはWIN98、使用アップローダーはFFFTPです。
友人プロバイダであるHi-HoのウェブスペースのCGIディレクトリに設置しよう試みました。
パーミッションの設定を変更、アスキー/バイナリでの転送、Perlのパスの確認はやってみました。
CGIの修正は一切していません。
が、ひたすらSERVER ERRORが出ています。
友人は横で寝てます。どなたか漏れに温もりを。頼みます。
0662660@やさぐれ
02/11/17 10:44ID:5gCJTG/Pやっぱり、ほったらかして帰りますかね…
ホントに自分で頑張って欲しいよ…
0668nobodyさん
02/11/17 16:24ID:R9txMO0V処理中にエラーが発生しました。
ファイルが存在しないか、書き込むデータが存在しません \WINDOWS\????????\new\ranklink186\data\b_data1.bak
tripodの無料鯖にb_data1.bakをアップロードするとエラーが出ます。
他のhtml/cgi/datなどのファイルは出来るのですが・・・
どんな理由が考えられますか?
0669nobodyさん
02/11/17 16:27ID:???このパスが存在するの?
0670nobodyさん
02/11/17 18:29ID:R9txMO0V\WINDOWS\????????\new\ranklink186\data\b_data1.bak
この\????????があるからいけないのかな?
でも、他のファイルもデスクトップに置いてあるから・・・
0671nobodyさん
02/11/17 23:57ID:???日本語使えるクライアントを使え
0672nobodyさん
02/11/18 00:39ID:bzzHU+jjFTPは全く繋がりません・・・
もし、自宅のルーターで設定がおかしくても他のファイルはアップ出来たのでルーターで設定では無い
と思います。
そういえば「窓の社」からFTPではDL出来ず、いつもHTTPでDLしています。
これを考えるとルーター設定がFTP禁止をしている。
しかし、その他のファイルはアップ出来た。
特定のファイルの種類がアップ出来ないと思っていたら「.bak」の他に3つある「.log」の1つが
アップ出来ません。
もう、訳が分からないです。
0674ウェザーブレイク
02/11/18 06:37ID:???0676672
02/11/18 11:42ID:bzzHU+jjそこで「//testtest」と適当に書いて保存して13?バイトにしました。tripodの無料鯖のアップローダーで
アップするファイルを参照してプロパティーで見ると0バイト・・・
デスクトップから.bakファイルを見ると13バイト
アップローダーのファイルプロパティーで見ると0バイト
「最新情報に更新」や再起動をしても変わりませんでした。
そこで新規にb_data1.htmlを作って(中身は適当に)アップロードしてから
b_data1.bakとリネイムして中身を削除。
このやり方で他のアップ出来なかったファイルをアップしました。
何なんでしょう?よく分かりません・・・
.htaccessと同じような物なんでしょうか?
0677nobodyさん
02/11/18 13:23ID:???誰かためしてみそ。
とか言ったらテメーで試せとか言われるだろうなぁ。
0678nobodyさん
02/11/18 14:33ID:???0679nobodyさん
02/11/18 15:12ID:???0680nobodyさん
02/11/18 15:41ID:???0681672
02/11/18 16:37ID:bzzHU+jjDLに失敗したと思いもう一度DLしてファイルを見るとやはり0バイト
CGIを扱うのは初めてなので空ファイルでも問題ないと思いました。
お手数掛けました。
●覚えたこと
0バイトの空ファイルはアップ出来ない
0バイトファイルを上げる時は適当な中身を書いて端子を変えてアップ
そして、鯖上でリネームと適当に書いた中身を削除する。
●問題点
何故、CGI作者はその旨を書いていないのか?
元々中身があったが作者がワザと空ファイルにしたのか?
それとも、空ファイルの取り扱いは常識なのか?
0682nobodyさん
02/11/18 16:39ID:???0683672
02/11/18 18:08ID:PpWbUC+4インフォシークは空ファイルのアップは出来ますね。
つまり、空ファイル問題は制作者・その他の要因ではなく鯖の仕様のようです。
tripodの無料鯖のアップローダーは空ファイルを扱えない
インフォシークの無料鯖のアップローダーは空ファイルを扱える
>>○FTPは空ファイルもいけるから。
ルーターの設定でFTPが出来ないようになっているみたいです。
説明書は兄が管理しているため旅行から帰ってくるまで、どうしようもないです。(悲
0685672
02/11/19 01:12ID:cpS+Bq4c今読み返すと作者批判になってますね。
すみませんでした・・・
0686nobodyさん
02/11/19 05:35ID:???■ このスレッドは過去ログ倉庫に格納されています