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

CGIだけどなんか質問ある Pert 5.01

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/03/03 12:49ID:673UxTI5
print"くだらない質問はここにかけや!";

0448nobodyさん02/03/18 03:22ID:???
>>443
キーが短い時も種を生成できるようにしてあるんでないのかな。
044944602/03/18 03:23ID:e/HSAhdE
>>447
フレーム アクセスカウンタで2ch発言検索はしたけどHITしなかったんだよ〜
0450nobodyさん02/03/18 08:26ID:???
>>446
   ____                      l
         \              ―┼―ヽ  \
           |   ―――――    /   |    ゝ
          _/              /    |
                        /    _」
                l               /    || ヽ   ―┼―       l
    ヽ ┌―┐   ―┼―    ┌―――┐ / ̄ ̄ ̄7| | ――  ―┴―     _|__/
   _  .| ┌┤ ――┼――   |     |      |    ― 「 ̄ ̄ ̄ ̄|  / | / ̄\
    | | ̄ ̄ ̄|   /     |     |      /     ―   | |   /   |/     |
    人| □ 」 /   \   |     |      /    ┌‐┐   | |    |  /|      /
   ノ  ヽ―――  ̄ ̄ ̄ ̄ヽ  ├―――┤    /     ├‐┤ ノ  |_」 ヽ/  ヽ    _/

      _____    ────
     | __        ┌───┐
     | ┌┐ ─┼   ├───┘
      ./ └┘   |    / ─┼─
    /  l /  ヽ |   ノ   /─┐
    /  ──    」      /   」


   |    ||            /
| ̄ ̄ ̄ ̄ ̄| ||____|_   /
|       |        /|   / ̄ ̄ ̄ ̄| ̄ ̄
        |       / |          |
        /     /   .|           |
      /          _|          /
   ̄ ̄ ̄                 ___/
0451nobodyさん02/03/18 08:50ID:???
ヴォケってなんですか?
0452nobodyさん02/03/18 08:53ID:???
夢の中へ行ってみたいと思いませんか?
0453nobodyさん02/03/18 08:55ID:???
>>452
ふふっふ〜さ〜ぁ〜
0454nobodyさん02/03/18 09:09ID:???
いやーん 男とデュエットしたことなかったのに。
0455nobodyさん02/03/18 22:00ID:???
php と同じようなコマンドセットを perlで使用できるモジュールとかありませんか?
0456nobodyさん02/03/18 23:37ID:???
>>455
php使えばいいだろ
0457nobodyさん02/03/19 00:32ID:???
うっさい ぼけーーー
もともとperlとPHPが似ているので、
使用状況に応じて簡単に変換できたらよさそうじゃんか。
0458nobodyさん02/03/19 00:37ID:???
>>457
で?言いたいことはそれだけかい?知ったかくん。
0459nobodyさん02/03/19 03:54ID:rsFIfwz6
既存のデータファイルのデータからHTMLファイルを作り出すスクリプトを作ったのですが、
ローカルでは動作するのにサーバーに転送すると必ずInternal Server Errorになります。

エラーログを見てみるとPremature end of script headers:だけ書かれていました。
またエラー箇所を探したのですが、起動のたびにエラーになるlineが移動して1箇所には定まりません。

これはメモリ不足によるプロセスの強制終了の可能性と考えたほうがいいのでしょうか?
よろしくお願いしたします。
0460nobodyさん02/03/19 04:39ID:???
@
0461nobodyさん02/03/19 05:19ID:???
>>459
headerが出力されてません。ってエラーなわけで、
ローカルでは動いてるということは…

スクリプトで使ってるモジュールがサーバには無い、とか予想してみる。
0462nobodyさん02/03/19 09:05ID:???
>>458
あなたの言いたいことはそれだけ?無駄にレスをする方。
0463じゃ代弁しとくよ02/03/19 09:48ID:???
言いたいことは「礼儀を知らんガキがでかい口を聞くな」
0464nobodyさん02/03/19 10:20ID:???
知らない人のことをわかっているかのようにそれも「ガキ言葉」で代弁しているあなたこそガキじゃん。
でも正直なところはいいね。
ガキ流れは、
「php使えばいいだろ」のあたりからなってしまいました。オレもガキじゃん。
046545902/03/19 12:54ID:mcTfQ2cd
>>461
ありがとうございます。
特にモジュールは使用していません。ごく基本的な関数のみで作ってあります。

何より不可思議なのは、どこの時点でエラーになるのかがCGIを動かす度に
変わるということです。例えば...
ループA{
 ループB{
  サブルーチン
 }
}
となっていて、
1回目はループAの47回目、ループBの71回目ではエラーがすでに発生
2回目はループAの47回目、ループBの70回目ではエラーがすでに発生
3回目はループAを37回目、ループBを69回目ではエラーはなし
4回目はループAを37回目、ループBを70回目ではエラーはなし
5回目はループAを37回目、ループBを71回目ではエラーはなし
という具合に、いつまで経ってもエラー箇所が一箇所に定まらないのです。
ただループAが37回目のどこかで発生するのは確かなんですけど。
0466nobodyさん02/03/19 13:08ID:???
>465
ソース見せれ。
0467 02/03/19 14:31ID:ZgA62M2H
2ちゃんねるのクッキーをまねしようとしてるんですが
クッキー読むスクリプトはみつかるのですが
保存するところがみつかりません、もしかしてCGIのほうでやってるんでしょうか?
0468nobodyさん02/03/19 15:02ID:???
なにいってるのかわかりません
0469nobodyさん02/03/19 15:24ID:???
>>467
訳がわかりません。
047045902/03/19 19:30ID:LM+0/bSK
>>461 >>466
サーバー会社へ出していた同様の質問の回答がやっと帰ってきました。
------------------------------------------------------------
確認いたしましたところ、お客様がご利用のCGIは XXX共有サーバーの
CPU Time の制限にかかり、サーバーエラーとなっていました。

XXX共有サーバー は、共用のサーバーですので、高負荷状態に
陥ることを防ぐためにこちらの制限を行っております。
-------------------------------------------------------
ということでした。すみません、解決しました。
またよろしくお願いします!
047112302/03/19 21:45ID:???
cgiとかでよく使われている、Locationってどんな働きをするんですか?
0472nobodyさん02/03/19 21:49ID:???
>>471
俺は「使っているのを見て知った」んで、どうやってLocationを知ったのか謎だ。
後学のために教えてくれ。
ところでGoogleって知ってるか?
0473nobodyさん02/03/19 22:04ID:???
http://pc.2ch.net/test/read.cgi/php/988890976/175-
0474nobodyさん02/03/20 23:54ID:Hs1uL44x
CGIを使用してフレーム全解除属性(target="_top")を
付けた時のようにページを転送することは可能ですか?
0475nobodyさん02/03/20 23:56ID:Hs1uL44x
えーと
print "<a href=\"http://hogehoge.nu\" target=\"_top\">転送</a>";
とかではなくてLocationで飛ばすような感じです。
0476nobodyさん02/03/21 05:04ID:???
>474-475
CGIは基本的にブラウザの挙動をいじれないので,不可能と思われ。
フォームでターゲット指定したり,JavaScript系を使ったりすれば可能。
0477nobodyさん02/03/21 06:52ID:???
>>474-475
普通は
<form action="hoge.cgi "target="_top">
のようにCGIを呼び出してLocationで飛ばすけど、
それじゃ不満かい?
0478nobodyさん02/03/21 08:45ID:???
Locationが使えないサーバって存在するん?
0479nobodyさん02/03/21 09:09ID:???
うちのサーバlocation使えへん…
0480nobodyさん02/03/21 11:12ID:???
>>478
トクトクが使えない
0481nobodyさん02/03/21 15:27ID:SSRvR1vK
KENTの掲示板でも半角を使用したいのですが、
&jcode'convert(*value,'sjis');
↑部分を取り除くと使用できるようになるのはわかるんですが、
EUCなどの対策になにかいい方法はないでしょうか?
0482nobodyさん02/03/21 15:27ID:SSRvR1vK
すみません。
KENT×
KENT氏○
0483nobodyさん02/03/21 15:35ID:???
     ((        ) ))
    (( (     )   ) )
   ( (  (    )  )   ) 
  ’ ((          ) ) )
     ( (( | |  ) )
  ‘     (( | | ) )  ‘
     ’    | |                    春ですね。
   ○イザベラ! | |  ’ ξ○ξ スミス・・・
 −+−    | |      V ,
   |     | |     |  
  /\    /  \    /\
0484hanamogera02/03/21 15:37ID:c8Atj9bt
下のソースでフォームデコードすると、$commentの中身だけなんだか数字になっちゃうんです。
何ででしょうか?

sub decode {
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
$buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value, "sjis", "", "z");
$value =~ s/&/&\;/g;
$value =~ s/</\<\;/g;
$value =~ s/>/\>\;/g;
$value =~ s/\"/\"\;/g;
$value =~ s/<>/\<\;\>\;/g;
$value =~ s/<!--(.|\n)*-->//g;
$FORM{$name} = $value;
}
$name = $FORM{'name'};
$title = $FORM{'title'};
$comment = $FORM{'comment'};
$comment = ~ s/\r\n|\r|\n/$br/g;
$mode = $FORM{'mode'};
}
0485nobodyさん02/03/21 15:38ID:???
>481
大崎さんのやりかたを参考にして,きっちり判定するとか。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Code
0486nobodyさん02/03/21 15:52ID:???
>>483
アッソ。デ?
0487nobodyさん02/03/21 21:53ID:zzUVZQ93
一定時間ごとにCGIを自動起動させたいんですがどのような方法あるでしょう?
アクセスカウンタが20いくごとに起動、とかの方法はわかるんですが、
一定の時間ごとに起動させるというのは何を使えば良いでしょうか?
0488nobodyさん02/03/21 22:08ID:???
>>487
cron。
定期的に出てくる質問だなぁ・・・。
0489nobodyおっさん02/03/21 22:11ID:???
クーロンタブをつかうか、
あなたが一定時間ごとにアクセスしてこのときに実行させるか
あなたならどっち?
0490nobodyさん02/03/21 22:12ID:???
cronって権限無いとほいほい使えないよね。
0491nobodyさん02/03/21 23:01ID:rmv2GYdP
>>487
ある一定の時間を指定して、CGIの呼び出しがあったときにチェックして、
その時間が過ぎていたら処理を行い、次に処理する時間もそのときに指定する
チェックルーチンを入れれば、cron使えなくても擬似的に出来るよ。
0492487です02/03/21 23:39ID:zzUVZQ93
>>488-491
ありがとうございます。cronですね、使えるかなぁ・・・
491さんの方法もよさげだけどやり方わかんないす。
0493nobodyさん02/03/22 00:01ID:???
参考にならんと思うが、漏れは昔こんなプログラムを動かしていてプロバイダから警告がきた。
これは止めておいた方がいいぞ。
while(1){
# ここにコード
sleep(60*60);
}
0494nobodyさん02/03/22 00:14ID:p0uEX1fS
使う必要がないもんだから俺は知らないけど、確か、
年月日時分秒をシリアルな数値で獲得できるだろ?
処理後にあれを一日だったら1日分足して置けばいいんだよ。
いろいろやり方ありそうだよな。ほかにも。
どっちにしてもそんなに難しい処理じゃないと思うよ。

一日単位だったら、単純に日にちがカワったら処理をして、新しい日にちに
書き換えたらいいんだし。
0495487です02/03/22 01:24ID:esA90bh2
cronを使わない(使えない)場合に定期的にcgiを自動実行させるためには
アクセスカウントUP時に何回かに1度の割合で実行させる、という方法以外に
実行させる方法あるのですかね?
>493の方法は常にpgを動かしておきsleepが切れたときに本実行させる
ものだと思いますが止めたほうが良いとのこと。
>494のようにどっかに日時を持っておくとして、それを起動させる方法はどんなのですか?
0496nobodyさん02/03/22 01:46ID:???
正直、487がこれほど馬鹿だとは思わなかった。
0497nobodyさん02/03/22 01:48ID:???
>>495
要するに、ヒントじゃなくてソースそのものが欲しいって事?
いくら出すの?
0498nobodyさん02/03/22 03:33ID:???
>>497
基地外
いくら出すのはいいすぎ。
>>487
君は馬鹿。
0499厨房02/03/22 15:53ID:3P7KS9SJ
アップローダー作れる人いますか?
http://zurubon.strange-x.com/uploader/
を色々見てみたんですけど、CG�Tが初めてなので
全く分かりません。
何かヒントまたは代わりに作って下さる方いらっしゃらないでしょうか?
050050002/03/22 16:06ID:???
ヒントも作るのも無理。
CGIが初めての奴に対しての"ヒント"ってなんになると思う?
数行のスクリプトならまだしらまだしも
アップローダーを作れか?あほ。


0501nobodyさん02/03/22 16:08ID:???
まだしらまだしも×
まだしも○
スマソ
050249902/03/22 16:20ID:3P7KS9SJ
御免なさい
0503nobodyさん02/03/22 16:35ID:???
#!/usr/bin/perl
print <<"__FORM__";
Content-type: text/html

<FORM ACTION="$ENV{SCRIPT_NAME}" ENCTYPE="multipart/form-data" METHOD=POST>
<INPUT TYPE="FILE" NAME="file">
</FORM>
__FORM__
print <STDIN>;

ブラウザが送るデータを観察してデコードする方法でも考えればぁ?(゚Д゚)
0504nobodyさん02/03/22 17:01ID:KCkKfXvI
質問です。
メールフォームでメールを送ろうとしたのですが送信ボタンを押して待てど暮らせど
出るはずの確認画面が出ません。
これは送信されてないものと考えていいのでしょうか。
重複送信になるのが怖くて再送信することができずにいます。
0505nobodyさん02/03/22 17:02ID:qjFFNAMI
おまえの回線状況なんぞ知るか!
050650402/03/22 17:50ID:???
回線状況は正常だと思うんですけどね。
っていうか再送信して大丈夫か否かってのが訊きたいんですけどダメですか?
直接相手に問い合わせしようにも他の連絡手段が無いんですよね
(イベントの特設ページみたいなサイトだし)
0507nobodyさん02/03/22 18:53ID:fazmqrAM
>>506
( ´_ゝ`)フーン
0508nobodyさん02/03/22 21:43ID:tj2D5lJW
Computer Graphic Interface?
0509nobodyさん02/03/22 22:02ID:???
>>508
Common Gateway Interface

マジレスした方が>>508は恥ずかしい。
0510nobodyさん02/03/23 00:43ID:???
お邪魔いたしまする。CGIぷろぐらまーの方々
息抜きにコンビニのラーメンでもいかがでしょうか
http://wakaz.lolipop.jp/index.html
0511nobodyさん02/03/23 02:39ID:???
春だね♪
0512nobodyさん02/03/24 02:20ID:Gb9vu2Wc
掲示板などで認証つきの管理者モードを作る場合で、
かつ管理者モードが複数ページに渡る場合、
最初のページで一度認証済ませれば次のページへは認証なしで入れる、
というようにするにはどうすればいいですか?
最初の認証でパスワードをpost送信させると2ページ目では取得できないし、
どこかにフラグを立てて置くと、ログアウトさせないとフラグが残ってしまうし、
HTTP_REFEREを調べるとしても、どうしても不正にアクセスできてしまいます。
やり方が悪いのでしょうが、うまい方法が思いつきません。
普通はどういう方法で認証しますか?
0513nobodyさん02/03/24 02:22ID:???
>>512
<input type="hidden" name="pwd" value="$FORM{pwd}">
051451202/03/24 02:29ID:Gb9vu2Wc
え?え?
なんだか、見慣れない手法で、ちょっと混乱。考え中。
とりあえず、ありがとうございます。
0515nobodyさん02/03/24 02:35ID:???
>>512
Basic認証使えとか言っちゃうのは反則ですか?
051651202/03/24 02:49ID:Gb9vu2Wc
>>513
すみません。もうちょこっとヒントいただけませんか?
>>515
反則です(笑)。今のところ動作環境がBASIC認証とやらを使えるかどうか
わからないのです。ちなみにBasic認証を使うとどの時点まで
アクセスの権限が持続するんでしょう?後学のために..。
0517nobodyさん02/03/24 03:04ID:???
>>516
確か一度IDとパス入れれば、
ブラウザ閉じるまでブラウザがIDとパスを保持して
自動的に認証してくれるはず。
051851202/03/24 03:15ID:Gb9vu2Wc
>>517
なるほど!そいつは便利ですね。いづれ使うことになると思います。
ありがとうございます。
>>513
これ、いくら考えても意味がわからないんですが、
誰か解説してもらえませんか?
0519nobodyさん02/03/24 03:19ID:???
hiddenでパスワードを持ち歩くちゅう意味でしょ
0520nobodyさん02/03/24 03:21ID:KxmQdHuE
起きてるか?
0521nobodyさん02/03/24 03:26ID:???
・Basic認証のREMOTE_USERを利用
・CookieにセッションIDでセッション利用
・Cookieのみ
・HIDDENで持ち歩く

一応安全だと思う順
他にも方法ある?
052251202/03/24 03:29ID:Gb9vu2Wc
ああ、なーんだ。>>513をCGIで書き出すということですか。
てっきりフォームから変数名を送って巧妙に2ページ目にパスワードを
引き継ぐ方法があるのかと思ってました。
ソース見たらパスワードばれちゃいますけど、普通そんなもんですかね。
basic認証とやらが使えなければ、この方法でやります。
ありがとうございました。
052351202/03/24 03:31ID:???
あ、遅レスでした。
>>521さんありがとう!
参考にさせていただきます。
0524nobodyさん02/03/24 14:09ID:???
ソース見たらパスワードがバレるって、
入力した本人しか見れないんだからいいんじゃないの?
0525nobodyさん02/03/24 17:42ID:???
>>524
あ、、
俺も>>512と同じように
passwdばれるよなぁ
って思ってた。。。w
納得。
052651202/03/24 20:32ID:Gb9vu2Wc
>>524
そうなんですけど、じゃあ、>>521でクッキーのみより安全性下になってるのは
どういう訳なんでしょう。ピュアな質問です。
0527よくわからんけど02/03/24 20:47ID:???
串のキャッシュに残る事があるとか?
052851202/03/24 20:47ID:???
プロキシとか関係あるのかな。全然わかんないや。
セキュリティスレ発見したので、そっち読んでます。
052951202/03/24 20:48ID:???
おお!また遅レスでした。やっぱそんな感じでしたか。ありがとうございます
053052102/03/24 21:03ID:???
hiddenは偽装が容易だからcookieのが安全かなと
使わないとは思うけどGETしたら見えちゃうし、
万が一その状態でリンクで飛んだ先にアクセス解析ついていたら
パスワードがログに取られてしまう。
0531nobodyさん02/03/24 21:10ID:???
>531
偽装について説明きぼん。
053251202/03/24 21:11ID:???
ほほう。なるほど。ところで、質問ばかりで恐縮ですが、
GETしたら〜というのはどういう状況ですか?
こちとらPOSTのフォーム書き出してるのにGETしてしまう状況とは?
053351202/03/24 21:13ID:???
>>531
なんらかの手段で不正にパスを知った人が自分でフォーム書いて
ログインできるってことじゃないですかね。それがクッキーより容易ということ?
0534nobodyさん02/03/24 21:14ID:???
>533
>なんらかの手段で不正にパスを知った人が
その時点でセキュリティ終わってる。
053551202/03/24 21:19ID:???
>>532
自己レス、>>530で使わないとは思うけど〜ってありましたね。失礼。
>>534
セキュリティは終わってるけど、521が言ってるのはそういう意味じゃないですかね。
まあ、終わってることは終わってる。
0536nobodyさん02/03/24 21:25ID:???
>535
パスワードがわかった時点で改造フォームを作る必要がないと気付いてくれよ。
堂々と正門からパスワード入力して入っていけばいいんだから。
053751202/03/24 21:27ID:???
あはは。そりゃそうだ。
失礼!頭悪くてすみません!
0538nobodyさん02/03/24 22:31ID:???
今使ってる掲示板がF5押すと再試行して2重投稿しちゃうんですけど、
防ぐ方法ありますよね。たぶん初歩的なことですけど、書いてあるページ教えてちょ。
0539nobodyさん02/03/24 22:46ID:Gb9vu2Wc
http://pc.2ch.net/test/read.cgi/php/988727833/363-
これかなあ。
0540nobodyさん02/03/24 22:47ID:???
>>538
F5を押さない。以上。
0541nobodyさん02/03/24 22:53ID:???
>>539
ようは書き込み後に違うページにジャンプさせるんでしょ。
そのやり方が分からんのですが・・・・
0542nobodyさん02/03/24 22:59ID:???
>>541
Locationって書いてるじゃん。何が分からんのよ。
Location+二重投稿で調べれば直ぐ出るだろ?
0543nobodyさん02/03/24 23:09ID:???
>>542
print 'http://'.$ENV{'HTTP_HOST'}.$ENV{'SCRIPT_NAME'}."\n\n";
これですか?
0544nobodyさん02/03/24 23:13ID:???
http://pc.2ch.net/test/read.cgi/php/988890976/175-
http://pc.2ch.net/test/read.cgi/php/988890976/175-
http://pc.2ch.net/test/read.cgi/php/988890976/175-
0545nobodyさん02/03/24 23:28ID:???
# [ログ書きこみ処理]
#
sub wri_ {
if ($FORM{'name'} eq "") { &er_("名前が未入力!"); }
if ($FORM{'comment'} eq "") { &er_("コメントが未入力!"); }
if (length($delkey) > 8) { &er_("削除キー は8文字以内!"); }
if ($locks == 1) { &lock_; }
open(LOG,"$log") || &er_("Can't open $log");
@lines = <LOG>;
close(LOG);
if($bup){&backup_;}
($knum,$kd,$kname,$kem,$ksub,$kcom) = split(/<>/,$lines[0]);
if ($name eq $kname && $comment eq $kcom) { &er_("二重投稿は禁止です!"); }

この { &er_("二重投稿は禁止です!"); }ってとこにlocationとやらを入れるんですか?
0546nobodyさん02/03/24 23:37ID:???
>545
違う。
1回目の書き込みが終わった時点で飛ばすの。
0547nobodyさん02/03/24 23:51ID:???
>>545
ネタか?ネタじゃないのならWebProg板に来るレベルじゃないな。
0548nobodyさん02/03/25 00:06ID:???
<td colspan=2><input type=submit value="送信する"$fm>
<input type=reset value="リセット"$fm></td></tr></table></form><hr>
_KEY_
}
$total=@NEW;
$page_=int(($total-1)/$a_max);
if ($FORM{'page'} eq '') { $page = 0; }
else { $page = $FORM{'page'}; }

$end_data = @NEW - 1;
$page_end = $page + ($a_max - 1);
if ($page_end >= $end_data) { $page_end = $end_data; }
foreach ($page .. $page_end) {
($namber,$date,$name,$email,$d_may,$comment,$url,$font,$ico,$type) = split(/<>/,$NEW[$_]);
if($email ne ""){ $name="<a href=\"mailto:$email\">$name</a>"; }
if($d_may eq ""){ $d_may="No Title"; }
if($link_i == 1){
if ($url ne "") {
$url="<a href=\"http://$url\" target=\"_top\"><img src=\"$i_dir/$l_img\" border=0 width=\"$h_wid\" height=\"$h_hei\"></a>";
}
} elsif ($link_i == 0){
if($url ne ""){$url="<a href=\"http://$url\" target=\"_top\">http://$url<;/a>"; }
}
print <<"_HTML_";
この辺ですかね?
■ このスレッドは過去ログ倉庫に格納されています