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

CGIだけどなんか質問ある Pert 5.01

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/03/03 12:49ID:673UxTI5
print"くだらない質問はここにかけや!";

0784nobodyさん02/04/09 17:56ID:???
>>783
このスレの1がCGI.pm使ったアプロダを作っていた気がする
http://pc.2ch.net/test/read.cgi/php/1001950501/l50
0785nobodyさん02/04/09 18:59ID:XYR/ZMS7
dds
0786nobodyさん02/04/09 20:24ID:/BtheE/C
>>784
ソース読んでみるとFile::Copy::copy()で保存してるみたいなので、
use File::Copy;
  :
copy($file, "save") || die("error: $!");
としても、<UPLOAD>file</UPLOAD> No Such File or Directory
というエラーで終了してしました。

CGI.pmを関数として使ってるんですが、それが悪いのかなあ、と。
0787nobodyさん02/04/10 04:17ID:???
j-code.plって古いとどんなデメリットがありますか?
0788nobodyさん02/04/10 04:18ID:c6LIImpc
連続書き込みですいませんが、CGI.pmのソースを調べたり
ネットの読み物を探してみても、どうしても分からないです。
下のテストソースを実行させても出力が無いのはなぜですか?

#!/usr/bin/perl -w
use CGI qw(upload);

print <<"END";
Content-type: text/html

<html>
<body>
<form method="POST" action="$0" enctype="multipart/form-data">
<input type="file" name="upfile" value="" />
<button type="submit">send</button>
</form>
END

if ($ENV{"REQUEST_METHOD"} eq "POST") {
  $file = upload("upfile");
  print <$file>; # print <STDIN>; では出力がありました。
}
print '</body></html>'
__END__
0789nobodyさん02/04/10 08:00ID:???
>>787
特に無いと思われる。がフリーなんだからどうせ使うんなら最新版を落とすのを奨励。
0790nobodyさん02/04/10 08:07ID:???
>787
あまりに古いと一部の機能が使えない。
0791nobodyさん02/04/10 14:49ID:U5pgjWQy
こういうスクリプト(表示をhtmlで処理してる)
http://yokohama.cool.ne.jp/icefall/

にリロードボタンをつけるにはどうしたらいいんでしょうか。
投稿欄全て空白で書きこみボタンを押すと
「名前を入れて下さい」「内容を…」
と出る仕組みになってるのでリロードボタンを別に設置したいと思っています
ブラウザのリロードボタンを押しても更新されないようで (;´Д`)
0792初心者ですいません02/04/10 14:54ID:pqz8X1Tu
CSVファイルを絞り込み検索させて、結果表示する前に
{$tanka = $gearn / $gvtnum;}
などと割算をしているのですが、割り切れないと処理が止まってしまいます。
(割り切れると大丈夫みたいなのです)
こういう場合はどうしたら良いのでしょうか?
どなたか宜しくお願いいたします。
0793nobodyさん02/04/10 15:25ID:???
0で割ったらいかんぜよ。
$tanka = $gvtnum ? $gearn / $gvtnum : undef;
0794初心者ですいません02/04/10 16:10ID:pqz8X1Tu
>793
どうも有り難う御座います。
こうするものなのですね・・・
0795nobodyさん02/04/10 21:44ID:NYy94cTH
チャットでセレクトフォームだけで文字装飾をするにはどうするのでしょうか?
たとえばたとえば発言をする前にセレクトフォームで「大きい」を選ぶと
発言が大きくなるとか。つまりはここのような機能です。
http://c.cgiboy.com/test/
0796nobodyさん02/04/10 21:50ID:???
>>795
http://pc.2ch.net/test/read.cgi/php/1012839651/l50
0797nobodyさん02/04/10 21:51ID:???
>795
セレクトフォームの内容によって出力内容を変えるだけ。

if($FORM{'select'} == 1){
$message = qq(<FONT SIZE=+2>$message</FONT>);
}

表示行数変えるのと一緒だろ。
頭使えよ。
0798nobodyさん02/04/10 21:57ID:ZuHoR8rN
>>791
スクリプトを改造してエラー処理を無くす。(おそらく&error("hoge")になってるだろう)
その代わりにコメント等が無い場合はスルーしてそのままリロードさせるようにする。
(書き込み処理をifで囲む)
それとブラウザの更新ボタンを試してみたけどちゃんと更新されるよ?
>>795
チェックボックスのvalueをifで受けてチャットのコメントの始めと終りに
<font size=4>hoge</font>というふうに付くよう、
if($DATA{'checkbox'} eq "middle") {$hoge=~s/(.+)/<font size=4>$1<\/font>/; }
みたいな感じで改造する。
以上パールで書かれていると仮定してのお話でした。
というかソース見てないけど多分パールだよね?w
0799nobodyさん02/04/10 22:10ID:???
>>791
上の者だけど、普通にリンクを貼ればいい話でした。すんまそん。
更新できないってのはおそらくformのvalueが残ったままで更新しようと
してるからエラー処理にひっかかってると思われ。
2チャンのリロードのリンクと同じようにそのCGIのURLを貼ればいいだけ。
0800nobodyさん02/04/10 22:41ID:???
800
080179102/04/11 01:00ID:???
>>798
どうもありがとう。
もうちょっといじってみます。
俺の勘違いなのかもしれないね。
0802nobodyさん02/04/11 22:02ID:xrC+7yeQ
gifcatを使って、カウンタのプログラムを作成しているのですが、
Netscape6.2で繋げた画像の先頭だけがおかしくなります。
これは、仕様なのでしょうか?
某有名CGI頒布サイトのサンプルでも同じようになります。

言語は、Parlです。
0803nobodyさん02/04/11 23:39ID:???
>802
Parlなんて言語は知りません。
0804nobodyさん02/04/11 23:50ID:xrC+7yeQ
>>803
すみません。また間違えてしまいました。
Perlです。
0805nobodyさん02/04/12 00:02ID:???
>804
ttp://tohoho.wakusei.ne.jp/soft/gcat.txt
それじゃあ配布元を調べるという基本中の基本は?
0806nobodyさん02/04/12 00:24ID:DCCb4BjX
>>805

同じ資料ではありませんが、似通った内容は見たことがあります。

> 一番最初の画像の大きさが全体と異なる場合に表示がおか
>しくなるという、ブラウザ側のバグが原因だと推測しています。

とありましたが、画像のサイズは、全て統一しています。
0807nobodyさん02/04/12 03:32ID:???
>>802
Netscape6.2の方の問題だと思う。
これ以上は板違いだし、知らん。
080811302/04/12 03:55ID:xkmU3hC6
>>802
うちんとこは全桁化けてるけど、もう知らん。ネスケ無視だ。がはははは。
てか、俺も解決策知りたし。
0809nobodyさん02/04/12 07:20ID:???
>806
一番最初の画像=一番左の桁の画像
全体の画像=一番左から一番右まで全部含めた画像
0810nobodyさん02/04/12 16:06ID:KhU9N1Jw
>>809
すみません。
小学校から国語をやり直してきます。
0811nobodyさん02/04/12 16:07ID:KhU9N1Jw
>>807-808
仕様だったんですね。
ありがとうございました。
0812nobodyさん02/04/13 19:59ID:ZRf5XmIQ
あの、.htaccessファイルに
ErrorDocument 404 /aaa.html
と書けば指定したサイトに、飛ばせるようなのですが
---
AuthUserFile /hoge/
AuthGroupFile /dev/null
AuthName ByPassword
AuthType Basic
<Limit GET>
require valid-user
</Limit>
---
のどこに書けばいいのでしょうか?

お願いします。
0813nobodyさん02/04/13 20:31ID:???
http://pc.2ch.net/test/read.cgi/php/988800432/l50
http://pc.2ch.net/test/read.cgi/php/1003772635/l50
上記のスレのどちらかのほうがいいかも
0814nobodyさん02/04/13 21:16ID:???
>>813
有り難う御座います。
0815nobodyさん02/04/13 23:50ID:???
携帯電話からしか見ることができないようにすることは出来ますか?
PCからは絶対に見ることが出来ないように

出来るのであれば、やり方を教えてほしいです。お願いします。
0816nobodyさん02/04/14 00:18ID:gxlmJk+G
>>815
絶対は無理だろ。
ユーザエージェントで判断すればある程度はじけるが、
エージェント変更できる奴とかもあるしな。
0817nobodyさん02/04/14 00:22ID:???
>>816
すいません。絶対だなんて言い過ぎました。ごめんなさい。
是非、その方法を教えてほしいです。お願いします。
0818nobodyさん02/04/14 00:29ID:gxlmJk+G
>>817
環境変数のUSER_AGENT調べて判断しる。
例えばdocomoならDocomo〜とかなってる。
0819nobodyさん02/04/14 00:29ID:???
転送量削る為のサイト経由してる携帯を無視していいなら
REMOTE_HOSTで弾けたのが一年前 今はどうなんだろ
>>817
携帯のHTTP_USER_AGENT調べれ
0820nobodyさん02/04/14 00:36ID:oStrNP4H
フラッシュ作成ソフトの最新版もMX
0821nobodyさん02/04/14 00:45ID:???
>>820
通報しますた。
082281702/04/14 01:51ID:???
$user_agent = $ENV{'HTTP_USER_AGENT'};
if($user_agent =@@@@@@@@) { $mobile = 1; }

DoCoMoとUP.BrowserとPDXGWとASTELとJ-PHONEのうちどれか一個あれば
引っかかるようにしたいのですが
@@@@@@@@@の部分をどういう風に書けばいいのですか?
お願いします。
0823nobodyさん02/04/14 02:03ID:gxlmJk+G
>>822
正規表現使えば?

$_ = $ENV{'HTTP_USER_AGENT'};
if(m/(DoCoMo|UP.Browser|...|...|...)/){
  $mobile = 1;
}
0824nobodyさん02/04/15 06:09ID:???

CGIに入る人数制限をする方法を教えてください。
0825nobodyさん02/04/15 06:19ID:???
いままで1度もCGIに入ったこと無いや。
死ぬまでに1度は入りたいね。
0826nobodyさん02/04/15 09:04ID:???
>>825
CGI作成するなら1度は入っとけよ
0827nobodyさん02/04/15 09:44ID:???
検索エンジンでデーター部分は一つでCGI設置場所を数箇所からアクセスした場合、
負荷は上がります?
0828nobodyさん02/04/15 10:09ID:???
>827
まず、なぜそんな回りくどい事をする必要があるか、200文字以内で説明せよ。
0829nobodyさん02/04/15 13:12ID:???
ミラーサイトっす
0830nobodyさん02/04/15 13:17ID:???
>827
アナタノニホンゴムズカシイ。
何がどこにアクセスするのか?
何の負荷を気にしているのか?
0831nobodyさん02/04/15 17:36ID:???
$hour:$min:$sec
このように記載すると時間と分と秒数が表示されるのですが、
これに30分足した時間を求めるにはどうすれば宜しいですか?
0832nobodyさん02/04/15 17:58ID:???
>831
それを算出する為にlocaltime()使ってるだろ?
そこの数字に30*60をたしておく。
0833nobodyさん02/04/15 20:45ID:7iLwapD7
画像アップ掲示板で
<a href="$image"><img src="$image" border=0></a>
の部分がありまして、
$imageの拡張子が .gif .jpg .png
の拡張子以外は別の代変え画像を表示したいのですが、
どうすればいいのですか?
0834nobodyさん02/04/15 21:03ID:???
if($image !~ /(\,gif|\,jpg|\.png)/i){ #拡張子にこれらが含まれていなければ
$image = $image2; # $imageの中身を$image2に変更
}
print qq(<a href="$image"><img src="$image" border=0></a>\n);
0835nobodyさん02/04/15 21:03ID:???
>834
タイプミス…
自分で修正して。
0836nobodyさん02/04/15 21:18ID:???
$ancurl = $image;
$image = $altimg if $image =~ /\.(png|jpe?g|gif)$/i;

print qq(<a href="$ancurl"><img src="$image" border=0></a>\n);
0837nobodyさん02/04/15 21:46ID:???
>>834-835さんありがとうございました。
無事にできました。
0838WebBeginer02/04/16 01:35ID:DFygP1Bi
datファイルに複数行に改行した文章を格納した場合、それを一つの変数に読み込む事ってできますか?
例:
bcom.datの内容↓
<STYLE TYPE="text/css">
A { text-decoration: none; }
</STYLE>

cgiで読み込む文章↓
$bcomfile = "./bcom.dat";
open (IN,"$bcomfile");
flock (IN,1);
$bcom = <IN>;
close (IN);

これで$bcomをhtmlの中に書いても、最初の1行<STYLE TYPE="text/css">
しか格納されてないんですよね。

$FORM{'bcom'}=~ s/\r\n|\r|\n/<br>/g;

とすると、改行が<br>に置き換えられてしまうので、結果としてタグが機能しなくなってしまうんですよね。
何とかなりませんか?
0839nobodyさん02/04/16 01:44ID:???
>>838
リストに入れたいのならば普通に
@LIST = <IN>;
で改行で区切ってリストに格納される。
もしスカラーにまとめて格納したいのならば
$list = join("",@LIST);
でおながいします。
なぜ私がおながいしているのか謎である。
0840nobodyさん02/04/16 01:45ID:???
while(<IN>){
$bcom .= $_;
}
0841二重送信だったらスマソ02/04/16 01:46ID:???
>838
while(<IN>){
$bcom .= $_;
}
0842nobodyさん02/04/16 01:46ID:???
ちなみにスカラーに格納する場合は>>840さんの方法のほうが効率的ですな。
もっもちろんそんなの知ってたんだからな!

840より
0843WebBeginer02/04/16 01:55ID:DFygP1Bi
ありがとうございます。お願いついでにもう一つ、
color.datの中身↓
black<>silver<>blue<>silver
で、
$colorfile = "./color.dat";
open (IN,"$colorfile");
@COLOR = <IN>;
close (IN);
($bg_c,$tx_c,$li_c,$h_c) = split(/<>/,$COLOR[1]);

と書いても各変数に値が代入されないのはなぜですか?
0844nobodyさん02/04/16 01:58ID:???
>>843
0から始まる。。。。
0845nobodyさん02/04/16 01:58ID:???
$COLOR[0]
0846やさしいお兄さん02/04/16 02:01ID:???
>838
undef $/;
$bcom= <IN>;
$/= "\n";
これでおながいします。なぜおながいするのかは、わたしにも謎です。
0847nobodyさん02/04/16 02:08ID:3Tlg2ssN
そこらへんにあるperlの掲示板で著作権がなんとかとか言ってるのが多いんですが
どのあたりまで改造して原型をとどめないようにしたら自分のって言っていいんですか?
あー、このスクリプトおもしれーことやってるなーなんて思って
ガチャガチャいじってるうちに原型がなくなるときあるじゃないですか。
そういうのってだめなの?
0848WebBeginer02/04/16 02:11ID:DFygP1Bi
みなさんありがとうございます。>>843のCOLORを0にしたら無事、格納できたんですが、
$body='<body bgcolor="$bg_c" text="$tx_c" link="$li_c">';
として、
<html>
$body
・
・
・
とすると、変数がむきだしに(ソースを見ると<body bgcolor="bg_c"・・・)となってしまい、うまくいかないのですが何故でしょう。
0849nobodyさん02/04/16 02:13ID:???
A改造してAとは全く別物になった → NG
一から書いてAそっくりなものが出来た → OK
0850nobodyさん02/04/16 02:14ID:???
$body="<body bgcolor='$bg_c' text='$tx_c' link='$li_c'>";
自分で調べると言うことも身に付けような。
0851WebBeginer02/04/16 02:33ID:DFygP1Bi
すいません・・・
0852nobodyさん02/04/16 02:42ID:???
>>848
""でかこみなさい。。。。。
0853nobodyさん02/04/16 03:56ID:???
ポケットリファレンスなんだけど
クオート風演算子の風ってのがなんか好き
これって一般的な言い方なんでしょうか?
qq()
0854nobodyさん02/04/16 04:10ID:???
>>853
quote-like operators の直訳だと思うYO!!
0855nobodyさん02/04/16 04:15ID:???
演算子クォート風味
085683102/04/16 05:41ID:???
>>832
どうのように足すのでしょうか?
もう少し具体的にお願いしたいのですが、、、。
0857やさしいお兄さん02/04/16 06:40ID:???
>856
$[ == 0 を前提とすると、

;# 値の取得
($sec, $min, $hur)= (localtime(time+30*60))[0..2];

;# ゼロサプレスなし
$now= sprintf('%02d:%02d:%02d', (localtime(time+30*60))[2,1,0]);
0858nobodyさん02/04/16 09:56ID:TbadFbzP
CGIで、一定時間が来たら
どっかのHPの情報を取ってきて
ファイルに書きこんでいくプログラムはできますか。
(言語Perl)
0859nobodyさん02/04/16 10:05ID:WW7dwT5r
http://www.ne.jp/asahi/data/japan/
0860nobodyさん02/04/16 10:13ID:???
>>858
自垢を超えてファイルを読み込むことはセキュリティ上禁止されてるので
Perlに限らず難しいんじゃないかな?
086185802/04/16 10:19ID:eNjQI1pb
わかりにくかったかもしれません。

例えばAHOO Financeで日経平均が出ているページを毎日PM6:00に読みこんで、
そこから日経平均を文字列で取り出して、ファイルに保存しておく。

二行目はできると思うけど
ユーザーアクションがないときにタイマーで
勝手に作業してくれるようなことはできるのですか?
086285802/04/16 10:52ID:R2KCu+6Y
>>860

じゃぁ、自垢のときに
AHOO Financeで日経平均が出ているページを読みこむ
プログラムは可能ですか?
0863nobodyさん02/04/16 11:00ID:???
SOCKETが使えれば簡単です。
Finance::YahooQuoteモジュールでも見て勉強しなさい。
086483102/04/16 15:41ID:???
>>857
ありがとうございました。
助かりました。
0865nobodyさん02/04/17 01:26ID:BXgzx7GK
訪問者の足跡(/index.html → /foo/index.html → /foo/bar.html → http://www.yahoo.co.jp みたいな、たどった道)
が解析できるソフトで、できるだけ安価(orフリー)なものはないですか?

Apacheの生ログを解析するタイプでも、あるいは前ページにSSIかPHPかIMGタグかなにかで埋め込むタイプでも、
手段は問いません。
0866Dream 黒星02/04/17 02:06ID:???
>865
ソフトが欲しいならスレ違いだ! うせろ!

しかし、作ったほうが早いな! 簡単だからな! っつーか、作れ!
086785802/04/17 11:08ID:42l5cwQk
>>863
自分とこのプロバイダー
SOCKET通信は、localhostのsmtp/tcpのみということです。(TT)

他にやり方ないですかね?
0868nobodyさん02/04/18 00:11ID:1URG3Ku/
>>867
ないでーす死になさい
0869アフォ02/04/18 14:43ID:ZcdM4/xr
実は最近IE6のセキュリティー規制で去年作ったCGIからのクッキー食ってくれないのに
気づいたのですがコンパクトぽりしー?P3P?を書いとけばいいとどこかのサイトでみつ
けたのですが、はてどうしたらよいんでしょうか。

ヘッダーに
P3P: CP='ONLi COM CUR OUR'
が吐き出されるようにまじないしておくと、嘘つきできると書いてあったんすが。
とりあえず対応するにはこれでいいんでしょうか。
cgiは同じドメインのレンタル鯖から呼び出してます。
(まだ試してません)

それとも、まじめ導入すべきなんでしょうか。

perl初心者です。
0870nobodyさん02/04/18 14:51ID:Htj+h4zJ
http://poteto.itits.co.jp/b.asp?S=seijika-toronjyo&KBN=INPUT&RESNO=3
0871nobodyさん02/04/18 17:46ID:fATaEmaK
apeboardを、
書き込み不可で閲覧可能な状態にしておくことできますか?
属性をいじってみたけれど、書き込み不可にするとサーバーエラーになって
うまくできなかったので
エキスパ−トの方、ワザを伝授してください。
0872nobodyさん02/04/18 17:50ID:???
>>871
1名様ご案内〜

スクリプト改造工房 Part4
http://pc.2ch.net/test/read.cgi/php/1012839651/
1をよく読んでから改造依頼すること
0873アフォ02/04/18 18:11ID:ZcdM4/xr
>>872
>>869 の質問はすれ違いでしょうか?
0874nobodyさん02/04/18 18:28ID:???
>873
昼間は人が少ないからせめて24時間待ってみろ。
レスを急かすとレスする人間減るぞ。
0875nobodyさん02/04/18 19:00ID:Xv+8+6gt
ども。CGIの知識が乏しくて申し訳無いのですが、質問させてください。
CGIだけで、Formのフォーカス制御は可能でしょうか?
JavaScriptも使わずにです。
どうも>476 さん辺りのレスを見る限りでは無理そうですが、、、(^^;
0876nobodyさん02/04/18 19:11ID:???
>875
具体的になにをしたいか言ってみればできる事もあるかもしれない。
>477みたいに<form>タグでなら制御できるし。
もっとも、これはCGIの挙動とはいえないが。
0877nobodyさん02/04/18 19:19ID:Xv+8+6gt
>>876
レスありがとうございます。
ちょっとスレ違いなのかもしれませんが、チャットの改造をしていまして
JavaScriptを使わないモードだとsubmitの方にフォーカスが移ったままになってしまうので
これをなんとかクリアーできないものかと。

そういえば>477さんのターゲット指定を忘れていたような気がするので、今一度
試しに逝って来ます。
0878アフォ02/04/18 19:47ID:???
>>874
ありがとうございます。
首長待ちしております。
0879nobodyさん02/04/18 20:06ID:???
>>876
やはり、だめのようでした。
これ以上は、スレ違いのようなので改造スレに逝って来ます。
ありがとうございました。
0880ひこ02/04/18 22:47ID:27B4F9dj
CGI初心者です。
今作っているCGIで「param」というメソッドが出てきます。
意味がわかりません。
そういったメソッド等の意味を調べたりするのに便利な書籍や、
WEBサイトをご存じの方がおられたらアドバイス下さい。
よろしくお願いします。
0881nobodyさん02/04/18 22:51ID:???
>>880
メソッドって何だよ。VB厨か?
それほんとにサブルーチンか?
0882nobodyさん02/04/18 22:55ID:???
$q = new CGI;
my $hoge = $q->param('hoge');
で
<input name="hoge" value="hogevalue">
の値を取れます

CGI.pm 邦訳
http://member.nifty.ne.jp/hippo2000/perltips/Cgi.htm
0883nobodyさん02/04/18 22:55ID:???
>>881 プ.知ったか厨ハッケン.
■ このスレッドは過去ログ倉庫に格納されています