CGIだけど、なんか質問ある? Part 8
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/09/22 23:15ID:???※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
↓
Perl 初心者コーナー Part16
http://pc.2ch.net/test/read.cgi/php/1032070299/l50
過去ログ・関連スレッドは >>2
フルパスを得られたんだから加工すればいいじゃん…。少しは自分の頭を使いましょう。
まぁマジレスすると、普通はCwdモジュールを使います。
#!perl -w
use Cwd qw(getcwd);
use File::Basename qw(basename);
my $curdirname = basename getcwd();
print $curdirname, "\n";
__END__
0118ほっとぞなー
02/10/06 00:11ID:b+S20Ecqメールだけを使って対戦ゲーム(例えばオセロ)をする仕組み
を作ることは可能でしょうか?
具体的には、自分の指し手をホストにメールで送って
ホストはその手を反映させた盤の情報をプレイヤー達に
メールで送りつける、というようにします。
このような仕組みをつくる手がかり、ヒントを下されば幸いです。
0119nobodyさん
02/10/06 00:40ID:???練鯖でやると仮定して。
できる。
http://member.nifty.ne.jp/hippo2000/perltips/rcvmail.htm
これを読めば、メールを受け取る仕組みはわかるだろう。
後は、すぐに反応をさせたい場合は、cronを調べるべし。crontabとかで検索せよ。
0120nobodyさん
02/10/06 01:18ID:???CGIでやる意味はないな。Webプログラミングってわけもないので板違い。
メール受け取ったSMTPがプログラムに投げて、
そのプログラムが結果をメール送信するだけでしょ。
.forward あたりを調べて、わからなかったら
プログラム自体の質問はプログラム板へ、
メールをプログラムに投げる方法ならUNIX板へどうぞ。
0121ほっとぞなー
02/10/06 01:24ID:b+S20Ecqご丁寧なアドバイスどうもありがとうございました。
とても参考になりました。
あとは自分でがんばってみます。ありがとうございました。
0122CGI@リファラーでいいですか?さん
02/10/06 03:19ID:tpCDZSk3掲示板で
”指定したフォーム以外からの書き込みを無効にする”場合
リファラーを参照して、照合すればよいでしょうか?
心配なのが、リファラーを返さないブラウザがあったらどうしようってことなんですが、
そんなブラウザってあるんでしょうか?
あと、他にいい方法とかありましたら、どうぞご教授お願いします。
0124nobodyさん
02/10/06 04:44ID:???単純にはREFERERのみで良いと思われ。儂もそうする。
手のこんだことをするなら、動的に変わる隠し変数みたいなので不正アクセスをはじくとか。。。
i-modeかなんかでREFERER返さないものってなかったっけ。
逆にあやしいブラウザだと、REFERERを偽れるので、そっちの方が心配だと思われ。
0125nobodyさん
02/10/06 04:53ID:???0126nobodyさん
02/10/06 10:05ID:???0127nobodyさん
02/10/06 12:28ID:???「Referer リクエストヘッダの除去」といページがある。
http://www.st.ryukoku.ac.jp/~kjm/security/memo/referer.html
フォームの生成も動的にできるなら、
>>124 さんの方法がイイかも。
0128どっげぇマーチン
02/10/06 17:24ID:6RfgQjkthttp://news2.2ch.net/test/read.cgi/newsplus/数字/
とかでスレとかを指定してますが、read.cgiにこの数字はどうやって渡しているんでしょうか
普通なら
http://news2.2ch.net/test/read.cgi?cate=newsplus&thread=1033647903
ってこんなふうにすると思うんですが。
mod_rewriteを使えば可能なのかなと思うんですが、それ以外でできる方法ってなんでしょう?
0130どっげぇマーチン
02/10/06 18:43ID:6RfgQjkt<? phpinfo() ?>
---
で
http://サーバ/test.php/aaa/bbb
ってやったらphpinfoの内容が表示されて
PATH_INFOが/aaa/bbb/になってました。
これをCGIで解析、表示するわけですね。
さんすくこ
0131太郎
02/10/07 00:39ID:+FxSSxSS情報量は知り合いの友達よりも結構多いです。
あと無料ソフト集もあるのでねダウソしてみては 。
あと、このサイトの正式タイトルを考案中ですので応募してみては。
あとアンケートにも答えてみては。
http://www31.tok2.com/home/sanche/
0132nobodyさん
02/10/07 00:55ID:???おい、太郎よぉ。
ここはCGI質問スレだぜ、、、みてはスレとちゃうぜ!
0133nobodyさん
02/10/07 13:32ID:???できたんですが、ファイルに保存しないで、ストリーム
っていうのかな、流れてきた文字列に検索かけて、必要な
行だけ取り出すようなことできますか?
パイプとか・・ヒントをいただきたく。
0134nobodyさん
02/10/07 13:34ID:???いいですか?すぐ向こうにも書くとマルチさらし上げとかされ
るから、もうちょっとまちます。はい。
0135133==134
02/10/07 13:44ID:???0138nobodyさん
02/10/07 14:15ID:???0140133==134
02/10/07 14:53ID:???0142nobodyさん
02/10/07 23:19ID:jF69Rk9Sttp://www.*******.com
にアクセスすると、OS別に(index.html)や(/i/index.html)に自動でジャンプするcgi等はありますか?
情報キボーン
0144nobodyさん
02/10/07 23:45ID:jF69Rk9S0146nobodyさん
02/10/08 11:33ID:???mod_rewrite。これ最強。
しかしこれを頼むと次から店員にマークされるという危険も伴う、諸刃の剣。
cgi初心者にはお薦め出来ない。
まあお前、ドcgi初心者は、HTTP_USER_AGENTでも食ってなさいってこった。
0148nobodyさん
02/10/09 13:12ID:???今はCGIといえばPerlですよね。
CGIが開発された当初はどのような言語がよく使われていたんですか?
C言語ですか?
0150nobodyさん
02/10/09 14:15ID:???CGI を実装したのって NCSA httpd 1.0 が最初でいいんだっけ?
ttp://hoohoo.ncsa.uiuc.edu/docs/Upgrade.html
リリースされた正確な年月日が分からんが、
ttp://www.webhistory.org/www.lists/www-talk.1993q4/0811.html
1993年末って事でいいんだろうか。
その時既に Perl は 4 から 5 への移行期だ。
ttp://www.perldoc.com/perl5.6/pod/perlhist.html
なら最初から Perl 使ってた人も多いんじゃない?
0151151
02/10/09 17:33ID:c2qNWBgI0152nobodyさん
02/10/09 19:06ID:uuWUlWUQ初心者ならCGIからJavascriptの道へ転進したらいい
0153Perl初心者スレ845
02/10/09 19:13ID:1+Y7R6lC勧められたんでこちらに書き直します。
CGI.pm を使ってCGIを書いているのですが、
my $query = new CGI;
my $value = $query->param("text");
$query->header
(
-type=>'text/html; charset=euc-jp'
),
$query->start_html
(
-title=>"値の表示",
-lang=>'ja'
),
$query->h1($value . "の値"),
$query->end_html;
として$valueを取得して表示する場合、
文字コードの扱いはどうなるんでしょう?
自分は、クライアント環境のコードがそのまま
飛んでくるだろうと考えていたのですが、
UNIX上のブラウザから試してもWindows上のブラウザから
試しても化けずに表示されました。
もしかして、CGI.pm は適切に文字コードを変換するところまで
やってくれているのですか?
0154nobodyさん
02/10/09 19:30ID:???OSに関係なく多くのブラウザが、ページがShift_JISならShift_JISで、EUC-JPならEUC-JPで送信すると思うけど・・・
0155nobodyさん
02/10/09 19:49ID:???となっているとき、monaやageは、どうやって取得したらよいの
でしょうか?
0156154
02/10/09 19:53ID:???とりあえずNetscape7.0(Linux)では>>154で言ったとおりだった。
>>155
getenv()などで環境変数QUERY_STRINGを参照。
0159nobodyさん
02/10/09 20:05ID:???を入力してきたユーザと、正式にフォームのボタンをクリックしたユーザを
見分けて処理することはできるのでしょうか?
0160nobodyさん
02/10/09 20:19ID:???環境変数HTTP_REFERERを見れば判別できるかもしれないが、それはクライアントが送るものだから信用できないといえば信用できない。
0162153
02/10/09 21:16ID:???なるほど。この場合は
$query->header
(
-type=>'text/html; charset=euc-jp'
),
とやって、Content-Type ヘッダが
Content-Type: text/html; charset=euc-jp
となるようにしているためにEUC-JPでかえってきている
っつーことですか。
ありがとうございます。
0166nobodyさん
02/10/10 00:34ID:???CGIからあるアドレスにメールを送信したところ
User unknownとなり送信されませんでした。
普通にメーラーからテスト送信すると送信元によって挙動が異なり
送信されたり、User unknownとなったりします。
これはメールサーバのどのような設定が関係していると思われますでしょうか。
よろしくお願いします。
0167名無しさん
02/10/10 03:07ID:M5uzoLnQフォームに記入したあと「この内容で送信する」を
押すと、Write Error : ./*****.tmp
というエラーが表示されます。(*****の部分は毎回違う数字)
これはどこがいけないんでしょうか?
初心者なんでよろしくお願いします。
0168nobodyさん
02/10/10 06:13ID:???絶対直接printで書いたたほうが早いのにどうしてメモリの無駄遣いするかな。
0169ぼるじょあ ◆yBEncckFOU
02/10/10 09:00ID:???0170nobodyさん
02/10/10 09:22ID:???cgiを置いているディレクトリのパーミッションにその他ユーザに対する書きこみ許可が無いため
cgi(=その他ユーザ)が作る新しい***.tmpファイルを書き込むことが出来ない。
対策
その他に書きこみ許可を与える。
つまりパーミッションを777にしろ。
0171nobodyさん
02/10/10 10:05ID:lLciuzr5名前に点数をつけますってので自分の名前が
2点だったので少しむかついて。どんなアルゴリズムか知りたいので。
http://www.cc.rim.or.jp/~ksa/cgiland/namae.html
0174nobodyさん
02/10/10 10:14ID:hlW8SpeqCだと動きません。昨日まで動いていたCGiなのでソースが間違ってることは
ありません。
昨日、サーバーの設定をいじったら動かなくなりました。
どなたかご存知ないでしょうか?
お願いします。
0176175
02/10/10 10:52ID:???もしかして、サーバソフトがAN HTTPdだったりする?
あれは設定によっては問答無用でプログラムを(たとえば)Perlに渡すようになるよ。
つまり、コンパイル済みのバイナリをPerlに渡してエラーと・・・・
以前、プログラム板のCスレッドでそういう状況におかれた人がいたよ。
0177174
02/10/10 10:53ID:hlW8Speq昨日まではそれで動いていたのですが、POST送信を受け付けないため
いろいろといじったらエラー表示になってしまいました。
どうしたら直るのか、またCで動かす場合にはそういう設定が必要だった事を
知らなかったので激しく後悔しております。。。
0180174
02/10/10 11:48ID:hlW8Speq拡張子は.cgiです。exeだと動くのですが、気に入らないので.cgiで使ってました
もしかして.exeで使わないといけないんですか?昨日は.cgiでも
動いたのですが…
0181nobodyさん
02/10/10 12:24ID:e9euvxTv0182nobodyさん
02/10/10 12:57ID:???規定は無いんじゃないかな。
IEとネットスケープは 'on' になってるけどちゃんとvalue=で指定しといた方が良いと思うよ
0183nobodyさん
02/10/10 13:42ID:???取得はどうやればよいのでしょうか?
0184nobodyさん
02/10/10 13:43ID:???0185nobodyさん
02/10/10 13:51ID:???HTML 4.01 では type="checkbox" の時 value 属性は
省略不可のようだが。
ttp://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#edef-INPUT
省略不可 = 初期値は UA 依存だろうな。
0186nobodyさん
02/10/10 13:51ID:???$access=$ENV{'QUERY_STRING'};
じゃ、取得できなかった。
0187nobodyさん
02/10/10 13:54ID:???取得はどうやればよいのでしょうか?
$access=$ENV{'QUERY_STRING'};
では取得できなかったわけなのだが、、、
0188178
02/10/10 13:58ID:???.cgiで動いていたということは今まで.cgiにmapping(関連付け)がされていなかったということですね。
動かなくなったのは.cgiの拡張子をperl.exeかなんかにmappingしたからじゃないでしょうか。
”C"のcgi用とその他cgi用にそれぞれ仮想フォルダを作ってmappingを別々にすればいいんじゃないかな。
0191nobodyさん
02/10/10 14:52ID:JYC0+kzsHTMLタグの出力まで CGI.pm が面倒見てくれるおかげで
PerlのソースがHTMLタグに侵食されずに済むんじゃないか。
タグをソースに直でうめこんでいったあげくに、
ヒアドキュメントとか使っちゃたりすると悲惨だぞ。
どんどんソースが醜くなっていく。
0192178
02/10/10 14:53ID:???0193nobodyさん
02/10/10 14:53ID:hlW8Speqうわぁその通りでした。ありがとうございます。
でも、疑問なのですがIISでPOSTとかGETって選択できないのでしょうか?
他のサーバーソフトは出来るのに…
こういうのがIISが使われない理由ですか?
0194nobodyさん
02/10/10 14:58ID:???↑
「あいうえお」と入力したらこのようなもじになってしまったのですが、
これを「あいうえお」に戻すにはどうしたらよいのでしょうか?
0200194
02/10/10 15:18ID:???$str=~tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
とするということでよろしいのでしょうか?
0202201
02/10/10 15:20ID:???0203nobodyさん
02/10/10 15:21ID:???<form>の<textarea>で取得した文字列をファイルに書き込んでいると、
改行コードが無駄に1つずつ多くなっています。
この問題を解決するにはどうしたらよいのでしょうか?
$str =~ tr/\x0D\x0A//d;
これを書いたりすると、全ての改行コードが消えてしまうのですが、
それでは駄目なんですよね。
0206nobodyさん
02/10/10 15:29ID:???0208ghj
02/10/10 15:49ID:W9t6/tYvこのメールアドレスにウイルスでも送れ!!
0211181です
02/10/10 17:20ID:???指定は無かったのでどうやって受け取ろうと思っていたのです。
UA次第と言うことはonでいいのかな。
0213名無しさん
02/10/10 18:44ID:GPH/xVcD>>170さん、ありがとうございます。
指摘通りに設定したら送信することができました。
でも「すべてを許可(777)」にするのはセキュリティ上、少々危険と書いてあるの
ですが、大丈夫なのでしょうか?
0214nobodyさん
02/10/10 18:57ID:UnVw6+XJ共有サーバだったら他のユーザからCGIを使っていたずらされる危険性はあります。
そのため多くのレンタルサーバが、CGIを所有者権限で実行するようになって来ています。
■ このスレッドは過去ログ倉庫に格納されています