トップページphp
1001コメント298KB

CGIだけど、なんか質問ある? Part 6

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/07/06 13:41ID:Mpxtn4bk
CGIの運用に関する質問スレッドです。

※CGIは特定の言語に依存するものではありません。

※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
  ↓
  Perl 初心者コーナー Part13
  http://pc.2ch.net/test/read.cgi/php/1022731565/l50

過去ログ・関連スレッドは >>2
0713nobodyさん02/08/27 13:25ID:OV4vTErY
半角カタカナを文字化けしないようにするには
どうしたらいいですか?
0714nobodyさん02/08/27 13:38ID:???
>>712
勉強して下さい。

>>713
ユーザーエージェント側で対応する必要があります。
0715nobodyさん02/08/27 13:51ID:bSwaE/gx
携帯専用の連続アクセスを制限できるアクセスカウンタを作成したいのですが、
同じ機種の携帯2台で実験したところ、環境変数で変化する項目はIPとポートのみで、
IP→接続するたびに変化、ポートリロードするたびに変化で
個々の端末の判別に利用できず、COOKIEを食わせようにも食ってくれず、
どうにもできない状態です。
よい方法知ってる人いたら教えてください。
071671302/08/27 13:52ID:OV4vTErY
>714さんへ
ユーザーエージェントってなんですか?
ちなみにネタじゃないです。
0717nobodyさん02/08/27 14:05ID:???
>>715
最近のIDが取れる機種なら可能。
EZWebとかi-modeでは個体特有のIDをUSER_AGENTに吐き出す
0718nobodyさん02/08/27 14:06ID:I18kXluB
>>716
I.Eとかのブラウザのこと。
0719nobodyさん02/08/27 14:07ID:???
>>716
ボク怒っちゃうE
検索してから質問してネ
アト、板違いなので Web制作板に逝ってクレ
http://pc3.2ch.net/hp/
072071302/08/27 14:17ID:OV4vTErY
718&719さんへ
スイマセン。検索したら大体わかったのですが、
私の説明不足だったので改めて質問しなおします。
i-modeのショッピングカートのCGIで、かごの中を
見た時に商品名が文字化けしてしまうのです。
それを直すにはどうしたらいいでしょうか?
素直に全角で商品名を書いた方が賢明でしょうか?
何か他の板で「CGIで半角カタカナを表示させるのは難しい」って
読んだんです。

長々とすいませんが、ご指導お願いします。
072171702/08/27 14:20ID:???
スマソ
i-modeではutn指定しないとID送られないようです。
072271502/08/27 14:20ID:???
>>717
全対応。。。とまで行かなくても、503辺りまでとかは無理ですか?
D503iSを2台使ってやってみたら、HTTP_USER_AGENTがまったく同じだったもので(汗
072371502/08/27 14:25ID:???
>>717
utnというのがよくわかりませんが、ぐぐってみます。
どうもです
0724nobodyさん02/08/27 14:31ID:M6gPKX3j
>>720
i-modeだったらShift_JIS固定なのでCGIをShift_JISで書けば良い。
0725nobodyさん02/08/27 14:44ID:???
>>697
cgi素人なんですが、管理モードの部分をコピペするだけでいいんですか?
0726nobodyさん02/08/27 15:00ID:???
参考になるか知らないけど、三十分かけてスレ探したから見てくれ。
http://pc.2ch.net/test/read.cgi/php/990173593/
072769702/08/27 15:08ID:???
>>725
単純なコピペじゃ動かないだろうから、移植とかいたのだが、通じていないね。
素人なら、KENTさんや、KENTスクリプトの改造配布している人に頼むしかないのでは?
# 俺は改造YY-BOARD(YYnote)を改造したから、オリジナルの事は正直知らないんだ(スマソ
072872802/08/27 15:21ID:XC6qe5bd
先輩方に質問があります。

TOPページに小さいBBSを埋め込んでいるサイトを見つけて、
同じようなソースを探したんですけど、見つかりませんでした。
何かいいソースはご存知ないですか?
072971302/08/27 15:23ID:OV4vTErY
>724さんへ
「CGIをShift_JISで書けば良い。」ですが、
最初に何か宣言したりするんですか?
それともエディタのモードをShift_JISにして書く
という事ですか?
当方、エディタは秀丸です。
CGIはもとから改造なのでどこを修正するのか
分かりません。
0730nobodyさん02/08/27 15:33ID:u+z2O7j8
>>728
http://www.bulldog.co.jp/
定番でしょ。

>>729
Content-Typeヘッダでcharset=Shift_JISを指定する。
スクリプト自体もShift_JISで書く。
Jcode.plでも使ってデコード時にShift_JISに変換する。
i-mode専用だったら、最後はいらない。
073173002/08/27 15:34ID:???
直リンしてしまった…鬱だし脳
0732nobodyさん02/08/27 15:37ID:???
>>730
通報しました!!
0733nobodyさん02/08/27 15:52ID:???
>>728
html javascript cgi の、どれを指しているか解りません。
場合によっては、て言うかむしろ板違いだと思われ。

>>729
思いついたことを試してみてから質問するようにして下さい。
出力を Shift-JIS にする必要があります。
Shift-JIS で保存するだけでも動作する可能性はあります。

>>730
えこひいきすんな。
073471302/08/27 17:48ID:OV4vTErY
>733
色々試してるんですが、まだ上手くできません。

&jcode'convert(*name,'jis');
&jcode'convert(*value,'jis');

のjisをShift_JISにすればいいんでしょうか?
後、「Shift-JIS で保存するだけでも動作する可能性はあります。 」は
動作しませんでした。
>730
「Jcode.plでも使ってデコード時にShift_JISに変換する。」って
どこをどうさわるのか分からないのでまだ試せません。
0735nobodyさん02/08/27 17:51ID:???
ゴメン。 jcode.pl 知らないんだけどさ。
&jcode'convert(*name,'Shift-JIS');
トカじゃないの?
0736nobodyさん02/08/27 17:56ID:qVb9I/tB
>>734
jcode.plのシフトジスは 'sjis' です。
0737nobodyさん02/08/27 18:00ID:???
>>735
知らないのだったら適当なこと答えないほうがよいと思われ

>>734
検索しる。
google で jcode.pl だけのキーワードで検索しても
jcode.plの公式サイトとjcode.plの私的な解説書ってサイトがすぐ見つかる
0738nobodyさん02/08/27 18:01ID:qVb9I/tB
&jcode'convertというのがjcode.pl使うということです。
073971302/08/27 18:03ID:OV4vTErY
みなさん素早いレスありがとうございます。
さっそく検索して試して見ます。
後ほど報告します。
074073502/08/27 18:16ID:???
なんだよー。全然動きないから誰も見てないと思ったんだよ。
なんだ。このレベルならみんな答えられるのか。
0741nobodyさん02/08/27 18:46ID:???
答えられない人もいますがね



プ
0742優香02/08/27 22:04ID:41JLJ2p7
sub datacheck{
if ($id eq ""){&error("IDを設定してください。");}
elsif ($siteurl eq ""){&error("サイトURLを入力してください。");}
elsif ($email eq ""){&error("メールアドレスを入力してください。");}}

この記述の中に一部のメールアドレスやURLを禁止語句として組み入れるにはどうすれば良いでしょう?

別のCGIの記述の中にこういうのもあったのですが・・
@badmail = ('090');foreach(@badmail) { if ( $in{'email'} =~ /$_/ ) { &error("メールアドレスに不正な文字が含まれています。");}

単純につなげてもダメですね・・・素人ですいません。
0743nobodyさん02/08/27 22:12ID:???
 _γ⌒⌒ヽ
 \\ノハ)ヽ)∩
  (○) ´∀`ノ丿  / ̄ 謝ってからかきこんでねー
  ⊂二 y /   < if ($email =~ m/^090/){&error("メール欄が 090 ではじまってるよー");}
    / _二⊃  \_マルチポスト(いろんなところで同じ質問をすること)はダメだよー
 ⊂二ノ
0744優香02/08/27 22:18ID:41JLJ2p7
ありがとうございました。
0745タオル02/08/28 15:14ID:C5teLTv+
HTML の img タグから cgi で gif 画像を表示させたいのですが、

HTML内
<img src="../xxx/xxx/aaa.cgi" alt="GIF">
で、cgiを指定して

cgi内
#!/usr/local/bin/perl
print "Content-type: image/gif\n";
print "\n";

open(IMG, '/xxx/xxx/bbb.gif');
print <IMG>;
close(IMG);

と書いたのですが、画像を表示できません。
何がいけないんでしょうか?
0746nobodyさん02/08/28 15:32ID:???
>>745
1. 画像ファイルのパスが違う
2. 広告が入るサーバ使ってる
0747nobodyさん02/08/28 16:16ID:???
バイナリモードでは?

open(IMG,"./xxx/xxx/bbb.gif");
print "Content-type: image\/gif\n\n";
binmode(IMG);
binmode(STDOUT);
print <IMG>;
close(IMG);
0748nobodyさん02/08/28 16:43ID:???
もしくは \r\n\r\n
0749_02/08/29 00:10ID:???
>>748
( ´,_ゝ`) プッ
0750nobodyさん02/08/29 01:10ID:???
$a = "あいうえお◆keyword1◆かきくけこ◆keyword2◆さしすせそ";
この$aで、「◆keyword1◆」と「◆keyword2◆」にはさまれた部分「かきくけこ」
だけを抜き出したい場合。

indexで「◆keyword1◆」の位置を、rindexで「◆keyword2◆」の位置を調べて
substrで抜き出すという方法はすぐおもいつきましたがもっとスマートな方法が
あればお知恵拝借したいと存じます。
0751nobodyさん02/08/29 01:17ID:???
>>750
抜き出すのが「かきくけこ」ってわかってるんだから抜き出す必要もなかろう。
0752nobodyさん02/08/29 01:28ID:???
いや、750はあくまでも例です。
本当は抜き出す部分が何であるかは事前にわかりません。
0753nobodyさん02/08/29 01:34ID:???
>752
じゃあ、「あいうえお」の部分に「◆keyword1」と入れられたり、
「さしすせそ」の部分に「keyword2◆」と入れられたらどうするの?
0754nobodyさん02/08/29 01:40ID:???
いや、それはないものと仮定してください。
0755nobodyさん02/08/29 01:43ID:???
>754
なぜないと言い切れるのか。
そういう考えがセキュリティホールを生み出したりすると思うのだが。
絶対にないと言うなら、正規表現でも使えば?(Perlの場合)
0756nobodyさん02/08/29 01:44ID:???
「◆keyword1◆」と「◆keyword2◆」って、複数ペア存在するかどうかぐらい
書きなよ
0757nobodyさん02/08/29 01:46ID:???
べつにセキュリティに関わるような重大なものじゃないんで…
正規表現使うとどうなりますかね?
0758nobodyさん02/08/29 01:50ID:???
>757
そういう気持ちに問題があるっての。
あんたのCGIのせいで、同じサーバーのほかの人間が迷惑被る可能性だってあるんだよ。
0759nobodyさん02/08/29 01:51ID:???
もちろんありえないことはないのはわかっています。
サーバーにアップする前にはちゃんと対策します。
0760nobodyさん02/08/29 03:16ID:???
簡単に書くならこうか?
($hoge) = $a =~ /◆keyword1◆(.*?)◆keyword2◆/;

substr使った方が倍以上速いけど
$b = index($a,'◆keyword1◆'+1,index($a,'◆'));
$hoge = substr($a,$b+3,rindex($a,'◆keyword2◆')-$b-3);
0761nobodyさん02/08/29 03:48ID:???
>>760
すごいです。ありがとうございます。$aには\nも含まれるので、/s;にして無事うまくいきました。
しかしやはりsubstrの方がやや速かったです。
076276002/08/29 04:17ID:???
>>761
上の例だと2倍チョイだけど、抜き出す文字列が長くなれば速度差は
数十倍以上になったりするからね

つってもループ外で使うなら気にするほどの差じゃ無いので
自分が分かりやすい方を書いた方が後々良いかもしれん
0763nobodyさん02/08/30 11:23ID:w917hCw/
和鳥ってうpろだ設置ムリなのかな?

cgi-binにしかスクリプト置けなくて、そのスクリプトは
members.tripod.co.jp/垢/cgi-bin/スクリプト名
では読めず、
cgi.tripod.co.jp/垢/cgi-bin/スクリプト名
でしか読めない。
で、cgi.tripod.co.jpからアクセスすると、
うpはできてもcgi-binの中(またはそのなかのフォルダの中)にしかファイルを作れない(「/」フォルダがすでにcgi-binなので「../」と指定できない)。

すると、うpしたファイルを落とすとき、
members.tripodからはcgi-binにアクセス権がなく、
cgi-tripodからは拡張子がcgiのファイルしか直接読めない。

なんかいい方法ないかな。
0764nobodyさん02/08/30 12:37ID:???
netfirms以上の腐った仕様ですのね。
欧鳥みたいに php+MySQLが一番なんだが
#最近jp弾きするようになったのは誰のせい?
0765nobodyさん02/08/31 01:51ID:3XHp94dS
http://www.benricgi.com/bbs/egg/h/170181/takayo-g.htm
[10] Re:お疲れサンタマルタ♪  HOME 2002/8/30(Fri)
22:46:37-taka-管理人さん(ZONE幼稚園)

この書き込みで
次のからはウイルスが勝手に飛んだりパス解こうとすると・・・
って感じにするから大丈夫。
って(汗

CGIにそんなことが可能なんでしょうか?
どうやってウィルス飛ばすんでしょうか?
0766nobodyさん02/08/31 04:45ID:???
>>763
binmodeで吐いても駄目?
0767宣伝隊No.402/08/31 08:07ID:qEuEjGno
http://cgikoza.s12.xrea.com/2chbbs/
最大限に2chのパワーを引き出した掲示板が
今、見参!!
0768nobodyさん02/08/31 10:34ID:???
>>767
知り合いよ、頼むから恥ずかしいことせんといてくれ・・・
めちゃYY2chそのものじゃないか。。。
0769nobodyさん02/08/31 21:25ID:9CUDh78M
apacheのインデックスリストが使えないんで
perlで似たようなもの作ろうと思うんですが>index.cgiにして置く予定
誰か似たようなスクリプト作ってませんか?
0770nobodyさん02/08/31 21:36ID:???
>>769
ディレクトリ内のファイル全部リンクして表示すりゃいいだけじゃないの?
0771nobodyさん02/09/01 04:48ID:nhMd50K5
C掲示板やアンケートなどでフォームの情報の転送を
ボタンで行うとき、そのページ内で再リロードしますよね?
それの情報を別ウインドウに送るにはどうすればいいのでしょうか?
0772nobodyさん02/09/01 06:23ID:???
>>771
js。板違い
077376902/09/01 10:28ID:2Mci4oQX
>>770
まぁ そうなんですけど
ファイル上げるたびに更新するのめんどいんで
動的にやってくれるやつがないかなって
0774nobodyさん02/09/01 10:35ID:???
>>773
.htaccess 使えないの?
077576902/09/01 11:11ID:2Mci4oQX
>>774
使えたら苦労はしないっす。
CGIだけは使えるのでそれでどうにかしようと思ってます。
0776nobodyさん02/09/01 11:26ID:???
>>775
もっと具体的に、どういう環境なの?
077776902/09/01 11:34ID:2Mci4oQX
無料のサーバーで
apache1.3.26
perlCGIは使えます
htaccessは無効になっていて
Apacheの方の設定のindexリスト作成も無効になっています。
0778nobodyさん02/09/01 12:02ID:???
>771
<form action"..." target="...">
とかいう問題じゃないよね?
0779nobodyさん02/09/01 12:10ID:???
>>777
どこの鯖?
0780nobodyさん02/09/01 12:17ID:???
>>777
glob使えばいいんじゃねの?
0781nobodyさん02/09/01 12:18ID:???
>778(自己レス)
action「=」が抜けてた。
鬱死。
0782nobodyさん02/09/01 12:20ID:???
>>780
こういうのは軽いほうがいいからopendirのほうがまだいいだろ
0783nobodyさん02/09/01 13:33ID:???
CGIの運用に関する質問とは言い難いかも知れないが。

CGIって言葉の意味ってどんなもんでしょう。
「デジタル用語辞典」とかに載ってる様な、「HTMLでは実現できない云々」
とか言う方はわかるんですが、

「PHPはCGIより速い」
という場合の「CGI」の意味がちょっとわからんす。
先ほどの定義ではPHPとかもCGIなような気がするんで。
もしかしてこういう場合は、
mod_phpとかmod_perlに対して、mod_cgiという意味で使っているのでしょうか?
078478302/09/01 14:21ID:???
いちおーあげとくんべか。
0785nobodyさん02/09/01 15:18ID:???
>783
>「PHPはCGIより速い」
こんな馬鹿なこと言ったの誰だ?
0786nobodyさん02/09/01 16:33ID:???
CGI=CommonGatewayInterface
CGIは言語ではなく技術を総称した言い方
>>783の「PHPはCGIより速い」っていった人はCGI=Perl言語と勘違いしてるだけ
0787どうでもいいが02/09/01 18:13ID:???
>>786
「PHPはPerlより速い」っていうのもどうかと思う。
いや、もちろん>>783の引用元がアホなだけなんだが。
078878302/09/01 19:08ID:???
えーと、なんか誤解(かどうか自信無いですが)かもしれないんで、

http://pc.2ch.net/test/read.cgi/php/1005122528/46-47n
例えばこういう使い方での「CGI」って言葉の意味です。
078978302/09/01 19:17ID:???
またsageで書いちまったage

>>788リンク先みたいな場面だと普通にCGI <-> mod_perlがどうこうなどと書いてあんですよね。
0790nobodyさん02/09/01 19:32ID:???
>788
それはmod_perlの命令の一つに「CGI」というのがあるだけと思われ。
0791<>02/09/01 20:55ID:8fmb+fu6
ttp://members.tripod.co.jp/rps/tips/tips15.html
ここに、

半角→全角
tr/A-Za-z0-9/A-Za-z0-9/;
その反対
tr/A-Za-z0-9/A-Za-z0-9/;

と書いてありましたが本当でしょうか?
0792 ◆JAPH9PWA 02/09/01 21:21ID:???
>>791
自分で試してみようとは思わないの…?
とりあえず、perl5.6以上で文字コードutf8にしてuse utf8;でなら可能だけど。
さもなくばJcode.pmのJcode::trメソッドを使う、とか
0793nobodyさん02/09/01 21:22ID:???
>>791
JPerl なら本当。一般的には嘘。
0794nobodyさん02/09/01 21:24ID:???
>>787
確かに。
PHP と引き合いに出すなら mod_perl と比較しないと意味ないよね。
0795<>02/09/01 21:25ID:8fmb+fu6
試しましたがダメでした。
スクリプトはSJISで書いてます。全角英数字を半角に統一したいので、

jcode::tr(\$str, '0-9A-Za-z', '0-9A-Za-z');

または

&jcode::tr(\$line, <<'EOM', <<'EOM');
0-9A-Za-z
EOM
0-9A-Za-z
EOM

としましたがだめでした。
0796nobodyさん02/09/01 21:33ID:???
>795
>>793
0797nobodyさん02/09/01 22:13ID:???
>>794
いや、PHPにもApache組み込み型じゃなくてCGI型があったはず。
インタプリタ言語としての性能差比較なんだろうか??
0798nobodyさん02/09/02 15:54ID:2dKvJqig
>>763
やっぱり和鳥ってCGI使いにくいんですか?
0799nobodyさん02/09/02 16:43ID:???
>>798
訊く前にFAQみれ
080002/09/02 17:25ID:???
ちょっと教えてください・・・

unlinkの関数で.iniのファイルを削除しようとしたのですが
むりでした。
iniのファイルは削除できないのですか?
A:できる(Yes,you can.)直訳:はい、できます
B:できない(No, you can't)いいえ、できません
C:知るか!!(How should I know?)どうして私が知ろうものか・・・
D:教えねえよ(I don't tell you.)私はあなたに教えません。
ABCDのどれかでおねがいします
0801nobodyさん02/09/02 17:27ID:???
C
わかるかっ!
080202/09/02 17:47ID:???
Please,だれかおしえてくれ・・・
0803nobodyさん02/09/02 18:20ID:???
>>800
私はできますが、あなたが出来るかはわかりません。
080402/09/02 21:28ID:???
サンキュー
0805nobodyさん02/09/02 21:29ID:fApWiCnr

http://www.leverage.jp/bloom/qry/search.qry?function=Search
080678302/09/02 22:55ID:???
>>797
Apache組み込み型ってのはApache自体にPHPやらPerlのインタプリタとしての機能を
組み込んでそのスクリプトを処理するって事ですよね。

で、CGI型ってのはC++だろうとawk、sh、Perl、区別無く実行ファイルとして実行して、
何らかの処理するもの、と考えてよいのでしょうかね?
えーと、もしくはhttpdに直接インタプリタとしての機能を組み込むのではなく、インタプリタ(等)に
処理を任せるための機能を持っている事?

と言う事は、
http://japan.cnet.com/Help/manual/0217.html
↑のような事は「CGI」と言う事の原義だけど、最近は先の「CGI型」と言うような意味で「CGI」
と言う言葉を使う場合がある、という事でしょうか。

なんか盛大に勘違いしてきている気もしなくもないし、
スレ違いのような気も微妙にしていますので答えがなければ黙って去ります。
0807nobodyさん02/09/02 22:57ID:???
>>801
C言語CGI専用スレッド
http://pc.2ch.net/test/read.cgi/php/988918264/
の事か?
0808nobodyさん02/09/03 10:38ID:+fworGnI
シンプルに現在時刻をdatファイルに書き出す方法ないですか?
0809nobodyさん02/09/03 11:34ID:???
>>808
現在時刻ってUNIXタイムスタンプでいいの。
0810nobodyさん02/09/03 12:12ID:dMsxDOGy
下のcgiを動かすと文字化けしてしまうんですが何故ですか?

#!/usr/local/bin/perl

print "Content-type: text/html\n";
print "\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>テスト</TITLE>\n";
print "</HEAD>\n";
print "<BODY BGCOLOR=\"#FFCCCC\">\n";
print "これはCGIのテストです。\n";
print "</BODY>\n";
print "</HTML>\n";
081180802/09/03 12:15ID:05tL4XNt
>>809
GMT-8で時間を取得したいです。
あとdatに書き出す方法が分からないです。

すみません。調べても分からなくて。
0812nobodyさん02/09/03 12:54ID:???
>>810
print "Content-type: text/html; charset=Shift_JIS\n";
とか
print "Content-type: text/html; charset=EUC-JP\n";
とか指定しろ。
■ このスレッドは過去ログ倉庫に格納されています