CGIだけど、なんか質問ある?part4
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/09/18 18:17ID:plR9HC2Eprint<<HTML_END;
<a href="http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833" target="_blank">旧スレ</a>
HTML_END
0002名無しさん@お腹いっぱい。
01/09/18 22:54ID:???ご苦労様。
で、もしかして、文字コードはShift_JISだったりしますか?
0003名無しさん@お腹いっぱい。
01/09/18 23:57ID:ZqP657yQPerlメモ
ttp://www.din.or.jp/~ohzaki/perl.htm
perl使うなら、ココを利用するのは最早常識(?)
0004910
01/09/19 00:55ID:v6S8gYt2内容の要約「256バイト以上書き込めないワナ。」
ありがとうございました。無事解決しました。
お礼に掲示板をご披露させていただきたいけど、じつにヘンテツない
掲示板なんです…。
ほんとにどうもありがとう。
0005エラー表示@受け売り半分
01/09/19 02:14ID:???# error.txtにメッセージを書き出す、みたいです。
# ブラウザ表示とかもできるみたい。
# http://member.nifty.ne.jp/hippo2000/perltips/CGI/Carp.html
BEGIN {
use CGI::Carp qw(carpout);
open FH, ">> ./error.txt";
carpout(*FH);
}
# KCatch.pm-アプして使う
# エラーメッセージをブラウザに表示
# http://www.kawa.net/works/perl/catch/KCatch-j.html
use lib '/home/username/'; #アプしたディレクトリ
use KCatch;
0006 ´_ゝ` オイラ親切さん
01/09/19 06:14ID:Rf9.LNyUニュー速板では、あきらかにウイルスだと言う人も
出てますが、どうなんでしょう?
関連スレ
MSNにウィルス添付?
http://news.2ch.net/test/read.cgi?bbs=news&key=1000822776
0007名無しさん@お腹いっぱい。
01/09/19 06:44ID:???ニュー速板でも何回も書かれてるじゃねぇかYO!
http://www.symantec.com/region/jp/sarcj/data/w/[email protected]
0008 ´_ゝ`
01/09/19 08:33ID:???ゴメンナサイ。
0009
01/09/20 13:32ID:3iR0iWdA0010名無しさん@お腹いっぱい。
01/09/20 19:50ID:???use constantを使用して書き直していました。
$KEY = "AppName";
を
use constant KEY => "AppName";
とします。
ところが、別の場所では、この値をハッシュのキーにしていました。
ハッシュのキーに、定数を渡す方法がわかりません。
$hash{$KEY}
を書き直す場合は、どのように書けばよいのでしょうか?
0011JAPU@仕事下さい。(笑)
01/09/20 20:19ID:???0012名無しさん@お腹いっぱい。
01/09/20 21:44ID:???なるほど、そうやるのですか。
どうもありがとうございます。
0013名無しさん@お腹いっぱい。
01/09/20 21:52ID:???00143キャリア対応
01/09/20 22:32ID:???その中で、
$cgi->redirect('url');
と、リダイレクトしている箇所があるのですが、up.browser3.3のように、とある機種で、
「Found redirection nut url not provided...」
と出てしまう事があります。
なにかご存知の方がおりましたら、お知恵をお貸しできませんでしょうか?
0015名無しさん@お腹いっぱい。
01/09/20 22:54ID:???upbrowserはLocationヘッダを解釈できない気が。
0016名無しさん@お腹いっぱい。
01/09/21 09:03ID:nHXPpHxc質問してよろしいでしょうか?(スレ違いでしたらごめんなさい)
過去ログ自動作成機能付きの掲示板を設置しているのですが、
新規に記事の書き込みや削除などを行うと、
「エラー Can't open logfile」
と表示され、過去ログが見れなくなってしまうのです。
過去ログの入っているディレクトリのパーミッションは
このCGIの指定通り「777」に設定していますが、
確認すると勝手に「666」に変更されている場合があります。
あらためて「777」に設定し直すと、読み込みが可能になる
のですが、新規に書き込みをすると同じエラーがでます。
これは何か設定に間違いがあるのでしょうか?
使っている掲示板は
http://sk.redbit.ne.jp/~tboard/cgiroom.html
のtboard009というタイプです。
本当は作者の方に質問すればよいのでしょうが、
サポート掲示板が閉鎖されているので、こちらでお尋ねします。
よろしくおねがいします。
00173キャリア対応
01/09/21 09:43ID:???回答、ありがとうございます。
Location ヘッダが解釈できないって本当ですか!?
そうだったんですか。。。
うーん、どうしよう。。。
あと、調査してみたんですが、Up.Browser4.0 は cgi オブジェクトで、リダイレクトはしてくれます。
が、その処理を telnet 上で実行し、返されたヘッダ等を print 文でそのまま書くと、エラーになるんですよね。
不思議です。
001816
01/09/21 10:10ID:???CGIプログラムの中に過去ログファイルのパーミッションを自動的に
666にするという項目があって、そこをoffにするだけのことだった
みたいです。
0019mono
01/09/23 06:49ID:WDk3zB9E今共有サーバー運営しています。
telnet.cgiが共有サーバーに置かれていて、
このtelnetと同じ動作をするCGIの制御を殺したいのですが
何かいい方法はありませんか?
0020JAPU@サイトは一応完成
01/09/23 10:24ID:???少なくとも私には何をやりたいのか全く読み取れませんでした。
0021名無しさん@お腹いっぱい。
01/09/23 11:09ID:???シェルアクセスを禁止してるけど、
個別にtelnet.cgi(print `$cmd`;)置かれるから意味が無いってことでしょ。
FreeBSDでjail環境にすればいいんじゃないかな。
0022-
01/09/23 11:46ID:my6tpUlshttp://members.tripod.co.jp/bingo852/
0023名無しさん@お腹いっぱい。
01/09/23 23:29ID:OUfu57AIどなたかご教授お願いいたします。
http://file-okiba.tripod.com/login.cgi.txt
パスワ−ドをクッキー保存する俺って。
0024名無しさん@お腹いっぱい。
01/09/23 23:33ID:???0026つーか。。
01/09/23 23:41ID:???0027定期上げ
01/09/26 07:24ID:???0028名無しさん@お腹いっぱい
01/09/27 14:52ID:yTHL.Q7Eディレクトリは掘りますが、ファイルは空の残骸すら出来ません。
MIMEはバラせてるので、他のformデータを見る限りデータは取れています。
$upfile=ファイル名
$updata=ファイル
if ($upfile ne "") {
mkdir "$htmlpath/$board/file/${loge}_${sub}", 0755;
$upfile_name = "$htmlpath/$board/file/${loge}_${sub}/${append_file}";
open(OUT,"> $upfile_name") || &error("ファイルのアップロードに失敗しました","lock");
binmode(OUT);
print OUT $updata;
close(OUT);
chmod (0666,$upfile_name);
}
なぜでしょう?
教えてくださいませ
0029名無しさん@お腹いっぱい。
01/09/27 15:11ID:hez/Y7fQそのまま掲示板に掲載することのできるCGIはありませんか?
0030名無しさん@お腹いっぱい。
01/09/27 17:14ID:???0031名無しさん@お腹いっぱい。
01/09/27 22:04ID:???umaskの設定のせいで、掘ったディレクトリが0755になってないのでは?
003228
01/09/28 00:18ID:w43RMk9g一応再確認しましたが、755になってます
正直open〜chmodの流れはサンプルのコピペなんで欠けが無いか
不安です。
ログファイルでも作るしかないですかね。
0033名無しさん@お腹いっぱい。
01/09/28 01:29ID:???ファイル作る位調べれば一杯出てくるから。
$upfile_name に�dでもない値が入ってる辺りが有力
${append_file}にダメ文字とかね
取り合えずファイル作ったり消したりして遊んでみれ
0034名無しさん@お腹いっぱい。
01/09/28 01:48ID:???そういう掲示板を提供してるサービスがいくつかあるから
調べればいいよ。じゃーね。
自分で設置したいの? やめといたほうがいいって。
003528
01/09/28 02:15ID:w43RMk9gサンクス
明日試してきます
003628
01/09/28 02:18ID:w43RMk9gupdataの中身を失敗していた場合でもopen〜closeしたらガラは
残りますよね?
0037名無しさん@お腹いっぱい。
01/09/28 03:17ID:D2ua77aU&error("ファイルのアップロードに失敗しました$!","lock");
$!を入れればエラーメッセージ表示できないだろうか
0038名無しさん@お腹いっぱい。
01/09/28 12:53ID:???ついでに
&error("${upfile_name}のアップロードに失敗しました$!","lock");
と書けば、ファイル名も確認できるな
003928
01/09/28 17:00ID:hZeMEb.6ヤハーリupfile_nameがおかしかったです。
2chタイプ掲示板(megabbs)なので、管理がグチャグチャで難儀してましたが
無事動作しました。
0040名無しさん@お腹いっぱい。
01/09/28 17:07ID:???0041お願いします
01/09/28 18:25ID:???暗号化されていますが、
それを単純に.htaccessを入れたフォルダの
認証に使えますか?
例えばkentさんのアクセス制限cgiで出来た
パスワードfileを、そのcgiからの認証に
使わないで他のcgiや単に.htaccessを入れて制限した
htmlのアクセス制限に使えるでしょうか?
0042名無しさん@お腹いっぱい。
01/09/29 12:57ID:9B0lqUxs(ウェブゴング以外で)
0043名無しさん@お腹いっぱい。
01/09/29 13:06ID:???0044名無しさん@お腹いっぱい。
01/09/29 15:09ID:0rQ/9w3k.htaccessのユーザ認証で使うパスワードファイルは、各行ごとに
ユーザ名:cryptされたパスワード
という形式なので、それと同じなら使えるです。
>例えばkentさんのアクセス制限cgiで出来た
>パスワードfile
これはどんなフォーマットになってるんですか?
0045名無しさん@お腹いっぱい。
01/09/30 00:27ID:eXFd9tX6ダウンロードになってしまうのですが認識させ実行するには何か
設定がたりないのでしょうか・・
0046名無しさん@お腹いっぱい。
01/09/30 13:44ID:QtyCszVEデコード部分でイチバン最適な書き方ってありますか?
(オブジェクト指向スタイルでもok)
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} else {
$buf = $ENV{QUERY_STRING};
}
foreach ( split(/&/, $buf) ) {
my ($name, $value) = split(/=/, $_);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$form{$name} = $value;
}
0047名無しさん@お腹いっぱい。
01/09/30 14:17ID:???コードの文字数を減らしたいのか。
CGI.pmとか使いたくないなら、普通は上の定石でいいと思うが。
#ただしpackのとこは pack("H2",$1) のほうが効率いい。
そういや前に誰か、一度に$bufに読まないで1文字ずつ読んで
デコードするという省メモリ方法を提案してたねえ。
このスレだったか、別スレだったか。。
0048名無しさん@お腹いっぱい。
01/10/01 02:33ID:4de04BqAなかなかみつかりません。どなたか知りませんか。
0049名無しさん@お腹いっぱい。
01/10/01 02:43ID:???いまは無きチャットスレの,252chatにこんなのがあった。
#POSTデータをデコードして%POSTに格納
sub decode_postdata {
my $i;
read(STDIN,my $buffer,$ENV{'CONTENT_LENGTH'});
%POST = map {
if($i++%2){
tr/+/ /;
s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2",$1)/eg; #thx2 349
s/&/&/g;
s/"/"/g;
s/</</g;
s/>/>/g;
tr/\x00-\x1f//d;
}
$_;
} split /[&=]/, $buffer;
}# thx2 320
0050名無しさん@お腹いっぱい。
01/10/01 02:46ID:???10行なくてできるため自作したほうが早いと思われ。
つーかスレ違い。
0051名無しさん@お腹いっぱい。
01/10/03 00:49ID:???掲示板にアクセスされたときに、閲覧者のクッキーの情報の
ログを採りたいのですが、良い物ないでしょうか。
0052名無しさん@お腹いっぱい。
01/10/03 01:57ID:52wgSISsいちおう念のために聞いておきますけど、
自分のサイトで発行したクッキーだけでいいんですね?
いや以前どっかのスレで、訪問者のPCに入ってるクッキーを
セキュリティホール突いて全部取得したいとかいう
邪悪なやつがいたので。。。
0053FREAKES
01/10/03 02:23ID:iOlT3ZggCGIの掲示板をおいたところ自分で見ることは、できたのですが
友達に見てもらってもエラーがでてしまいます
パーミッションが違うと言われましたが
どうなんでしょう
WINだとパーミッションは、関係ないと思うのですが
ぜひ、お願いします
http://www.freakes.dyn.to/
0054名無しさん@お腹いっぱい。
01/10/03 02:34ID:rmSH5DLsそら見れんワ
0055FREAKES
01/10/03 02:37ID:iOlT3Zggマジで困っています
教えていただけませんか?
0056名無しさん@お腹いっぱい。
01/10/03 02:38ID:???0057名無しさん@お腹いっぱい。
01/10/03 03:00ID:???マルチポストやめれ
127.0.0.1で見れるわけがない
0058名無しさん@お腹いっぱい。
01/10/03 18:08ID:???俺だったら氏ねの一言で終わりだもんな。
0059名無しさん@お腹いっぱい。
01/10/04 14:04ID:nOAoqb9Aできるでしょうか(ウィンドウが2つ開く感じ)。
0060名無しさん@お腹いっぱい。
01/10/04 14:38ID:nOAoqb9Aそれぞれ違うCGIを呼び出すことは可能でしょうか。
submitにname=を付けて区別するというところまでは
わかったのですが、actionでどう指定したら良いかが
わからないのです。
0061名無しさん@お腹いっぱい。
01/10/04 14:47ID:???$name=<STDIN>;
if($name eq "60"){
print "逝って良し";
}
0062名無しさん@お腹いっぱい。
01/10/04 14:50ID:ZexXU3iQ$name = '61';
if($name == 61){
echo "61=ドキュソ";
}
?>
0063名無しさん@お腹いっぱい。
01/10/04 15:20ID:???糞も無いと思うのだが。
>>60
submit で actionするCGI を変更するには javascriptを使う必要があります。
CGIでは出来ません。
Web製作板へのJavaScript質問スレッドへどうぞ。
# cgiでどのsubmitボタンが押されたか判別してredirectする方法も有るけど。
0064名無しさん@お腹いっぱい。
01/10/04 15:33ID:nOAoqb9AWeb制作板へ逝ってきます。
0066名無しさん@お腹いっぱい。
01/10/05 13:38ID:uprQiXAY質問させてください。
1つの掲示板で、多言語OKにするには、どうしたら良いのでしょう?
現在、アメリカの無料ゲストブックを借りて使っていますが、自前のものに
替えたくて、いろいろと探しています。
日本のCGIだと、jcode.plが必須で、それだと中国語等はどうもうまく行かない
ような気がします。
日本のCGIから日本語機能(?)を取り除く方法ってありますか?
0067名無しさん@お腹いっぱい。
01/10/05 16:44ID:xs79T5cc日本語で書き込まれても中国語で書き込まれても、
文字コードをUTF-8に統一して保存および表示すれば、
混在可能だと思う。
特定の文字コードをUTF-8にコンバートするのは難しくない。
今のunixにはlibiconvという文字コード変換ライブラリや、
それを使ったiconvコマンドがあるし。
問題は書き込まれた文字コードの判定だ。
日本語だけという条件であっても、自動判別させようと思うと
Shjift_JISとEUC_JPを間違えることがあるぐらいだから、
中国語が入ったらさらに混乱必至ではないか(想像ですけどね)。
だったらブラウザから書き込むときに、もう最初っからUTF-8で
送信させればいいわけだ。
それは具体的にどうするか、ってのは正直スマンが知りません。
誰かフォロー頼む。
0068名無しさん@お腹いっぱい。
01/10/05 16:46ID:???>日本のCGIから日本語機能(?)を取り除く方法ってありますか?
ありますよ。でもスクリプト見ないと何も言えない。
006966
01/10/05 18:26ID:IlecsqKU現在使っているフリーのゲストブックはアメリカものなので、間違いなく
jcode.plは無関係で、英語はもちろん、中国語Big5,中国語GBでも
書込みOKです。(ブラウザで文字コードを変えればきちんとそれぞれ
読めます。当然、同時に全てをきちんと表示することは出来ませんが、
読めれば良いので問題ありません。)
ですから、英語のゲストブックCGIを使えば良いのでしょうが、ただでさえ
CGI素人なのに英語では更に厳しいので、日本のCGIを使いたいと思った
わけです。
>68さん
いただいて来たスクリプトをテキストでアップしてみました。
↓
ttp://members.tripod.co.jp/k_napper/nyaponika.txt
これのどこを削ったりアレンジしたりすれば良いのか、ちょっと
わからないのです。
ご教授いただけると、とっても助かります。
0070名無しさん@お腹いっぱい。
01/10/05 19:47ID:???CGI改造スレのほうに回答が誤爆されてたヨ
http://ebi.2ch.net/test/read.cgi/php/988808396/392-394n
0071名無しさん@お腹いっぱい。
01/10/06 02:00ID:MEgHrhMksplit("\n", $data)
でいいのでしょうか? 改行コードってどんな端末からでも\n?
0072名無しさん@お腹いっぱい。
01/10/06 02:12ID:???普通は $data =~ s/\r\n|\r/\n/g; こんなのが前に入る
0073名無しさん@お腹いっぱい。
01/10/06 02:41ID:MEgHrhMk0074名無しさん@お腹いっぱい。
01/10/06 02:49ID:???CGIでテキストデータを生成して、クライアント側に
保存させるにはどうやったら良いのでしょうか?
テキストデータには、text/plainなどのヘッダを
付けたくないのです。
0075名無しさん@お腹いっぱい。
01/10/06 03:34ID:???もろにCGIの仕様に引っ掛かるもん
単にクライアントにコピペで保存してもらうだけなら
テキストエリアに吐き出してREADONLYとでもしとけば良いけど。。
ヤバ文字が含まれそうだったらちゃんとエスケープしてね。
無料サーバのファイルマネージャみたいな感じで
0076名無しさん@お腹いっぱい。
01/10/06 03:34ID:KSO8kPZMhttp://natto.2ch.net/test/read.cgi?bbs=hp&key=999946244&st=804&to=804&nofirst=true
0077名無しさん@お腹いっぱい。
01/10/06 03:59ID:???適当にまとめると,
クッキーで連続投稿を防止しようとしてるが,IEとネスケで動作が違う。実装の違いを教えれ。
ってことかな?
クッキーは勝手にネスケが開発してたので
仕様はnetscapeのサイトにあったはず。
W3Cの規格にはまだなってない。
ブラウザごとの実装の違いは知らない。
クッキーは拒否されることもあるので,
連続投稿規制はサーバーにIPとかを保存するようにするのが一般的。
0078JAPU
01/10/06 04:16ID:???(RFC 2109: HTTP State Management Mechanism)
Netscape のサイトにあるのはこれだね。
http://www.netscape.com/newsref/std/cookie_spec.html
# Netscape のサイト分かりにくすぎ。
0079名無しさん@お腹いっぱい。
01/10/06 09:27ID:???えっと、テキストデータを生成して、保存させるための
ダイアログを出したいという感じです(あとはクライアントに
おまかせ)。
できればこのとき、デフォルトのファイル名もこちらで
準備したいです。
0080名無しさん@お腹いっぱい。
01/10/06 10:32ID:???ヘッダを、
Content-disposition: attachment; filename="hoge.txt"
Content-type: application/octet-stream
にしたときは、ブラウザは保存ダイアログを出すべきだ、
…とRFC2616の19.5.1節に書いてあるよ。
ただし強い勧告(SHOULD〜)じゃなくて弱気な勧め(should〜)だし、
すべてのブラウザがこのRFCに準拠してるかどうか、非常に疑わしい。。。
昔のIEなんかだと、どんなHTTPヘッダを付けても
中身がテキストっぽければ画面に表示しちゃったからなあ。
0081名無しさん@お腹いっぱい。
01/10/06 10:48ID:???そう言う意味だったのかー、ゴメソ
昔テキストのDLカウンター付けたくてちょっとやった事があったな
僕も>>80氏に激しく同意です。mustにして欲しい所だ
application/zipとか吐けばかなりの確立でDL窓出せるんだけどねー
ただCGI通したいだけならLocationで飛ばすとか
0082名無しさん@お腹いっぱい。
01/10/06 10:49ID:???application/zip吐くとファイル名が.cgiになるので凄くダサいです
今のブラウザの実装は知らないけど
■ このスレッドは過去ログ倉庫に格納されています