CGIだけど、なんか質問ある? Part 6
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/07/06 13:41ID:Mpxtn4bk※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
↓
Perl 初心者コーナー Part13
http://pc.2ch.net/test/read.cgi/php/1022731565/l50
過去ログ・関連スレッドは >>2
0452nobodyさん
02/08/06 20:55ID:???ISO-8859-1 です。
0453nobodyさん
02/08/06 21:22ID:???HTTPヘッダとHTMLヘッダ、両方を正確に出力してるなら
(今の書き込みからは、上手く行かない以上の事が何も分からない)
それは古いブラウザ特有の誤認識
昔はYAHOOなんかでも色々工夫がしてあった
http://www.google.com/search?num=100&hl=ja&ie=UTF-8&oe=utf-8&q=%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6+%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89+%E3%81%8A%E3%81%BE%E3%81%98%E3%81%AA%E3%81%84&btnG=Google+%E6%A4%9C%E7%B4%A2
0454nobodyさん
02/08/06 22:11ID:???サンクス
0455nobodyさん
02/08/07 00:08ID:???0456nobodyさん
02/08/07 14:53ID:???0457nobodyさん
02/08/07 18:24ID:???0458nobodyさん
02/08/07 23:07ID:Ebqa+zWc2重という言い方で通じなかったら、入れ子で使えるの?
a.htmlに、<!-- SSI命令なんちゃら-->ABCDEFG
と書いておいて、b.htmlに<!--a.htmlをここに呼び出すSSI命令-->
と書いて、OK?
0459458
02/08/07 23:39ID:Ebqa+zWc2重でも3重でもできそう。
これを駆使すればいろいろおもしろいことができそう。
あんなことやらこんなことやら、、
0460nobodyさん
02/08/07 23:41ID:???0461nobodyさん
02/08/07 23:42ID:???0462nobodyさん
02/08/07 23:53ID:ndE0k5iFhttp://hp.bird.to/info/countget.htmlのCGIで
連続でカウンタが回されないようになっているようですが
これはどのような仕組みで回らないようになっているんでしょうかねぇ?
自分で色々試した結果
cookieではないようです
ってことは相手のcgi側でアクセスログを取っているってことですよねぇ?
これを回避してカウンタを回すにはどうすればよろしいのでしょうか?
串刺してアクセスすれば回せますよねぇ?
0463nobodyさん
02/08/08 00:02ID:???0464nobodyさん
02/08/08 00:02ID:???0466462
02/08/08 00:08ID:kiQ1aKPIレスありがとうございました
ってことはIP変えれば(串通せば)カウンタを回す事が出来るんですね?
0467nobodyさん
02/08/08 00:12ID:???0468nobodyさん
02/08/08 00:15ID:???0469質問
02/08/08 01:28ID:o/KxESaR過去ログに行ってHTML化されたスレッドはどのように判別すれば
いいですか。ライブなスレッドは板が引越ししたら
URLを変えないといけないが、すでにHTML化されたスレッド
だったらURLを変えてしまうと見れなくなる。だからそのスレッドが
ライブなのか、過去ログに行ってHTML化されているのか判別して、
ライブだったら板の移転に合わせてURLを変更し、HTML化されて
いればURLをいじらずにそのままにするようにしなければならない。
その判別はどうやったらいいのか。
0470nobodyさん
02/08/08 01:30ID:67DgjdRz0471462
02/08/08 12:37ID:kiQ1aKPIそうですよね
でも漏れの知っている串(http://www8.big.or.jp/~000/CyberSyndrome/で検索)では
ホスト名&IPなどが隠せないんですよ
ちゃんと匿名串を使っているのに…
鬱だ……
0472nobodyさん
02/08/08 12:45ID:???同じIPからだと1日1カウントしか収集しないんじゃないかな?
だとしたら、10個カウンター回したいなら、10個のIPが必要。
0473462
02/08/08 13:00ID:kiQ1aKPI>>467のようにすると何回でも回せるみたいです
漏れは串持ってないので携帯を使ってます
実験ではPC→携帯電話→PCを繰り返すと回ります
でも携帯使うと通信料が一回12円かかります
どうしましょう…
0474nobodyさん
02/08/08 14:36ID:???0475462
02/08/08 17:05ID:kiQ1aKPIやっぱり10回まわすなら10個のIP必要ですね
カウンタは>>467のようにすれば回りますが、
キリ番ゲットページで「あなたのカウント」は回ってないんですよ
どぉ〜しましょ
0476nobodyさん
02/08/08 17:24ID:???そもそもなんで回したいのよ?
不正な方法でキリ番ゲットしたいの?
0477462
02/08/08 17:31ID:kiQ1aKPIキリ番げっとするとプレゼントが貰えるんです
携帯電話でのアクセスでは
「あなたのカウント」が「未取得」になってしまいます
串を使っても、そうなってしまう可能性が出てきました
もうだめぽ……鬱
0478nobodyさん
02/08/08 17:36ID:???0479.
02/08/08 18:11ID:???0480nobodyさん
02/08/08 19:12ID:???0481質問です
02/08/08 21:49ID:o/Pn3LPJ<!--#include file="xx.html" -->
って出てしまうのですが、
.htaccessのAddTypeに.htmlを加えるしかないのでしょうか?
他の解決方法を教えてください。
どなたか答えてくれるとうれしいです。よろしくおねがいします。
0482nobodyさん
02/08/08 22:01ID:???意味無い気がする。
0483Apache/1.3.20@RHL7.2J
02/08/09 00:49ID:???下記のログようなエラー(Internal Server Error)になります。
ちなみに、webサーバマシンでスクリプトを実行して、html文にリダイレクトしたら、思うようにページが表示されるのですが…
(./googre2.cgi > googre2.html)
どこが間違ってるところはどこなのでしょうか?
[Thu Aug 8 19:43:16 2002] [error] [client 10.10.1.38] script not found or
unable to stat: /var/www/html/cgi-bin/googre2.cgi
[Thu Aug 8 19:43:52 2002] [error] [client 10.10.1.38] Premature end of
script headers: /var/www/html/cgi-bin/google2.cgi
0484483のスクリプトです
02/08/09 00:53ID:GqWWhT2Wprint '<!DOCTYPE HTML PUBLIC"-//W3C/DTD HTML 3.2 Final//EN">';
print '<HTML>';
print '<HEAD>';
print '<TITLE>google_mail1</TITLE>';
print '</HEAD>';
print '</body>';
print '<META http-equiv="Refresh"
content="0;URL=http://www.google.co.jp/search?q=&ie=UTF-8&oe=UTF-8&hl=ja&btn
G=Google+%
E6%A4%9C%E7%B4%A2&lr=">';
print '<base target="_top">';
print '</NOFRAMES>';
print '</FRAMESET>';
print '</HTML>';
他のスクリプトはWEB上で実行できてます。
スクリプトは、WinPCからtelnetでログインして貼り付けました。
前レス「間違ってるところはどこなのでしょうか? 」の間違いです。すみません。
0485nobodyさん
02/08/09 01:18ID:???print '</NOFRAMES>';
print '</FRAMESET>';
これは何なの? キミはまだCGI以前にタグの学習が必要では?
0486nobodyさん
02/08/09 03:17ID:???そんなことはない。
0488K
02/08/09 07:19ID:u713FiUQこの後に控えている私の仕事がCを使うということもあって、「どうせならC言語でCGI作ってみて」という話になりました。
WEBサーバとSQLサーバには何を選択してもいいのですが今のところは、
MicrosoftのSQLサーバとIISを使用する予定です。
ただ、いくら本を探してもC言語でSQLサーバとやり取りする方法の書かれたものが見当たりません。
当方はWindows2000を使っています。
とりあえず、IIS上でCでコンパイルした実行可能CGIファイルを動かしたいのですが、うまく動きません。
動かそうとすると、ユーザ名とパスワードを要求されます。
(ちなみにこのCGIプログラムをコマンドプロンプトで実行するとちゃんとHTML形式の文書が出力されます。
(よくあるHELLO WORLDです。(^^;))
ファイルのパーミッション(右クリック→プロパティ→セキュリティ)はeveryoneでフルコントロールです。
長くなりましたが、現在足がかりがほとんどない状態です。
どなたかアドバイスやお勧めの本やWEBページがありましたら教えてもらえると幸いです。
お願いします。m(_ _)m
0489nobodyさん
02/08/09 11:43ID:???〜
my $start = ($page * $one_page) + 1;
my $end = $start + $one_page - 1;
my $i = 0;
open IN , $data_file;
while ( <IN> ) {
last if $i++ >= $end;
print if $i >= $start;
}
close IN;
my $next = $page - 1;
my $back = $page + 1;
my $p_start = ($page * $one_page)+1;
my $p_end = int ( $max_article / $one_page );
print qq|<p>|;
print qq|<a href="$script_name?$next"><< 新しめの$one_page件</a> \n| if $next >= 0;
for ( $p_start..$p_end ) { print qq|<a href="$script_name?$_"><$_></a>|; }
print qq| <a href="$script_name?$back">古めの$one_page件 >></a>\n| if $end < $max_article;
print qq|</p></body>\n</html>|;
ページングとやらをやってみようと、何とかページ数の表示は出るようになったんですが、
肝心の記事表示がまともに出来ません。どこが間違っているんでしょうか。
ちなみに、
$max_articleは現在の件数。$one_pageは1ページに表示する件数。
$data_fileは1行ずつ↓のような形式で保存してます。
<h2>[$num] $name - $date</h2><p class="i">$comment</p>
0493489
02/08/09 12:51ID:???open IN , $data_file;
my $max_article = <IN> =~ /^<h2>\[(\d+)\]/;
$max_article = $1;
close IN;
変数の宣言部分を省略していたのがまずかったですね。
$data_fileの一行目が最新の記事で、$numに記事の番号を記録しているので、
そこから数値を抜き出して記録されている件数としています($max_article)
0494489
02/08/09 13:04ID:???0495困ったチャン
02/08/09 17:41ID:???別のCGIファイルを呼び出す方法をおせーて?
BY困ったチャン
0496困ったチャン
02/08/09 17:44ID:???すいませんけど
Perlです
BY困ったチャン
0497nobodyさん
02/08/09 18:32ID:???別のCGI内のサブルーチンでも使いたいのか?
0499nobodyさん
02/08/09 19:05ID:???ログに書き込み者のIPを記録し、そのままHTML出力に表示させたいのですが、
全部の行が同じIPになってしまいます。
(違うIPになると、全行のIPがそれになってしまう)
$ad = $ENV{'REMOTE_ADDR'};
とCGIに記述して、
表示させたい部分に$adを埋めるだけじゃダメなんですか?
0500nobodyさん
02/08/09 19:10ID:???それじゃ、見た人のIPにしかならない。
別ファイルに書き込んで、読み込むなりしないと。
0501499
02/08/09 19:21ID:???ご助言ありがとう。
いま、DATに書き込み者のIPを記録するようにしました。
こんどはどうやって読ませようか悩んでます。
いい手本が手元にないんですよ。
0502nobodyさん
02/08/09 19:40ID:???手元になければ探せ。
いくらでも転がってるぞ。
0503nobodyさん
02/08/09 20:16ID:???system($cmd,$arg);を使う時はapacheに何か、設定を加える必要ありですか?
0504nobodyさん
02/08/09 22:37ID:???0505にすと
02/08/10 00:07ID:k/CbtY7Iありますか?
もし、ありましたらお教え下さい。
0506nobodyさん
02/08/10 00:11ID:???SSIが使えない環境だと難しい。
0507nobodyさん
02/08/10 00:13ID:???【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/l50
改造を頼むのなら上のスレの1に書かれていることちゃんと読んでからな。
ま、このスレの>>1も読めないやつには無理かもしれんが(w
0508nobodyさん
02/08/10 01:44ID:???IISの設定確認しろ。
ローカル環境で試してるのか?
そうでなければコンピュータへのユーザ権限がない。
その他ユーザ回りをしっかり確認しろ。
0509nobodyさん
02/08/10 16:20ID:???でフォームを送信してもらったあと「送信しました」ページを表示させる方法を
教えてください。
0510nobodyさん
02/08/10 16:23ID:???0511nobodyさん
02/08/10 22:28ID:???0513nobodyさん
02/08/10 23:34ID:BXA7DZhaおおかたのIP表示のCGIをあさってみたんですが、
IPもしくはホスト取得後、記事部に表示させる記述は
print"$ip $host"
といったものでした。
なぜ、既製品に自分で書き加えると全行、自分のIPもしくはホストが反映されてしまい、
元から機能がついているとちゃんとログから持ってくるかが判別できないのです…
0514
02/08/11 01:21ID:aEO6uXrg書き換えるHTMLファイルのパーミッションを666などに設定する必要がありますよね?
これってなにか危険性あります?
0515nobodyさん
02/08/11 03:02ID:???書き換える直前でパーミッション変えて、終わったら戻すようにしたらどうだ
0516514
02/08/11 16:04ID:???Internal Server Errorが出てしまいました。
CGIによるパーミッション変更は禁止されているようです。
あきらめるしかないんでしょうか。
0517nobodyさん
02/08/11 22:13ID:???KENTWEBでもそういうのあるし
0518困ったチャン
02/08/12 17:49ID:???パスワードを入力して
認証してOKならページ移動
の処理を作成中なんッスけど
認証のためのデータをあるファイルから
参照してハッシュを使ってIDをキーにして
パスワードをデータにして、
IDを比較するのはOKなんッスけど、
パスワードの比較はどうしたらイイんでしょうか?
ようはキーの中身の比較っすね
0519困ったチャン
02/08/12 17:57ID:???0520nobodyさん
02/08/12 18:26ID:???0522nobodyさん
02/08/12 21:14ID:???書きこまれていくのですが、どうも中身の行数が増えすぎて見にくくなって
きてしまいました。どうやったらこれをクリアできるのでしょうか?
0523nobodyさん
02/08/12 21:16ID:???0524Disca ◆NAfP6znE
02/08/12 21:38ID:yGKNwrot(VisualC++のコンパイラ)
と、HTTPデーモンには、AnHTTPDを利用して
実行させているのですが、
標準出力の終了を、HTTPDデーモン(AnHttpd)
が認識してくれなく、ある時間が経つと、デーモン側(AnHttpd)からプロセスを強制終了させてしまいます。
TerminateThread() (WindowsAPIで言うと、
putc(EOF);
などをしても、EOFマーカーを認識してくれません。
何か良い方法で、掲示板側から、終了をしたと言う事をHTTPデーモン(AnHttpd)にわかるようにはできないでしょうか。
0525Disca ◆NAfP6znE
02/08/12 21:40ID:yGKNwrothttpd.conf をよくみると、どこかにログファイルを書き込むための
ディレクティブが宣言されていたと思うよ。
…そんなcgiってありますか?
もしあったら、参考になるサイト、もしくはプログラムを
お教え下さい。
0527nobodyさん
02/08/13 00:08ID:???0528nobodyさん
02/08/13 00:08ID:???調べる場所が'.'の場合はちゃんと1になるんですけど、./aaaとかの場合はダメです。
原因がわかる方、教えてください。
$_[0]には、ディレクトリの場所'.'とか./directory とかを受け取ります。
sub search_dir{
if ($_[0] =~ /\.\./){
$forbidden = 1;
}
else {
opendir(DIRECTORY, $_[0]) or die "カレントディレクトリを開けません。";
@dir_contents = readdir(DIRECTORY);
closedir DIRECTORY;
foreach $con (@dir_contents){
if ($_[0] != '.'){ $con = $_[0] . $con; }
if ($con eq "."){
} elsif ($con eq ".."){
} elsif (-d $con){
$child_dir[$cd_index] = "./" . $con;
$cd_index++;
} elsif ($con =~ /(.html|.htm)$/) {
$child_html[$ch_index] = $con;
$ch_index++;
} else {
$child_otherfile[$co_index] = $con;
$co_index++;
}
}
}
}
0533532
02/08/13 02:46ID:???sub search_dir{
if ($_[0] =~ /\.\./){
$forbidden = 1;
}
else {
opendir(DIRECTORY, $_[0]) or die "カレントディレクトリを開けません。";
@dir_contents = readdir(DIRECTORY);
closedir DIRECTORY;
foreach $con (@dir_contents){
if ($_[0] != '.'){ $con = $_[0] . $con; }
if ($con eq "."){
} elsif ($con eq ".."){
} elsif (-d $con){
$child_dir[$cd_index] = "./" . $con;
$cd_index++;
} elsif ($con =~ /(.html|.htm)$/) {
$child_html[$ch_index] = $con;
$ch_index++;
} else {
$child_otherfile[$co_index] = $con;
$co_index++;
}
}
}
}
0534532
02/08/13 02:51ID:???0535nobodyさん
02/08/13 03:00ID:???にあるCGIで
/usr/local/src/
以下に貯めてきたソースを閲覧しようと試みますが、
エラーが出ます。
恐らくアパッチのセキュリティが働いている模様です。
Googleでしらべてもワカリマセンでした。
どなたか、cgiからあくせすできる
ディレクトリの設定方法をゴキョウジュしていただけませんか?
0536nobodyさん
02/08/13 03:00ID:???この行の $con って、$con= $_[0] . '/' . $con; では?
0537532
02/08/13 03:10ID:???おっしゃる通りにしても解決しませんでした。
もう少し整理してみます。ありがとうございます。
0539532
02/08/13 03:25ID:???でもファイルタイプを調べるのに失敗してしまいます。
0540532
02/08/13 03:49ID:???で解決しました。アドレスと等価演算子が原因でした。
初歩的なミスでご迷惑をかけてしまって申し訳ないです。
0541nobodyさん
02/08/13 10:16ID:O/STFm+BCookieに適当な値をセットして次のページに移動。
その値が見つからなければCookieが無効になってる。
0542526
02/08/13 12:08ID:Z6o18Dpl…して、その方法すら分からないのです。
0544nobodyさん
02/08/13 16:53ID:Yx7h0BT7>ファイルの書き込み、読み込みをCGIで行う場合には、
>必ずお客様のホームディレクトリ(環境変数$ENV{'HOME'})
>を基準に書いて下さい。
の意味がさっぱり分かりません。使えるネット等のフリースペースでは
設置できますが、ここではInternalServerErrorとなるばかりです
これはCGIをどのように書き換えれば良いのでしょうか
http://www.ogaki-tv.co.jp/internet/int_cgi/hp_cgi_chui.html
0547nobodyさん
02/08/13 17:48ID:LLsp0K0M誰か情報ください。
0548nobodyさん
02/08/13 17:54ID:cQCAQtqSphpなら
http://fitness.s7.xrea.com/index2.php
0549nobodyさん
02/08/13 17:57ID:???0550nobodyさん
02/08/13 18:00ID:LLsp0K0Mマルチて何?
0551nobodyさん
02/08/13 18:30ID:GLxdMhFgモップ片手に重複投稿するカワイイメイドロボ
■ このスレッドは過去ログ倉庫に格納されています