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
0253nobodyさん
02/07/25 11:30ID:???サーバサイドはそれで問題無い、それはクライアントの癖だな
多分IEのバッファが効いてる
>>248
ちょっと違うんじゃ無い? 要は少しずつ転送したいだけだと思う
>>252
意味不明、そんなブラウザは無い
0256nobodyさん
02/07/25 14:01ID:???2回目からはいいけど初回実行はやっぱりバッファリング
されてる感じ
0257nobodyさん
02/07/25 14:08ID:???そもそもcache関係ないじゃん。
さっきから連続で醜態晒してるな >俺
もういい!寝る!
0258nobodyさん
02/07/25 14:40ID:???$hoge =~ tr/あ-ん/ア-ン/;
print "$hoge";
これでひらがなをカタカナにする事可能ですか?
0259nobodyさん
02/07/25 14:43ID:???$hoge=~ s/あいうえお/アイウエオ/;
0260nobodyさん
02/07/25 14:57ID:???他のひらがなが入った時はどうするんですか?
0262nobodyさん
02/07/25 15:01ID:???環境ってwin2000とかの事ですか?
perlでやってます。
0263nobodyさん
02/07/25 15:07ID:FEL1JQfu0264nobodyさん
02/07/25 15:15ID:???tr/ぁ-ん/ァ-ン/;
だから、これのSJISコードをサブスティチュートで置換すればいいと思う。
0265nobodyさん
02/07/25 15:17ID:oLz9j3NEその方法を聞いてるんだがね
0267nobodyさん
02/07/25 15:23ID:???s/\x82([\x9f-\xf1])/"\x83".chr(ord($1)-95)/ge;
0268nobodyさん
02/07/25 16:02ID:???use Jcode;
my $s = Jcode->new("てきとー")->tr('あ-ん' => 'ア-ン')->sjis();
0270nobodyさん
02/07/25 16:18ID:???0271nobodyさん
02/07/25 16:23ID:???0272ハニホ・ヘニハ
02/07/25 16:23ID:???0273nobodyさん
02/07/25 16:23ID:???0274nobodyさん
02/07/25 16:29ID:???use Jcode.pm;
my $hoge = Jcode->new("てきとー")->tr('あ-ん' => 'ア-ン')->sjis();
print "$hoge";
----------------------
Internal Server Error
Jcode.pmというのをダウンロードしてcgiと同じディレクトリに置きましたが・・・。
0276nobodyさん
02/07/25 16:46ID:???jcodeをuseしないでtr〜〜♪
0277nobodyさん
02/07/25 16:58ID:???0278nobodyさん
02/07/25 17:00ID:???0279nobodyさん
02/07/25 17:05ID:???それでも駄目かも知れないけど
0281nobodyさん
02/07/25 19:05ID:???0282nobodyさん
02/07/25 19:53ID:???0283nobodyさん
02/07/25 20:05ID:???0286nobodyさん
02/07/26 00:54ID:L9BP6kAT「インストールがこの計算機で無事に終了したことを意味します。」は見れました。
また、ルートフォルダにあるhtmlファイルも開くことは出来ました。
が、CGIファイルを起動すると
Internal Server Errorが表示され、最後の行には Apache/1.3.14 Server at localhost Port 80と表示されます。
何が原因なんでしょか?(win meです)
0287nobodyさん
02/07/26 01:03ID:???ActivePerlはインストールした?
0288nobodyさん
02/07/26 01:04ID:???ttp://tohoho.wakusei.ne.jp/wwwxx048.htm
ここ見て勉強しとけ。
0289286
02/07/26 01:17ID:L9BP6kATしました。
>>288
そこに書いている設定は一通りしてみました。
が、だめでした。一度アンインストしてやり直してみても同じでした。
0290nobodyさん
02/07/26 01:21ID:???じゃあ、CGIのソースを確認しろ。
HellowWorld!試せ。
0291nobodyさん
02/07/26 01:23ID:???ってオチな気がする・・・。
0293nobodyさん
02/07/26 05:06ID:???Perlのパスが間違っているんじゃねーの?
0296nobodyさん
02/07/26 08:53ID:???Content-Typeとかね。
0298nobodyさん
02/07/26 10:29ID:???0299nobodyさん
02/07/26 10:35ID:Ppnf9uEO# ライブラリ
require 'cgi-lib.pl';
# デコードサブルーチン
&ReadParse(*form);
# ライブラリ
require 'jcode.pl';
# 文字コード変換サブルーチン
&jcode'convert(*form,'sjis');
# 連想配列から値だけを取り出し、区切りのハイフンを追加
# HTMLタグと衝突する記号などを変換
$name = $form{'name'};
# -----ここから出力 -----
print "Content-type:text/html\n\n";
print << "END_OF_HTML";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
$name
<BODY>
</BODY>
</HTML>
END_OF_HTML
上のエラー出るんだけどどこか間違ってる?
0300nobodyさん
02/07/26 10:48ID:???0301nobodyさん
02/07/26 10:54ID:Ppnf9uEO# ライブラリ
require 'cgi-lib.pl';
# デコードサブルーチン
&ReadParse(*form);
# ライブラリ
require 'jcode.pl';
# 文字コード変換サブルーチン
&jcode'convert(*form,'sjis');
# 連想配列から値だけを取り出し、区切りのハイフンを追加
# HTMLタグと衝突する記号などを変換
$name = $form{'name'};
# -----ここから出力 -----
print "Content-type:text/html\n\n";
print <<END;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
$name
</BODY>
</HTML>
END
[EOF]
またまたエラー
0302nobodyさん
02/07/26 11:00ID:???syntax OK
0303nobodyさん
02/07/26 11:03ID:???0305nobodyさん
02/07/26 16:04ID:owWjrwtahttp://love.2ch.net/test/r.i/pure/1027606635
スレタイに藁タ!
0307nobodyさん
02/07/26 17:26ID:???こんど携帯対応の掲示板を作ることになったのですが、
このタイプの掲示板ってPCか携帯かで処理を分けるのですよね??
それはどのように判別するのですか?
また、携帯対応掲示板を作る上での注意点などありますか?
0308307
02/07/26 17:28ID:JyrdDHk30309nobodyさん
02/07/26 17:33ID:???$ENV{"HTTP_USER_AGENT"}
ただし、どんな場合でもすでにあるものを見た方がはやい。
「携帯 対応 掲示板 CGI」で検索すれ。
0311307
02/07/26 18:02ID:JyrdDHk3素早いレスありがとうございました!
”携帯対応無料BBS!”なんてのはいっぱい見つかったけど、
肝心の中身がみれないしなぁ・・・と思っていたら、
検索キーワードに”CGI”を付ければいいわけですよね
ああ、漏れって逝ってよしです・・・
早速またググってきます。ありがとうございました
0312nobodyさん
02/07/26 23:57ID:???print "Content-type: text/html\n\n";の変わりに書くとページを開いた瞬間に移動し、
cgiの最後に記述すると、移動しないです。
掲示板なんですが、別ページでフォーム記入し、送信すると書き込みのページを表示したいのです。
0315nobodyさん
02/07/27 01:37ID:???レンタル鯖で動いていたCGIを自前の鯖で動かすべく赤帽で鯖組んでみました。
すると405エラーが出てきてどこをどうすればいいやら途方に暮れてます。
The requested method POST is not allowed for the URL /form/form2mail.cgi.
っていわれてるんですけど、どこを見ればいいでしょうか?Apache/1.3.22 です。
教えて君ですまそ
0317☆
02/07/27 04:05ID:QFoQxGUe0318nobodyさん
02/07/27 07:45ID:QHfRaVBXダウンロードのダイアログが開かずに再生をはじめてしまいます。
Contents-Typeはapplication/octet-streamにしています
出力するファイルの拡張子を.binなどにすると、ちゃんとダウンロードのダイアログが開きます。
サーバ側の設定だけで拡張子をmp3のままダウンロードをさせたいんですが、どうすればいいのでしょうか。
0321nobodyさん
02/07/27 09:13ID:???MIME/拡張子から判断ではなく、ファイルの先頭を見て自分で勝手に判断する。
GIF89a が最初にかかれているテキスト文ですら、GIFと誤認する。
0323315
02/07/27 10:11ID:???httpd.confを見直してAddHandler cgi-script .cgi pl のコメントを解除したら動くよう
になりました。ありがとうございました。
0324nobodyさん
02/07/27 20:45ID:iu2+Su0iこのCGIにパスワードをつけたいと思っています。
どうすればいいでしょうか?
スレ違いでしたらすみません。
ttp://www.gem.hi-ho.ne.jp/fortunefield/cgi/fflog.html
0325nobodyさん
02/07/27 21:00ID:???どうぞ。
ttp://pc.2ch.net/test/read.cgi/php/1012839651/
スクリプト改造工房 Part4
0326324
02/07/27 21:15ID:???誘導ありがとうございます。
行ってみます。
0327nobodyさん
02/07/27 22:07ID:k7snFjtSexit はプロセスを終了する関数とのことですが、web用のcgiでしか
プログラム作成経験していない僕には、いまいち感覚的に、何が
どう終了するのかわかりません。
web用のcgi専門なので、今ははだいたい、ブラウザに画面を出力する前に
いろいろ処理して、表示が終わったところで exit という風にしか使っていません。
だからほとんどHTMLフッター書き出しようのサブルーチンの最後ぐらいにしか
僕のプログラムにはexitってでてこないんですが。別に問題ない?
例えばこんな感じで。
代わりにdieで済ませることも多いけどね。
#!perl
use Getopt::Std;
our $opt_h;
getopts 'h';
if($opt_h)
{
print <<HELP;
$0 [-h]
-h ヘルプを印字して終了する
... その他、簡単な説明
HELP
exit;
}
# いろいろと処理…
__END__
ちなみに、使用しなくても全然問題ないので、無理して使う必要は無いです。
0329nobodyさん
02/07/28 03:52ID:W8D+zAzJttp://www.gt.sakura.ne.jp/~ocosama/garakuta/soft/paintbbs/pbbs.html
どうも文字サイズが小さくならないんです。
http://maebari.net/oekei/bbsnote.cgi
この程度まで全ての文字を小さくしたいのですが、
どうすればできるんでしょうか?
CGIの設定ページには文字サイズの設定がないし、試しに「oekaki.cgi」の中の
FONT SIZEをすべて1にしてみましたが、全く変化がありませんでした。
どなたか教えてください。お願いします。
0330329
02/07/28 03:52ID:???あ、「Web制作板」の
☆ Webサイト制作初心者用スレッドver28 ☆
http://pc3.2ch.net/test/read.cgi/hp/1027428903/
からの誘導です。
0331329
02/07/28 03:57ID:???http://pc.2ch.net/test/read.cgi/php/1012839651/
ってのがありました。
焦りすぎてこっちで質問してしまいましたが、あっちで質問してきます。
すみませんでした。
0332nobodyさん
02/07/28 17:05ID:Q5YYp1UwWin2000proのIIS5.0を使ってるんですが、
SSIを使った.shtmlファイルを出そうとすると
「CMD のオプションは #EXEC の呼び出しに対して使用可能になっていません」
と出てしまいます。
IISの設定は、
.shtmlと.shtmと.stmに
「C:\WINNT\System32\inetsrv\ssinc.dll」
を「GET,POST」に制限した動詞で設定してあります(初期設定のままです)
どうすればいいでしょうか?
0333nobodyさん
02/07/28 19:58ID:???0334nobodyさん
02/07/29 02:17ID:???cgiですか?
0335nobodyさん
02/07/29 11:39ID:t/nKwjTfセッションは立ち上げるブラウザのウインドウごとに違うと
思っていたのですが、同一の場合がでてしまいます。
再現しないの困っているのですが、どなたか原因を知りませんか?
IE5.5でファイルメニューから新規作成->ウインドウとやると
同じセッションになるようなのですが、今は普通にデスクトップの
IEのアイコンをたたいて立ち上げているのですが。
0336nobodyさん
02/07/29 15:00ID:???そのデータテキストから検索をしたいとします。
1,太郎,はじめまして。
2,花子,いい天気ですね。
3,名無し,逝ってよし
4,nobody,キタ━━━━━━(・∀・)━━━━━━!!!!
・・・・
こういうのがあって、で検索は名前と内容が条件です.
名前が○○で、本文に○○がある時、その投稿を抜き出します。
条件は一つでもいいです。
if(($name eq "$input_name") and ($content =~ /$input_content/)){
テキストファイルを開いて、printする。
}
$input_***は利用者が入力した文字列です。
で、どっちか片方でもいいので変数が空になる時もあります。
本文に○○があるのを抜き出せと命令が来たら、
名前が空に一致するわけないので条件に合うものは当然ゼロとなります。
この例だと条件が二つなので地道に3通り条件をif文で書けばいいかもしれないけど条件が多くなった時は大変です。
どうやったらうまく書けますか?
入力された変数が空かどうかを見て、if文を変数にどんどんつなげて作っていく方法が
あると思うんですけど、それってSQL文とかでDBに渡すときしか意味ないですよね。
$hoge = "($a eq $aa)";
if $hoge {
}
こうやったら出来なかったので。(当たり前だって怒られると思いますけど)
0337nobodyさん
02/07/29 15:18ID:???0338nobodyさん
02/07/29 15:28ID:???0339nobodyさん
02/07/29 15:28ID:S3zWiKSWファイル(圧縮ファイル)をダウンロードできるようにしたいのですが
どうすればいいのでしょうか?
ぜひ教えてください
0340nobodyさん
02/07/29 15:28ID:???0342nobodyさん
02/07/29 15:42ID:2AYT60/o0343nobodyさん
02/07/29 17:01ID:hJ6YB5taダイヤルアップ環境からアクセスしたところ、index.htmlは表示されるのですが、そこにFORM action="./test.cgi"で仕込んだ
cgiを実行しようとすると、ユーザー名とパスワードを入力するダイアログが出て困っております。
「ディレクトリセキュリティ」では「匿名アクセスを許可する」にチェックを入れております。usr/binもエイリアス切ってます。
どこが問題か、訳がわからなくなってしまいました。
どなたかお助けください。よろしくお願いいたします。
0344nobodyさん
02/07/29 18:07ID:YroFxsp9my $hoge;
sub hoge {
$hoge=2;
}
↑こんなmyの使い方をしているスクリプトの作者がいたんですが
これって意味があのでしょうか?
それは混乱を招きやすいね。
でもまぁ理解した上で使ってるなら敢えて文句を言おうとは思わないけど。
0346nobodyさん
02/07/29 22:57ID:luhGHKEGhttp://www.tekipaki.jp/
今OCNのPageOnサーバーを使っていて、
このサーバーはCGI用に借りました。
カウンタを表示させようとしているのですが、
違うサーバーにCGI本体をおいて、ページ上で使うにはどうすればいいんでしょうか?
違うサーバーのほうにページを移動すれば一番いいのですが、
かなり読み込みが遅いので、できれば今のままのサーバーを使いたいんです。
どなたか教えてください。お願いします。
0347nobodyさん
02/07/30 01:24ID:klN51cmM新しいバージョンでは変数の構成が違うんです。
そこで,HTMLフォームに入力した旧バージョンの変数の中身を,
新しいバージョン用に書き換えるといったものを作り始めたところ
壁にぶつかりました。お願いいたします。
まずは変換前の変数を入力するための,sub form1を実行します。
(入力する項目:@hairetu1 @hairetu2 $scalar1)
次にform1で入力された配列変数を分割したいので,
その範囲を入力するフォームと配列の中身の一覧を出します。(sub form2)
(入力する項目:$scalar2 $scalar3)
この時点では@hairetu1 @hairetu2 $scalar1にはform1で入力された内容が入っている。
最後にsub form3,変換された変数の中身を表示する…という予定だったのですが,
ここに来るとform1で入力した@hairetu1 @hairetu2 $scalar1が空っぽになってしまってます。
form2で入力した$scalar2 $scalar3にはちゃんと中身が入っています。
どうして@hairetu1 @hairetu2 $scalar1が空になってしまったのかがわかりません。
手持ちの解説書を読んでも,特に指定しない限りグローバル扱いされるとありますし。
どうかお願いします。
0349347
02/07/30 01:51ID:klN51cmM# HTML出力
print "Content-type: text/html\n\n";
print <<"EOM";
<html><head><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"><body>
EOM
if ($mode eq 'form2') { &form2; }
if ($mode eq 'form3') { &form3; }
if ($hairetu1[0] eq '') { &form1; }
print "</body></html>\n";
#フォームその1
sub form1{
print "<form action=\"$script\" method=\"$method\">\n";
print "<input type=hidden name=mode value=\"form2\">\n";
print "<p>配列その1 例:)'1','2','3'";
print "<input type=\"text\" name=\"hairetu1\" maxlength=\"100000\">\n";
print "<p>配列その2 例:)'1','2','3'";
print "<input type=\"text\" name=\"hairetu2\" maxlength=\"100000\">\n";
print "<p>\スカラーその1";
print "<input type=\"text\" name=\"scalar1\">\n";
print "<input type=\"submit\" value=\"次へ\">\n";
print "</tr>\n</table></form>\n";
}
0350347
02/07/30 01:54ID:klN51cmMsub form2{
print "<form action=\"$script\" method=\"$method\">\n";
print "<input type=hidden name=mode value=\"form3\">\n";
print "<div align=\"center\">\n";
print "スカラーその2<input type=\"text\" name=\"scalar2\"><br>\n";
print "スカラーその3<input type=\"text\" name=\"scalar3\"><br>\n";
print "<input type=\"submit\" value=\"表\示\">\n";
print "</table></form>\n";
$FORM{'hairetu1'} =~ s/'//g;
$FORM{'hairetu2'} =~ s/'//g;
@hairetu1 = split(/,/,$FORM{'hairetu1'});
@hairetu2 = split(/,/,$FORM{'hairetu2'});
$scalar1 = $FORM{'scalar1'};
}
# フォームその3
sub form3 {
$scalar2 = $FORM{'scalar2'};
$scalar3 = $FORM{'scalar3'};
print <<"EOM";
<table border align="center">
<tr><th>\@hairetu1</th><td>@hairetu1</td></tr><tr><th>\@hairetu2</th><td>@hairetu2</td></tr>
<tr><th>\$scalar1</th><td>$scalar1</td></tr><tr><th>\$scalar2</th><td>$scalar2</rd></tr>
<tr><th>\$scalar3</th><td>$scalar3</td></tr></table>
EOM
print "<br><br><br>";
}
0351347
02/07/30 02:10ID:???■ このスレッドは過去ログ倉庫に格納されています