CGIだけど、なんか質問ある? Part 8
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/09/22 23:15ID:???※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
↓
Perl 初心者コーナー Part16
http://pc.2ch.net/test/read.cgi/php/1032070299/l50
過去ログ・関連スレッドは >>2
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を所有者権限で実行するようになって来ています。
0216名無しさん
02/10/10 19:54ID:GPH/xVcDサーバは危険という事ですね。
私はメール送信フォームでcgiを使っているのですが、このパーミッションの設定は
メール送信フォーム特有というよりも、サーバ側の問題ということでよろしいでしょうか?
0217nobodyさん
02/10/10 20:23ID:???三番目に悪いのは、CGIプログラムが中途半端な
権限で動くよう設定されているサーバ。
二番目に悪いのは、作業ファイルをプログラム本体と
同じディレクトリに作ろうとする postmail.cgi 。
一番悪いのは、与えられた環境で最良の方法を
考えようとしない人。
0218初心者まーくん
02/10/10 20:32ID:7MoYhVdn”会場”という漢字が、変数$place内に含まれているか
をチェックするのって、perlで、どうやるのでしょう?
jperlでなく、perl 5.0Xです。
if( $place =~ /kaijyou/ ) {
.....
}
のkaijyouが"会場"であって欲しいのですが。
0219あ
02/10/10 20:35ID:Rtf9aPMOhttp://cgi.tripod.co.jp/member_name/cgi-bin/****.cgi
にアクセスしたら次のようになってしまいました。
ちゃんと説明どおりにアップロードしたのでもうどうしたらいいかわかりません。
なぜこのようになってしまうのでしょうか?
ご教授お願いします。
以下のエラーが発生しています。
Your script produced this error:
(Maybe you didn't strip carriage returns after a network transfer?)
0220nobodyさん
02/10/10 20:49ID:UnVw6+XJascii mode ka text mode de upload siru
0221nobodyさん
02/10/10 21:12ID:???if($place =~ /会場/)
/\Q会場\E/ の方が汎用性は上がるが。
if(index($place,'会場') > -1)
のが速いが。
0222初心者まーくん
02/10/10 21:29ID:7MoYhVdnjperlでなくても、コードをeucにしておけば
perlで動作するのでしょうか?221のコードは?
0223あ
02/10/10 21:40ID:Rtf9aPMO一応アスキーとバイナリーモードを
ファイルによって変えました。
ところでテキストモードって何ですか?
ascii mode ka text mode de upload siru
0225nobodyさん
02/10/10 22:56ID:???それは、そのサーバーが時々ダウンしている。おそらく、ADSL接続
かなんかで接続を切ったり繋いだりしているhome Serverだな。
#何やねんこのスレ。1日見なかったら普段の100倍の書き込みが
#あるがな。どうしちゃったの?
0226あ
02/10/10 23:37ID:Rtf9aPMO設定不要ですよね?
0227nobodyさん
02/10/10 23:47ID:???0228あ
02/10/10 23:58ID:Rtf9aPMOわからないのです。
ダウンロードしたCGIの説明のページを見ると
1行目のPerlのパス、パーミッションを正しく設定する。
ダウンロードしたファイルをアスキー、バイナリーでアップする。
ってあるのでやってみたのですがなぜかできません。
Tripodは1行目のPerlのパス、パーミッション設定不要とあったのですが、
ここをいじったりしたほうがいいのかなと思って聞いてみました。
0229あ
02/10/11 00:14ID:PQAg8rHh0230nobodyさん
02/10/11 00:34ID:ZG/BpU41逝ってみろ
逝ってみれば分かるさ
迷わず逝け!
0231nobodyさん
02/10/11 01:09ID:7TLGC75k1つのファイルにまとめるようなことを
perlのopen関数でやろうとしたのですが、
うまく外部ファイルを読み込んでくれません。
タグとかがあるとダメなんでしょうか?
0232nobodyさん
02/10/11 05:02ID:???英語が読めないの?
windowsだかDOSだかMacの改行コードをunixの改行コードに
変えなされ。
一行目の#!/usr/bin/perlみたいなのは残しておいても
まったく関係なし。
0233nobodyさん
02/10/11 05:03ID:???>ssiを使いincludeで外部ファイルを読み込んで
まず、ssiとは書かずSSIと書きます。
>includeで外部ファイルを読み込んで
「Cを使っていますが、includeで外部のヘッダーファイルを読み込んで」
なら分かりますが・・・
>perlのopen関数でやろうとしたのですが
>うまく外部ファイルを読み込んでくれません。
さきほどは、ssiでincludeで読み込んだのではありませんか?
perlにCを組み込んだのですか?
>タグとかがあるとダメなんでしょうか?
どんなタグですか。htmlファイルのタグは、まったく関係ないです。
0234あ
02/10/11 06:11ID:PQAg8rHhファイルやフォルダを右クリックしたら、
「属性変更」とか「アクセス権変更」とかあるはずらしいのですが、
ありませんでした。
0236nobodyさん
02/10/11 07:55ID:???自分で調べない人って最近多いの?
0237nobodyさん
02/10/11 08:01ID:horUUgUpSet-Cookie: YY_CHAT=やました<><><>0<>10; expires=Mon, 09-Dec-2002 22:56:49 GMT
↑がそのまま画面の方に表示されてクッキー保存されないんですよね。
どういったことが原因だか教えてくれる人はいませんでしょうか?
0239nobodyさん
02/10/11 08:18ID:horUUgUp返信ありがとうございます。
# クッキーを発行
&set_cookie;
print <<"EOM";
<html>
<head>
このように書き出しているのですが
ヘッダ終了の空行の出力とは
print "Content-type: text/html\n\n";
のことですか?
0240nobodyさん
02/10/11 08:34ID:horUUgUpprint "Content-type: text/html\n\n";
が問題だったようです。解決できました。
NPHスクリプトでやってるのですがそれは関係ないのですかね?
binmode(STDOUT);
print "HTTP/1.1 200 OK\r\n";
print "Connection: close\r\n";
を付けるのを忘れていて付けたら解決したので…
ありがとうございました。
0242nobodyさん
02/10/11 10:57ID:???何%ダウンロードしました というメッセージがリアルタイムで表示されますよね。
あれの仕組みはちょっと知らないんですが、それと同じようなことをCGIでやる事可能ですか?
なんかJAVAとかじゃないと出来ないんでしょうか。
0243nobodyさん
02/10/11 13:56ID:YuplvdMT携帯サイトで透過GIFを使ってアクセスログを取りたいのですが、CGI側に
print "Content-type:image/gif\n\n";
print `/cgi-bin/ 透過GIF`;←透過GIFのディレクトリ
と書いてもhtml側には□に×と出てしまいます。
透過GIF自体は携帯は対応してるようなんですが・・・どうやれば消せるのでしょうか?
教えてください。
0244nobodyさん
02/10/11 14:02ID:???・・・
0245nobodyさん
02/10/11 14:07ID:YuplvdMT検索で調べた際に
print `/bin/cat log.gif`;とあったのですが(こちらも試した)、これは
透過GIFの置いてある場所しょうか?よく分からなかったので>>243
のように書いてみたんですが。
0246nobodyさん
02/10/11 14:07ID:d3mMTY3q出ないときもあります。ひどいときは真っ白なページが表示されるだけ。
でも再読込をするとキチンと表示されます。
どこが原因なのかわかる方いたら教えてください。
HTTP/1.1 200 OK
Date: Fri, 11 Oct 2002 04:57:40 GMT
Server: Apache/1.3.26 (Unix) PHP/4.2.2
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
0247nobodyさん
02/10/11 14:11ID:d3mMTY3q掲示板のCGIを書き換えてテストしたら……
すいません。作ってません。作れません。
0248nobodyさん
02/10/11 14:17ID:???芸能コーナーを作ろうと思い
cgi内に$page[13] = "芸能?";
と記入したのですが
芸能の『能』の字が表示されないのですが
jcodeに対応していないのでしょうか?
また、表示する方法があればご教授ねがいたいのですが。
0249nobodyさん
02/10/11 14:20ID:???0250nobodyさん
02/10/11 15:10ID:???0251nobodyさん
02/10/11 15:20ID:???そういえば<FORM ACTION="/sbin/sendmail">とやってもメールが送信されないんですけど。と言った人がいたなぁ。
0252CGI初心者
02/10/11 15:23ID:oWAZZFQ5一度画像を保存してまたとりにいくのではなく、そのまま送りたいのですが。
0254nobodyさん
02/10/11 15:34ID:4FavTUhmバイナリファイルアップロード用のCGIスクリプトを作ろうと思うのですが、
そのものずばりの勉強ページを教えてください。
できれば既存のCGIと連携させたいので、Perlで書きたいです。
よろしくお願いします。
0255nobodyさん
02/10/11 15:37ID:???0256nobodyさん
02/10/11 15:37ID:???すみません、数分で自己解決しました。
0257nobodyさん
02/10/11 15:37ID:???0258243
02/10/11 15:39ID:Q6IVHh/3+iモード 透過GIF アクセスログでググっても分からなかったもので
そもそも何でcgiを読みこむのに透過GIFで隠せるのか
カウンタに見せかけてアクセスログ取るのもあるようなんですが、
使ってないのでちょっと分かりません。
0259CGI初心者
02/10/11 15:39ID:oWAZZFQ5説明不足ですみません。
二行目は、一度保存すれば、携帯から取りにいくのは簡単ですよね。
でもそれだとタイムログが発生しやすいので。
あと、ちなみにこれはi-modeではなくiappliなのでブラウザ上で画像をだすのではないのです。
あくまで、CGIないで画像の処理を終わらせたいのです。
0260nobodyさん
02/10/11 15:41ID:???そのとおりでした。タグを含めて検索したらみつかりました。
>>257
すみません。調べてみたところ、fileにはvalueが使えないそうです。
正解:
<input type=file>
<input type=submit value="合法ファイルをアップロードする">
0262たく
02/10/12 02:34ID:daDz8sWD書き込むというのは・・.cgiのファイル自体を書き換えることができる
ということでよいのですか?
0263nobodyさん
02/10/12 02:40ID:???0264たく
02/10/12 03:42ID:daDz8sWDということであれば
第三者が書き込むことができると設定した場合は、
どうやってCGIのファイルを書き換えるのですか?
普通CGIのファイルはFTPでアップしないといけないと思うのですが
それ以外でどうやれば第三者が書き換えることができるのですか?
第三者はパスワードを知らない。
0265s
02/10/12 05:40ID:Qw5zsVmS0266nobodyさん
02/10/12 10:11ID:kb4PH9h0再起動したー
でも、
CGIがうごかねーーーーーーーーーーーーーーーーー!!!
777なのにパーミッションエラーとかぬかすなーーーーーーー!!!
誰か助けろ!!!タスsヶろ?
0267nobodyさん
02/10/12 10:15ID:???0268nobodyさん
02/10/12 12:10ID:???"POST" ではなくて "post" とか "Post"
が入ることはあるのでしょうか?
0269nobodyさん
02/10/12 12:16ID:???大文字しか在り得ない。
小文字でやると、
HTTP/1.1 501 Method Not Implemented
が鯖から帰ってくる。
0273
02/10/12 14:30ID:snVYyJdd自宅サーバなんだけど、投稿が出来ないみたいなんですが・・・。
■ このスレッドは過去ログ倉庫に格納されています