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
0435nobodyさん
02/08/05 14:49ID:???0436nobodyさん
02/08/05 14:54ID:???短時間に何回もアップロードやりまくってたらエラーが出たんでサーバーが疲れてたのかもしれません。
0437nobodyさん
02/08/05 15:24ID:???0438nobodyさん
02/08/05 20:21ID:Cv0Vcdj10439nobodyさん
02/08/06 16:13ID:ov0Bn0l9xmlをhtmlに変換する事はできますか?
xmlとxslだけではIEでしか表示できないので普通に手作業で、
msxsl.exeを使ってhtmlへ変換していましたが
今回はcgiでxmlを生成してそこからhtmlへ変換することになったのです。
なのでmsxsl.exeの役割をcgiの中でも出来るのかどうかというわけなのです。
0440nobodyさん
02/08/06 16:18ID:ov0Bn0l9という話です。
0441トウモロコシ
02/08/06 18:39ID:AiGWWT1t0442nobodyさん
02/08/06 18:46ID:???HTTP圧縮の際にも利用される。
0443トウモロコシ
02/08/06 18:51ID:AiGWWT1t0444nobodyさん
02/08/06 18:54ID:+CLAZ6EKcgiからの出力を、ブラウザの戻るボタン押下時に意図的にリ
ロードさせたいだけなんですが。。。
<%
Response.AddHeader "Expires", "0"
If Request.ServerVariables("SERVER_PROTOCOL") = "HTTP/1.0" Then
Response.AddHeader "Pragma","no-cache"
Response.CacheControl = "no-cache"
Else
Response.CacheControl = "no-cache"
End If
%>
とか
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
とか
試したんですが無理でした。
誰かよろしくお願いしますっ!
0445nobodyさん
02/08/06 19:21ID:???ttp://tohoho.wakusei.ne.jp/wwwxx008.htm
0446nobodyさん
02/08/06 19:30ID:???CGI 利用可能なレンタルスペース(鯖?)
ではだいたい Jcode.pm は使えるのでしょうか?
0448nobodyさん
02/08/06 20:10ID:???<meta> タグで漢字コード euc-jp 指定して、
CGI の出力も EUC-JP にしてるのに Mozilla
で文字化けするんですけど、どうにかなりませんか?
ブラウザのフォントを日本語(EUC)にする。
0450nobodyさん
02/08/06 20:28ID:???AutoDetect して欲しいんです。
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:???■ このスレッドは過去ログ倉庫に格納されています