前スレの未解決の質問をコピペ 403 名前:名無しさん 投稿日:2001/05/01(火) 19:20 CGIって、アクセスのたびにプロセスを生成して、 アクセスが増加するとオーバヘッドが大きくなるっていいますよね? ここで、処理するCPUを複数にして分散処理させてやると、 負荷を減らすことはできるんでしょうか? その際、別プロセスを生成しないPHPなんかと比べるとどんな感じでしょうか。
ここで質問して見てる人いるのかなぁ…。 最初の3つと最後の1つを除いて、<> を , に置換する正規表現は どう書いたらいいですか?
4 :
名無しさん@お腹いっぱい。 :2001/05/02(水) 01:32 ID:jafDK2R2
>>1 xdsl053090.211015.metallic.ne.jp
なるほど・・・
スレたてた人のHOST名が分かるのか。初めて知った。。。
5 :
1 :2001/05/02(水) 01:55 ID:???
6 :
ブチ :2001/05/02(水) 02:05 ID:???
$_ = 'A<>B<>C<>D<>E<>F<>G<>H<>I'; print $_."\n"; @array = split(/<>/,$_); $_ = join('<>',@array[0..3]).','.join(',',@array[4..$#array-1]).'<>'.$array[$#array]; print $_."\n"; こんな感じ? $_ = 'A<>B<>C<>D<>E<>F<>G<>H<>I'<>; だとちょっと違う動作するけど。
>>6 $_ = 'A<>B<>C<>D<>E<>F<>G<>H<>I<>';
の場合は
A<>B<>C<>D,E,F,G,H,I<>
になってほしいです。
8 :
名無しさん@お腹いっぱい。 :2001/05/02(水) 04:07 ID:c..OqfwQ
Perlで httpサーバを巡回して情報を集めるスクリプトを作っています。 1つのプログラムで、複数のサイトと同時にソケット通信を行う 方法教えていただけないでしょうか? 今作ったものだとソケット通信するときに終了するまで待機 してしまうため、効率が悪いのです。お願いします。 print SOCKET "GET /index.html HTTP/1.0\r\n\r\n"; while(<SOCKET>) {$d .= $_;} close(SOCKET); #<SOCKET>のところで待機
9 :
ブチ :2001/05/02(水) 07:32 ID:???
10 :
7 :2001/05/02(水) 08:27 ID:???
>>9 語尾が <> だし
A<>B<>C<>D,E,F,G,H<>I
になっちゃうんですけど…。
>>3 =7=10
$_ = 'A<>B<>C<>D<>E<>F<>G<>H<>I<>';
$_ =~ /^([^<>]*<>[^<>]*<>[^<>]<>)(.*)(<>[^<>]*)$/;
$t1 = $1;
$t2 = $2;
$t3 = $3;
$t2 =~ s/<>/,/g;
$_ = $t1.$t2.$t3;
もっと簡単で確実な方法はないものか・・・。
>>6 さんの変形で
$_ .= "\0";
@array = split(/<>/,$_);
$_ = join('<>',@array[0..3]).','.join(',',@array[4..$#array-1]).'<>'.$array[$#array];
$_ =~ s/\0$//g;
の方が確実かな?
12 :
7 :2001/05/02(水) 12:02 ID:???
>>11 < や > が単独で含まれるので前者はボツ。
13 :
ブチ :2001/05/02(水) 12:27 ID:???
>>7 後尾が > だけだと見間違えてた。ゴメ
>>11 < と > がデータに含まれないと仮定するなら [^<>] か . 使って
先頭と後尾を待避させる
>>11 の上半分のが確実だね。
それでいいと思う。訂正ありがとう。
14 :
名無しさん@お腹いっぱい。 :2001/05/02(水) 16:45 ID:WP2JLVuk
15 :
名無しさん@お腹いっぱい。 :2001/05/02(水) 20:32 ID:zg.ymw9.
質問です。 @string = ( 'あ','い','う','え','お', 'か','き','く','け','こ', 'さ','し','す','せ','そ', 'た','ち','つ','て','と', 'な','に','ぬ','ね','の', 'は','ひ','ふ','へ','ほ', 'ま','み','む','め','も', 'や','ゆ','よ', 'ら','り','る','れ','ろ', 'わ','を','ん', 'が','ぎ','ぐ','げ','ご', 'ざ','じ','ず','ぜ','ぞ', 'だ','ぢ','づ','で','ど', 'ば','び','ぶ','べ','ぼ', 'ぱ','ぴ','ぷ','ぺ','ぽ'); ここからランダムに五文字取り出して表示するには どうしたらいいんですか?
16 :
名無しさん@お腹いっぱい。 :2001/05/02(水) 21:03 ID:MW8G6.HA
cgiとかperlとかを1から勉強するのに良い感じのホームページおしえてな。
>>15 srand;
print "$string[rand($#string)]$string[rand($#string)]$string[rand($#string)]$string[rand($#string)]$string[rand($#string)]";
19 :
16 :2001/05/02(水) 21:51 ID:Ey898xBo
20 :
名無しさん@お腹いっぱい。 :2001/05/02(水) 23:20 ID:CcUogTb.
>>17 多分+1しないと最後のが拾えないと思う。もしくは scalar(@string) かで。
あと int でくくっておかないと少数も拾われると思う。
ついでにループ5回にしておけばエレガントかと
for(my $i=0 ; $i < 5 ; $i++){
print $string[int(rand($#string+1))];
}
21 :
17 :2001/05/02(水) 23:33 ID:???
22 :
15 :2001/05/03(木) 00:18 ID:VrIHsOYc
>17、20 ありがとうございました。
23 :
コブラ :2001/05/03(木) 08:39 ID:wH5A8qUQ
>>7 これじゃダメかね?
#!/usr/bin/perl
$s = 'A<>B<>C<>D<>E<>F<>G<>H<>I';
$s =~ s/(.<>.<>.<>.)<>(.)<>(.)<>(.)<>(.<>.)/$1\,$2\,$3\,$4\,$5/;
print "$s\n";
exit 0;
省略すりゃたった4行にもできる(プ
ゲスト募集
http://www.guestbook.de/yasg.cgi?X=52084
24 :
コブラ :2001/05/03(木) 09:25 ID:TOMIoyvM
>>10 ムゥ〜、ならこれでどうかね?
#!/usr/bin/perl
$s = 'A<>B<>C<>D<>E<>F<>G<>H<>I<>';
@q = split(/[a-zA-Z]</, $s);
if($#q == 8){
$s =~ s/(.<>.<>.<>.)<>(.)<>(.)<>(.)<>(.<>.)/$1\,$2\,$3\,$4\,$5/;
}
elsif ($#q == 9){
$s =~ s/(.<>.<>.<>.)<>(.)<>(.)<>(.)<>(.)<>(.<>)/$1\,$2\,$3\,$4\,$5\,$6/;
}
print "$s\n";
exit 0;
25 :
7 :2001/05/03(木) 11:32 ID:???
>>24 ネタ? ならこっちの方が短いぞ
$_ = 'A<>B<>C<>D<>E<>F<>G<>H<>I<>';
$_ = 'A<>B<>C<>D,E,F,G,H,I<>';
print;
いちおうマジレスもしとくとAとかBとかCとか書いてあるのは単なる例で、
実際には <> を除く任意の長さの任意の文字列の組み合わせが入りう
る。当然1文字とも限らない。また <> の個数も7個か8個とは限らない。
だからダメ。
26 :
コブラ :2001/05/03(木) 12:23 ID:TOMIoyvM
>>25 ハァ!?
一応、二行分はサービスしといたる (プ
#!/usr/bin/perl
#$s = 'A<>B<>C<>D<>E<>F<>G<>H<>I';
$s = 'A<>B<>C<>D<>E<>F<>G<>H<>I<>';
$s =~ /(.+?<>.+?<>.+?<>.+?<)(.*)(.+<>)/;
#$s =~ /(.+?<>.+?<>.+?<>.+?<)(.*)(.+<>.+)/;
$h = $1; $t = $3; $d = '<'."$2"; $d =~ s/<>/\,/g; chop($h);
$a = $h.$d.$t;
print "$a\n";
exit 0;
27 :
名無しさん@お腹いっぱい。 :2001/05/03(木) 12:30 ID:mkvgKrag
ゆいちゃっとの表示部をHTMLにする改造方法だれかやっていないでしょうか?
>>24 気持ちはわかるが不要な波風は立てんでくれ。
>>26 データが空だった場合( <><> )とデータ数が変わる場合(<>の数が変化)の対応が不足していると思う。
区切り文字が<>とかある場合は大抵データ数は可変な。11 の前半で問題ないはず。
29 :
28 :2001/05/03(木) 15:41 ID:???
24じゃなくて25だった。逝ってくる。
30 :
7 :2001/05/03(木) 17:52 ID:???
>>28 マジでネタかと思ったんで煽ったつもりはなかったんだけど…
11の前半は < や > が単独で出現した場合に対応できないからダメ
だってば。
今のところ問題なさそうだったのは11の後半だけ。
31 :
山田十 :2001/05/03(木) 21:20 ID:9MBPUkuQ
iモードから掲示板等の更新状況(つまりWinアプリのWWWDのようなヤツ)を
チェックするツールが欲しいor作りたいんですけど、ソケット技術(知識皆無)必須ですか?
ソケットって勉強してみるべきでしょうか?
>>27 htmlにするとロムチェックができなくなるよ。
それでもいいならあると思う。
32 :
コブラ :2001/05/03(木) 23:03 ID:TOMIoyvM
マッチングのみやと、ここまでが限界やな。 #!/usr/bin/perl $s = 'A<>B<>C<>D<>E<>F<>G<>H<>I<>'; $s =~ /(.*?)(<.+?[a-zA-Z])(.*?)(<.+?[a-zA-Z])(.*?)(<.+?[a-zA-Z])(.*?<)(.+[a-zA-Z])( <.*>)/; $a = $1; $b = $2; $c = $3; $d =$4; $e = $5; $f = $6; $g = $7; $h = '<'.$8; $i = $9; $h =~ s/(<>)+/\,/g; chop($g); $x = $a.$b.$c.$d.$e.$f.$g.$h.$i; print "$x\n"; exit 0;
>>30 ほれ。
$_ = 'A<>B<>C<>D<>E<>F<>G<>H<>I<>';
1 while( s/((<>.*?){3})<>(?=.*?<>)/$1,/ );
print;
つーか、なんで11で満足しないんだよ。問題ないだろ?
あと、人に物を訊く時の態度を身につけてくれ。
$_ = 'A<>B<>C<>D<>E<>F<>G<>H<>I<>';
s/<>(?=.*?<>)/$i++<3 ? '<>' : ',' /eg;
ほれ、
>>33 より速いぞ。
>>31 それをCGIでやりたいって事?
作るんならソケットの知識は必要だよ。
既成の物を使うんならいらないだろうけど、俺は知らない。
36 :
名無しさん@お腹いっぱい。 :2001/05/04(金) 03:11 ID:h.IoSR6U
37 :
7 :2001/05/04(金) 03:42 ID:???
>>33 すみません。
つーか私は11の後半で終わりかと思ってたのにいきなり23で変なレス
付け始めたからネタかと思ったんですけど。
>>33 >>34 わーを。
38 :
名無しさん@お腹いっぱい。 :2001/05/04(金) 04:03 ID:SjuK53b2
39 :
名無しさん@お腹いっぱい。 :2001/05/04(金) 06:05 ID:pso/dl7Y
先ず「手段は一つしかない」という固定観念を捨てないとな。 様々な手段がある事を知らしめる意味でも様々な意見が必要だ。 その中から、私は最善と思われる手段をパクらせて頂く (プ
40 :
名無しさん@お腹いっぱい。 :2001/05/04(金) 12:02 ID:9451pGWM
「,」が「&#44;」で 「&」が「&」で 「"」が「"」で 「<」が「<」で 「>」が「>」 は判ったんですが、「:」と「/」はどういうやつか教えてもらえませんか? また、これについて詳しいページないでしょうか。
41 :
名無しさん@お腹いっぱい。 :2001/05/04(金) 12:06 ID:9451pGWM
めちゃくちゃになってしまいましたごめんなさい $value =~ s/,/&#44;/g; $value =~ s/&/&amp;/g; $value =~ s/"/&quot;/g; $value =~ s/</&lt;/g; $value =~ s/>/&gt;/g; ときて、 $value =~ s/:/??/g; $value =~ s/\//??/g; ??に入るのが知りたいんです。
>>40 -41
何故実体参照が必要になる事があるのか考えた事があるのか?
44 :
名無しさん@お腹いっぱい。 :2001/05/04(金) 16:49 ID:PNAoQ0rc
>>42 えと、怪しい文字は避けろとかそんな感じでしょうか。
ごめんなさいよく判ってません。
>>43 これを使えばいいんですね。ありがとうございます。
使い方勉強します。
45 :
43 :2001/05/05(土) 01:48 ID:???
46 :
初心者 :2001/05/05(土) 06:12 ID:Yzwz4hOM
sub get_time{ $ENV{'TZ'} = 'JST-9'; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $day = ('日','月','火','水','木','金','土')[$wday]; $date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year+1900,$mon+1,$mday,$day,$hour,$min,$sec); } 時間・分・秒表示をしたくない時はどれを削ればいいのでしょうか? $sec,$minを消しただけだと日付けなどがでたらめになってしまいました。
47 :
山田十 :2001/05/05(土) 06:17 ID:???
sub get_time{ $ENV{'TZ'} = 'JST-9'; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $day = ('日','月','火','水','木','金','土')[$wday]; $date = sprintf("%04d/%02d/%02d(%s)",$year+1900,$mon+1,$mday,$day,); } でいいと思うよ。しかしオタクくさい構文書くね。>作者の人
>オタクくさい構文 ??
49 :
46 :2001/05/05(土) 06:54 ID:Yzwz4hOM
>>47 山田十さん
ありがとうございました!!
答えだけ聞きたい初心者ですみません。
おかげさまで他の部分もちょっとわかった気がします。
作者はかなり前ですが旧CGI板にたまーにいらしてた方です(^^;;;
50 :
名無しさん@お腹いっぱい。 :2001/05/05(土) 17:08 ID:Yzwz4hOM
すみません、もう一回教えてもらえませんか。 スクリプト中の自動リンクの表示色を変えたいのですが。 どうしてもbodyのテキスト色になるらしく、それだと都合が悪い部分があって 違う色にしたいのです。autolinkが出てくる部分を抜き出してみたけど どこを変えたら色が変わるのかわかりません。 #自動リンク(1 → on, 0 → off) $autolink = 1; と初期設定にあり、それ以外にautolinkが出てくるのは下だけです。 --------------------------------------------------------- if ($autolink){ $com =~ s/(https?|ftp|gopher|telnet|whois|news):\/\/([\w|\!\#\$\%\&\'\(\)\=\-\^\`\\\|\@\~\[\{\]\}\;\+\:\*\,\.\?\/]+)/<A href=\"$1:\/\/$2\">$1:\/\/$2<\/A>/g; $com =~ s/([\w|\!\#\$\%\'\=\-\^\`\\\|\~\[\{\]\}\+\*\.\?\/]+)\@([\w|\!\#\$\%\'\(\)\=\-\^\`\\\|\~\[\{\]\}\+\*\.\?\/]+)/<A href="mailto:$1\@$2">$1\@$2<\/A>/g; }
>>50 とりあえずHTMLの勉強から始めると良いと思われ。
53 :
名無しさん@お腹いっぱい。 :2001/05/05(土) 20:01 ID:LWKdQI1E
ヒミコードの使い方がわかりません <img src="himicode.cgi?$ENV{'REMOTE_PORT'}"> でいいんですか?
>>53 ヒミコードって何だよ?
ここはアンタの質問だけに答える場所じゃないんだ。
>>51 -52
そうですそれです。
リンク色もテキストも全部同一色にしてるからこんがらがってました。
あたりまえですが自動リンクの色がスタイルシートのA:linkと同じ色になってしまうんですね。
この自動リンクの時だけ単独で変えられたらなーと思っていたのですがアホな質問でした。
もうちょっと基本を勉強してきます、、
56 :
山田十 :2001/05/05(土) 21:31 ID:???
特定のリンクの色だけでも変えれるよ。 ただ <FONT color="#xxxxxx"><A link="xxx">hoge</A></FONT> になるようにすればいいだけ。 もしかして <A link="xxx"><FONT color="#xxxxxx">hoge</FONT></A> だったかも。
57 :
山田十 :2001/05/05(土) 21:35 ID:???
<A link>ってなんだ・・・ 確認したらところ、 <A href="xxxx"><FONT color="#000000">hoge</FONT></A> のほうだった。スマソ。
スタイルシートで色変えてんだったら .autolink { color: #xxxxxx } <A class="autolink" href="">hoge</A> でいいじゃん。 これ以上はWeb製作管理板逝け。
59 :
名無しさん@お腹いっぱい。 :2001/05/07(月) 20:33 ID:KRRI..56
foreach文で、配列の何番目の要素を処理しているのか知るにはどうすればよいでしょうか。
>>59 直接は無理だけど、カウントすれば分かるよ。
$i = 0;
foreach (@array){
#何か処理
$i++;
}
>>60 こういうのでもいいかな
foreach $i (0..$#array){
$_ = $array[i];
}
62 :
名無しさん@お腹いっぱい。 :2001/05/07(月) 22:07 ID:CxY5LMqk
65 :
タコ初心者 :2001/05/07(月) 23:15 ID:7eckYoL2
教えてクンになって申し訳ないですが・・・・・ 自分の使っているwin98にJPerl for Win32を インストールし(MS−DOS、C:\windows\perl -v コマンドで、 this is perl,version 5.003_07・・とメッセージ出力を確認済み) anHTTPdも入れました。 簡単なperlスクリプトを、httpdサーバを起動させ httpdのディレクトリ下に置いて、そのperlスクリプトを IE5.01で確認すると、きちんとスクリプトが解釈されてブラウザに 表示されるのですが、その他のディレクトリにスクリプトを 置いた場合などの、つまりwebサーバ機能が働かない状態で スクリプトを動かそうとしても、一瞬DOS画面が現れてすぐ消え、 ブラウザも立ち上がらず、思った通り表示されません。 perlスクリプトは、webサーバ機能が無いと 無意味なのでしょうか? perlをwindowsにインストールしたとしても、 通常アプリケーションのように単体で動かないのでしょうか? いろいろ調べまわったのですが、イマイチ不明なもので・・・ 詳しい方、よろしくお願いしますm(_ _)m それと、anHTTPdでCGIとして動けば、 そのスクリプトはプロバなどのUNIX上でおおむね動くと考えても よろしいのでしょうかね? ほんと、スイマセン。。
>perlをwindowsにインストールしたとしても、 >通常アプリケーションのように単体で動かないのでしょうか? 単体で動きます。 がcgiスクリプトをダブルクリックしてもブラウザは立ち上がりません。 ブラウザで見るにはWebサーバが必要です。 >UNIX上でおおむね動くと考えても 「おおむね」なら考えても宜しいかと
67 :
タコ初心者 :2001/05/07(月) 23:44 ID:7eckYoL2
>>66 ありがとうございます!m(^^)m(_ _)m
perlでも、例えばブラウザを使わない構造できちんと
(例→)データベースソフトを作ったりすれば、delphiや
Cで作ったものと同じように動く、
というような解釈でよろしいのでしょうか?
ホント、助かりました。
ありがとうございました!
>>67 "Perl"関係の本読めや
"CGI"関係の本じゃねーぞ
69 :
61 :2001/05/08(火) 00:21 ID:???
>>61 嘘書いちまった。
$_ = $array[i];
じゃなくて
$_ = $array[$i];
だった。
>>67 66 じゃないけどそう。実行ファイルは吐き出さないけどね。
俺はログの集計とかサイトのページ書き出すのに使ってる。
70 :
59 :2001/05/08(火) 01:08 ID:FOcYLUh.
>>60 ,61
ありがとう。
たしかにそれでわかりますね。
もっと柔軟に考えればよかった…
nobody(とかwww)の環境変数ってどうやって設定すればいいのでしょうか。
72 :
名無しさん@お腹いっぱい。 :2001/05/08(火) 11:40 ID:JEntHDFg
CGIの掲示板の設置のついての質問です。 CGI掲示板の設置を試みました。CGIのソースの始めのperlへのパスも 正確に設定しました。しかし、いざブラウザで確認すると、CGIの掲示板 の中身(ソース)が表示されてしまいます。これは、なにが原因なのでしょうか? perlのバージョンとか関係あるのでしょうか?お願いします。。 パーミッションの設定もちゃんとできてます。。初心者ですので、 初心者にもわかるようにお願いします。。勝手ながら。。
>>71 >nobody(とかwww)の環境変数
環境変数?
$ENV{REMOTE_ADDR} = 'hoge.hoge.ne.jp';
みたいな感じで変えれるよ。意味無いけど。
それともファイルの所有者?それは環境変数とは言わないよ。
変更はrootで
chown user file
それともCGIの実行ユーザ?これも環境変数とは言わないよ。
suexecならconfigureしなおしな。
ただ単にhttpdの動作ユーザ変えるだけなら、httpd.confの
User nobody
Group nobody
ってトコを変えてhttpdをrestartさせればOK。
>>73 Perlのパス云々と言ってるからCGIは使えるんじゃないかな?
>>72 サーバー上で見てる?
http:// ○○/××.cgiで。
エクスプローラーでダブルクリックしているというオチはないよね?
あとサーバーによっては拡張子.plが使えない事もある。
拡張子が.cgiになっているかも確認しよう。
できることならそのサーバーのURLくらい出してもらえると
みんな助言がしやすいと思うぞ。
個人のURLまで出さなくていいから。
76 :
75 :2001/05/08(火) 12:08 ID:???
追伸。 配布されている掲示板なら、配布元URLと、どの掲示板かも 教えてもらえると嬉しい。
77 :
71 :2001/05/08(火) 12:19 ID:???
>>74 いえ、所有者や実行ユーザではないです。
$ENV{PERL5LIB}や$ENV{PERL5OPT}などの環境変数が
予め設定されているようにしたいのですが…。
今はrequire "BEGIN{/home/hoge/config.pl";}という風にしていますが、
いちいちそんな事をしなくとも良い様にしたいのです。
78 :
名無しさん@お腹いっぱい。 :2001/05/08(火) 12:34 ID:JEntHDFg
サーバーでCGIが使えるかどうかを知るにはどすればいいのでしょうか?一応、perlのファイルはありました。
>>78 ここで聞かないで管理者に聞け。
適当な CGI を置いて動けば使える。動かなければ使えない。
だめなら .htaccess をいじる。.htaccess のいじり方が
わからないようならばそもそも CGI など使おうと考えるな。
>適当な CGI を置いて動けば使える。動かなければ使えない。 FAQ見りゃ解る事なんだから、人様の鯖で実験は止めれ。
82 :
名無しさん@お腹いっぱい。 :2001/05/09(水) 01:58 ID:XLZw469c
CGI の環境変数を実行前に設定したい場合 HTTP 要求ヘッダを使って設定できますか? 用は CGI を呼び出す html で 環境変数を指定できればいいのだけど
83 :
名無しさん@お腹いっぱい。 :2001/05/09(水) 02:27 ID:7z0rEdP2
84 :
名無しさん@お腹いっぱい。 :2001/05/09(水) 10:42 ID:0Xn.6zpE
こんにちは。 Perlを使ったCGIでORACLEにアクセスするようなのを作っているのですが、 DBIモジュールでアクセスするのとOraperlでアクセスするのは、 どちらが一般的(?)なのでしょうか? DBIだと $hDb = DBI->connect("dbi:Oracle:ORCL", "orcl/orcl") or die "Cannot connect: " . $DBI::errstr; $hSt = $hDb->prepare($sql); $nRes = $hSt->execute; while(@aRes = $hSt->fetchrow_array()) { push(@data,"@aRes\n"); } $hSt->finish; $hDb->disconnect; って感じだけど。Oraperlだと $lda = &ora_login ( "", $ENV{'ORACLE_DBA'}, $ENV{'ORACLE_PWD'} ); 以下略 構文的にはOraperl使わないほうが楽そうですが・・・ よろしくお願いします。
85 :
名無しさん@お腹いっぱい。 :2001/05/09(水) 15:23 ID:0Xn.6zpE
i-modeのページでで使うカウンタ兼アクセスログを作ろうと思っているのですが、 PCでアクセスしてきた場合、HTTP_REFERERでリンク元が得られますが i-mode端末からだと取得できません。 何か特別な方法が有るのでしょうか? ご存知の方いましたら、ご教授ください。
>>84 -85
DBはよく知らんのでパス
i-modeはUserAgentがReferer吐いてないとかじゃないだろか。
>>84 DBI
#ってかoraperlってまだあったのか・・・
88 :
82 :2001/05/10(木) 01:58 ID:5JL.ZTMM
>>83 返事どうもありがとう
でもこれってサーバーの設定だよね?
えっと実は biglobe での cgi なんだけど
biglobe では自分の web ページからしか cgi を
呼べないことになってます
これをローカルのページからも実行したいなと
ネットスケープからだったら ftp でアップする前の
自分のローカルハードディスクのファイルを開いて cgi を
実行できてしまうのですが
IE はできないので多分 cgi の実行前に HTTP_REFERER を
チェックしてるだけかと思っています
だから html からブラウザに HTTP_REFERER を出さないように
命令?できれば良いんだけどできます?
長くなってすみませんが教えてください
>>88 htmlからは無理でしょう。WinユーザだったらProxomitronを
入れればHTTP_REFERERはいじれるんじゃなかったっけか。
ProxomitronについてはWindows板にスレッドが立ってると思う。
90 :
名無しさん@お腹いっぱい。 :2001/05/10(木) 19:56 ID:.vx/JzU2
似たような質問なのですけどよろしいでしょうか。 あるリンク先のバナーがCGIで書かれていて、イメージを呼び出すと カウンタのようにリファラー取られてしまっているんですけど、この イメージタグを含むリンクのページをCGIにすれば詐称することがで きますか? 色々あってバナーを持ち帰るのはできません。 ご教授ください。
91 :
90 :2001/05/10(木) 20:07 ID:???
ごめんなさい。 CGI使ったところで無理そうですよね。 リンクページを全部テキストリンクだけに書き換えようと思います。
92 :
Σ(゚д゚|||)デキナイ〜 :2001/05/10(木) 22:17 ID:zT8kYQuc
クッキーについて教えてください。 CGIの中でクッキーを設定したいのですが、一度に2つの情報をセットするには どうすればいいのでしょうか?(JAVAは使わないでCGIだけでやりたいです) たとえば、A = 5000 をクッキーにいれたいときは、 print "Set-Cookie: A=5000; expires=曜日, 日付-月-年 時刻 GMT; domain=****; path=/; secure"; これはうまくいきました。 一度に2つセットしたいとき たとえば、A = 5000 と B = 6000 を一度にいれたいときは、 print "Set-Cookie: A=5000; B=6000; expires=曜日, 日付-月-年 時刻 GMT; domain=****; path=/; secure"; としても、Aには値が入っていますが、Bには値が入っていませんでした。 どうしたら一度に複数のデータを記録できるのでしょうか?
93 :
名無しさん@お腹いっぱい。 :2001/05/10(木) 22:56 ID:8zuGcixU
>>92 Set-Cookieヘッダを2回出力すれば大丈夫。
print "Set-Cookie: A=5000; expires=・・・";
print "Set-Cookie: B=6000; expires=・・・";
RFCとかを見たわけじゃなくて経験則だけどね。
94 :
Σ(゚д゚|||)デキナイ〜 :2001/05/10(木) 23:03 ID:zT8kYQuc
>>93 さん
それでもうまくいかなかったです。
サーバの問題ということはないのでしょうか?
他に手はありませんか?
>>93 さん
うまくいきました!! ヘッダの最後に\nを付けわすれていました。
ありがとうございました。
>>94 別の方法
#--
sub set_cookie{
my %set_cookie = @_;
$set_cookie{id} ||= $Me;
$set_cookie{life} ||= 0;
my (@p,$ncs, $key, $val, $exp);
while (($key, $val) = &escape(each %{$set_cookie{cookie}})){
push(@p, $key.':'.$val);
}
$ncs = join('&', @p) or return "";
$exp = &time_fmt(gmtime((time() + $set_cookie{life} * 86400))) . " GMT" if $set_cookie{life};
$exp = $exp ? "expires=$exp" : "";
return "Set-Cookie: $set_cookie{id}=$ncs; $exp\n";
}
#Usage: &set_cookie(cookie => \$cookie, life => LIFE_DAY, id => ID);
#&escapeと&time_fmtは自分で実装してくれや
#--
値を取り出すには
#--
sub get_cookie{
my $cookie = shift || {};
my $id = shift || $Me;
foreach (split(/; /, $ENV{'HTTP_COOKIE'})) {
my ($name, $value) = split(/=/);
if ($name eq $id) {
foreach (split(/&/, $value)) {
($name, $value) = &unescape(split(/:/));
if ($name =~ /^[jJ]/){
Jcode::convert(\$value, 'euc');
}
$cookie->{$name} = $value;
}
last;
}
}
return $cookie;
}
#Usage: &get_cookie(\$cookie)
#&unescapeも同様
#--
つぶれたインデントはソース見てくれや
>>95 さん
有り難うございます。勉強しておきます。
98 :
名無しさん@お腹いっぱい。 :2001/05/11(金) 13:14 ID:K2MfodUs
簡易データベースなんですが、SDBM_Fileって 最大レコード数とかあるんでしょうか? 追加登録してるうちにファイル容量が8Mくらいで 動かなくなってるんですが、、、
>>98 最大レコードが有るかどうかは分からんが、
以前20000件30MBくらいのを作ったことがあるから結構大丈夫かと思われ。
1レコードの制限は1024KBくらいだったような(違ったらスマソ)
100 :
98 :2001/05/11(金) 13:53 ID:???
>>99 サンクスです。
1レコードは1KBって聞いた気がしますが、、、
1024KBなのかな???
調べてみます〜
>>100 いやレコードのサイズは桁が全然違う可能性ありです。
かなり少ないと思った記憶があるので多分1KBが正解かと(;´Д`)
Perlに標準でついてるDBMでSDBMより1レコードの制限緩いの ってあるのかな??
>>102 ウィナーの俺にとってはSDBMだけが標準
誤>ppm DB_File 正>ppm install DB_File だね。すみません。
106 :
99 :2001/05/11(金) 18:45 ID:???
>>SDBM_File ありゃ、よく見ればAnyDBM_Fileにもラクダ本にも書いてあった(;´Д`)<1K スマソ98 _gunzipさんサンクスコ
ものすごく基本的な質問でもうしわけないのですが、以下のCGIを実行すると 一部の漢字だけ化けます。なぜでしょうか? #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n<HEAD>\n<TITLE></TITLE>\n</HEAD>\n"; print "<BODY>\n"; print "うまく行くかな〜?<P>\n"; print "可能か不可能か<P>\n"; print "なんだこりゃ?ばける!化けるうぅぅ!<P>\n"; print "表示できない。<P>\n"; print "</BODY><P><BR>\n</HTML>"; 実行結果----------------------------------- うまく行くかな〜? 可狽ゥ不可狽ゥ なんだこりゃ?ばける!化けるうぅぅ! 侮ヲできない。 ------------------------------------------- ・・・・というふうに、「能」や「表示」の部分だけが化けました。 文字化けを回避するにはどうすればいいのでしょうか?
>>107 -----------
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<HTML>\n<HEAD>\n<TITLE></TITLE>\n</HEAD>\n";
print "<BODY>\n";
print "うまく行くかな〜?<P>\n";
print "可能\か不可能\か<P>\n";
print "なんだこりゃ?ばける!化けるうぅぅ!<P>\n";
print "表\示できない。<P>\n";
print "</BODY><P><BR>\n</HTML>";
-----------
↓ここも参考に
http://www.psl.ne.jp/perl/pdojo00c.html
>>108 さん
おおっ、即レスどうもです!
さっそくブックマークしました。
文字によって化けたり化けなかったりで困っていたところでした。
ありがとうございました。m(_ _)m
>>109 print "Content-type: text/html\n\n";
print "<HTML>\n<HEAD>\n<TITLE></TITLE>\n</HEAD>\n";
print "<BODY>\n";
print "うまく行くかな〜?<P>\n";
print '可能か不可能か';
print "<P>\n";
print "なんだこりゃ?ばける!化けるうぅぅ!<P>\n";
print '表示できない。';
print '<P>\n";
print "</BODY><P><BR>\n</HTML>";
こんな手もあるし
print <<'PRINT_AREA';
Content-type: text/html
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
うまく行くかな〜?<P>
可能か不可能か<P>
なんだこりゃ?ばける!化けるうぅぅ!<P>
表\示できない。<P>
</BODY><P><BR>
</HTML>
PRINT_AREA
こんな手もある。
ただし、変数を含まない事が前提だよ。
変数を含むなら\を使うのが面倒だけど間違いはない。
111 :
110 :2001/05/11(金) 19:29 ID:???
スマン。 上の例、一箇所タイプミスがあった。 下から2行目の「'」は「"」に置き換えてくれ。
EUCで書くという手も require 'jcode.pl'; print jcode::sjis(<<EUC_STRING); 表示可能 EUC_STRING use Jcode; print Jcode->new(<<EUC_STRING)->sjis; 表示可能 EUC_STRING
113 :
つーか :2001/05/11(金) 19:45 ID:???
尻Pはヤメレ
115 :
名無しさん@お腹いっぱい。 :2001/05/13(日) 00:16 ID:YXpjZl3Y
掲示板で半角カナ文字を使いたいのですが・・。 どうしたらいいでしょうか?
116 :
名無しさん@お腹いっぱい。 :2001/05/13(日) 01:50 ID:KhD43/0o
117 :
名無しさん@お腹いっぱい。 :2001/05/13(日) 02:44 ID:mWjW2GW.
>>115 フォームのHTML、CGIの処理、CGIの出力すべてEUC-JPに統一する。
jcode.plはShift_JISの半角カナは無視するがEUC-JPの半角カナは
きちんと見分けるから。
118 :
名無しさん@お腹いっぱい。 :2001/05/13(日) 06:40 ID:KhD43/0o
>>115 eucを広めたいunix厨が勝手なことを言っているが、
漢ならShift_JISを断固として用いるべき。
119 :
名無しさん@お腹いっぱい。 :2001/05/13(日) 08:57 ID:dxsYpXBI
>>118 何でもいいけど、とりあえず、
Shift_JISでやるメリットを言ってくれ。
内部処理はEUCで 出力はShift_JISで やってるよ。
121 :
名無しさん@お腹いっぱい。 :2001/05/13(日) 11:07 ID:wzciJvwk
>>120 それってjcode.plにとって最悪な組み合わせじゃん・・・。
>>121 getcode()だけ都合の良いようにチェーンナップしてあるからOK
123 :
名無しさん@お腹いっぱい。 :2001/05/13(日) 13:22 ID:Y0ES4yVQ
質問です。 以前あった世界幼児語化計画のように ネット上のファイルを読み取ってCGI上で扱うにはどうしたら良いですか?
124 :
JAPU :2001/05/13(日) 14:36 ID:???
126 :
123 :2001/05/13(日) 15:25 ID:kYPS1.W2
>>124 ,125
多謝です。
自分の考えてたことは全く違っていたので質問して良かったです^^;。
ログファイルに追加書き込みをする際に、ファイルの最後ではなく 先頭に追加したいのですが、どうすれば良いのでしょうか? レベルの低い質問かもしれませんが、どなたかご教授願います。
「先頭に追加」は全て書き直さない限り不可能。 単にファイルポインタを先頭に戻すだけならseek()すれば良い。
129 :
121 :2001/05/13(日) 22:23 ID:???
>122 なるほど。そうなんかー。 おれもjcode.plのgetcodeを改造しようとしたことが あるんだけど、結局Shift_JISで半角カナを使うのはあきらめたのさ。
130 :
名無しさん@お腹いっぱい。 :2001/05/13(日) 22:40 ID:nnXImtqM
2ちゃんはjcode.pl使ってないの?
132 :
75 :2001/05/13(日) 23:25 ID:???
>>127 発想の転換。
ファイルの末尾にデータを追記して、
呼び出す時にreverseかける。
どこかのクッキーが残ってた。 スマン。
jcode.pl使わなければいいじゃん…
>>127 ログファイルを2つ用意して、Aに書き出し→BをAの末尾につなげる→AをBにリネーム…
75氏のが普通だろうけど。
あるいは末尾に追加して、呼び出す時に後ろからn行取り出すとか…
136 :
127 :2001/05/14(月) 00:06 ID:???
皆さんありがとうございます。
いろいろと参考になりました。
書き込みの件は
>>132 さんのやり方でやってみることにします。
本当にありがとうございました。
137 :
115 :2001/05/14(月) 00:09 ID:GEJzHA/g
138 :
名無しさん@お腹いっぱい。 :2001/05/14(月) 11:21 ID:ltgKBd82
掲示板に書き込みすると "テスト書き込み"→"テスト書き込・/B>" みたいに化けるんですが、どこが悪いんでしょうか? 教えていただきたいです
chopの予感
>>138 んなヘタレスクリプト使うなよ。
解決策:
他のCGIスクリプトに変える
142 :
138 :2001/05/14(月) 11:52 ID:ltgKBd82
>>138 1:それはキミが作ったスクリプトかい?
2:変なところにchopがないかい?
3:スクリプトをtxtにして公開したり出来ないかい?
答えようがないぞ。
どこが悪いと言われれば、キミの聞き方が悪い。
ちゃんとした聞き方をすればちゃんと答えてくれる人の方が多いよ。
ここはね。
145 :
143 :2001/05/14(月) 12:00 ID:???
こっちが書き込んでるうちに書き込まれたか。
>>142 配布品なら
>>144 さんの通り、作者さんに聞いた方がいい。
作者に伝えて問題をなくしてもらったほうが他の人のためにもなる。
知識の少ないキミがやるよりも製作者当人がやったほうが問題が起きない。
キミも余計な手間が減る。
いい事尽くしな気がするけど?
146 :
138 :2001/05/14(月) 12:58 ID:ltgKBd82
う〜ん、とりあえず自力で頑張って駄目なら作者に聞いてみまふ
147 :
Σ(゚д゚|||)デキナイ〜 :2001/05/14(月) 15:04 ID:9ZSccF4Q
いつもお世話になっております。 今日は、「symlink」関数を使ったファイルロックについて質問です。m(_ _)m $lockfile ... パーミッション707の適当なフォルダの適当なファイルを指定。 (例)$loclfile = "./tmp/file.lock"; sub file_lock { local($retry) = 10; # try to create symbolic link. while (!symlink($$, $lockfile)) { # timeout (abort) if (--$retry <= 0) { unlink($lockfile); &fl_error("error on exclusion control."); } # wait a few second and retry. sleep(1); } } 上記のサブルーチンをつかって、ファイルのロックをしてみようと思うのですが、 複数の種類の書き込みについて、上のファイルロックを使いまわしてよいのでしょうか? 例えば、 (1)掲示板のメッセージを書き込むときに &file_lock使用。 (2)アクセスカウンターの読み書き部分で &file_lock使用。 (3)ログ記録を取る際に&file_lock使用。 などのように使いまわした場合、(1)(2)(3)の処理が同時に起こったら、 $lockfileで指定したファイルが壊れることはないのでしょうか? もしそれがダメなら、(1)(2)(3)でそれぞれ $lockfileの部分を (1)(2)(3)で使い分ければ安全でしょうか?
>>147 問題は$lockfileが壊れる事よりも
(例えば)カウンターへの書き込みと同時にBBSに書き込むことで
無駄な時間を消費しなければならない点にある。
$lockfileの名前をスクリプト毎に変えるべし。
わかりました。 これだとリトライが発生しやすくなるということですね。 使い分けてみますm(_ _)m 助言、ありがとうございました。
150 :
Σ(゚д゚|||)デキナイ〜 :2001/05/14(月) 15:35 ID:9ZSccF4Q
追加質問です。こういう方法で良いでしょうか? (さきほどのfile_lockの中身で$lockfileの部分を$_[0]にしています) sub file_lock { local($retry) = 10; # try to create symbolic link. while (!symlink($$, $_[0])) { # timeout (abort) if (--$retry <= 0) { unlink($_[0]); &fl_error("error on exclusion control."); } # wait a few second and retry. sleep(1); } } こうしておいてから、BBSやログやカウンター用のロックファイルを $bbs = "./bbs.lock"; $log = "./log.lock"; $counter = "./counter.lock"; と決めておいて、 実際にファイルロックを使うときは BBSの場合は ------------------------ &file_lock($bbs); BBSの書き込み処理 unlink($bbs); ------------------------ ログ書きの場合は ------------------------ &file_lock($log); LOGの書き込み処理 unlink($log); ------------------------ アクセスカウンターの場合は ------------------------ &file_lock($counter); アクセスカウンターの読み書き処理 unlink($counter); ------------------------ という感じに使い分けてみました。こんな感じで大丈夫でしょうか?
>>150 待てよ…?
もしや同じスクリプト内でのカウンターやらログやらなのか?
もしそうならLockfileを分ける必要は無いと思うぞ。
違うならそれでヨシ。
しかしそれは何処から拝借したルーチンだ?
随分書き方が古臭いが…。
>>152 不安なら耐久テストしてみれば良いだろ。
flockではまずいという環境があるのは事実だが、
テストもせず他人の(flockを使わない)ロックルーチンを拝借するのは
アフォであると言わざるを得ない。
掲示板作ってました。 日本語を含む文字列に対し、パスワードとして数文字の半角英数字を与えることで 暗号化したり複合化したりできたらカコイイと思ったのですが、いかなる方法で実現可能か、 ヒントもらえませんか。
NC4.xで、フォームのTEXTAREAにデータを書き込むと、32kByte ぐらい書いたところで、書き込めなくなるのですが、これは ブラウザ側の仕様なのでしょうか?もっと無尽蔵に書き込む 方法は有るのでしょうか。
>155 maxlengthをでかい数値指定してみるとか。
158 :
名無しさん@お腹いっぱい。 :2001/05/15(火) 21:37 ID:YeE71NT2
アクセス解析設置してるんですけど、 $ENV{'REMOTE_HOST'}でホスト名が取れないサーバなので gethostbyaddrを使ってるんですけどそれでもとれません。 どうしてでしょうか?
gethostbyaddrが使えないから。
$ENV{'REMOTE_HOST'}も取れなくてgethostbyaddr()も使えない場合、 どうすればリモートホストを取れるようになるよ?
161 :
名無しさん@お腹いっぱい。 :2001/05/16(水) 01:46 ID:cQQ4PmNk
>>160 サーバ管理者に土下座して「逆引きさせてくだせ〜」と頼む。
それがいやならNet::DNSモジュール等を利用して、
どこかの利用可能なDNSに問い合わせる。
162 :
158 :2001/05/16(水) 21:11 ID:7GWmKzdU
ほかのCGIではgethostbyaddr使えてるんで gethostbyaddrが使えないということではないようなんですけど… サーバ(hi-ho)がちょっと特殊らしいんですけど、それが原因なんでしょうか。
163 :
JAPU :2001/05/16(水) 21:18 ID:???
>>155 Windows 95系だと32kの制限無かったっけ?
メモ帳とかもそういう制限あった気がする。
>>158 他のCGIはhi-hoに置いてホスト名取れてんの?
ならhi-hoのせいじゃなく、君の(CGIの)せい。
165 :
158 :2001/05/16(水) 22:04 ID:7GWmKzdU
>>164 >ならhi-hoのせいじゃなく、君の(CGIの)せい。
やっぱりそうですよね…
あやしいとしたら、どのあたりが考えられるでしょうか。
もう自分の力ではわけがわからないので…
ちなみにCGIはefstatです。
>>163 たぶん、32K制限の理由はそれですね。
NN4.06のTEXTAREAを調べたら「Editコントロール」という
旧世代の部品を使ってた。
167 :
名無しさん@お腹いっぱい。 :2001/05/16(水) 22:34 ID:kXzD2IvU
>>165 efstatのサポート掲示板で聞いてみたら?
168 :
名無しさん@お腹いっぱい。 :2001/05/17(木) 02:00 ID:VtK2bQ4Y
BBSでメール記入欄に特定のことばをかくと題名とかテキスト文字の 色を変えるCGIスクリプトだれかおしえてくれませんか?
170 :
40-41 :2001/05/17(木) 19:33 ID:Ts7RJcK6
>>43 超亀レスすいません。
あれからしばらくネット環境に居なかったもので。
教えて頂いてありがとうございました。
171 :
155 :2001/05/17(木) 22:51 ID:???
172 :
名無しさん@お腹いっぱい。 :2001/05/18(金) 04:31 ID:Gh/rMrrA
173 :
143 :2001/05/18(金) 07:28 ID:???
>>172 中身は見てないけど、
<IMG SRC='wwwcount.cgi?gif' WIDTH=96 HEIGHT=18 ALT='Counter'>
に変えて試してみな。
ダブルクォーテーションの中ではダブルクォーテーションは使えないから。
使う方法もあるけど。
174 :
173 :2001/05/18(金) 07:30 ID:???
クッキー消し忘れ。 鬱。 ついでだからダブルクォーテーションを使う方法。 <IMG SRC=\"wwwcount.cgi?gif\" WIDTH=96 HEIGHT=18 ALT=\"Counter\">
バックスラッシュより print qq{<img src="">}; print<<EOD; <img src=""> EOD の方が好きだ。
176 :
173 :2001/05/18(金) 13:01 ID:???
177 :
名無しさん@お腹いっぱい。 :2001/05/18(金) 21:05 ID:BJcdRv7c
>>172 wwwboard.cgiの</h2>の下あたりに入れてみたら?
178 :
172 :2001/05/19(土) 01:10 ID:???
>>173 -177
無事解決しました。
ありがとうございました。
根本的な「""」の間は「""」が使えない、という知識が欠落してました。
179 :
ルーキー :2001/05/22(火) 10:08 ID:S.XMVYxw
ド初心者&教えて君ですみません。 見積&発注cgiを書いています。 1ページ目:入力フォーム -> post 2ページ目:見積書&発注チェック -> sendmail 3ページ目:発注完了メッセージ という構成です。 1ページ目で、希望商品と発送先などのデータを取って、 2ページ目で、それぞれの商品に発注確認のチェックボックスを設けて、 print "<input type=checkbox name=item_1 value=on>口紅\n"; print "<input type=checkbox name=item_2 value=on>マスカラ\n"; print "<input type=checkbox name=item_3 value=on>マニキュア\n<br>"; その結果を、1ページ目:入力フォームで作った read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'}); に格納してメール送信したいと考えていますが、 2ページ目のデータを$formdataへ追加する方法が判りません。 どなたか助けてください。よろしくお願いします。
>>179 隠しフィールドを使って選択した商品を送信する
print qq{<input type="hidden" name="selected_item" value="$selected_item">};
181 :
ルーキー :2001/05/22(火) 10:59 ID:S.XMVYxw
>>180 ありがとうございます。
しかし、イマイチ判りません。
判らないことその1
print "<input type=checkbox name=item_1 value=on>口紅\n";
print "<input type=checkbox name=item_2 value=on>マスカラ\n";
print "<input type=checkbox name=item_3 value=on>マニキュア\n<br>";
から
print qq{<input type="hidden" name="selected_item" value="$selected_item">};
へどうやって変数の引継ぎをするのか?
判らないことその2
どこに
print qq{<input type="hidden" name="selected_item" value="$selected_item">};
を置くのか?
多分、
print "<a href=$filename?$formdata\&send=sendmail>\n";
print "<font size=5>この内容で注文する</a></font>\n";
の直前かと思うのですが・・・
よろしくお願いします。
>>181 逆に聞きたい。
2ページ目はformデータじゃなくて、アンカータグを使いたいのかい?
だとしたら
>>180 さんのやり方はできないよ。
2ページ目のデータも
print qq(<form method=POST action=$filename>\n);
print "<input type=checkbox name=item_1 value=on>口紅\n";
print "<input type=checkbox name=item_2 value=on>マスカラ\n";
print "<input type=checkbox name=item_3 value=on>マニキュア\n<br>";
print qq(<input type=submit value="この内容で注文する"\n);
print qq(</form>\n);
みたいにしないとデータは送信できない。
print "<a href=$filename?$formdata\&send=sendmail>\n";
print "<font size=5>この内容で注文する</a></font>\n";
このやり方だと、チェックボックスの意味がなくならないかい?
183 :
ルーキー :2001/05/22(火) 11:48 ID:S.XMVYxw
>>182 アンカータグには固執していません。
ただ、
print qq(<form method=POST action=$filename>\n);
を宣言しますと、
冒頭に、
if($QUERY{'send'} eq 'sendmail') { &sendmail; }
elsif ($QUERY{'action'} eq 'estimation') { &psge2; }
else { &page1; }
を設定してあるので、2ページ目から1ページ目に戻ってしまいます。
2ページ目でチェックボックスを選択した後は、sendmailにしたいのです。
ごめんなさい。自分でも説明になって無い気がします。
よろしくお願いします。
こんな感じかのー #!/usr/bin/perl use strict; my @items = qw(item1 item2 item3); my %page = ( page1 => \&start_page, page2 => \&send_mail, page3 => \&end_page, } parse_query(POST => \%q); if($page{_stat}){ $page{_stat}->(\%q) }else{ &error; } sub start_page{ &入力フォーム出力; } sub send_mail{ my $select = shift; my $selectitem = join "&", @{$select}{@items}; print<<"**SENDMAIL**"; content-type: text/html;charset=$charset; <title>発注確認</title> <p>以下の内容で送信します。</p> <form action="$filename" method="post"> <input type="hidden" name="selected" value"$selectitem"> <!--他、送信ボタンなど--> </form> **SENDMAIL** } sub end_page{ my $data = shift; &メール送信; &発注完了メッセージ出力; } __END__
185 :
182 :2001/05/22(火) 13:12 ID:???
>>183 print qq(<input type="hidden" name="send" value="sendmail">\n);
をフォームの中に入れたらいいんじゃないかな?
そうしたら$QUERY{'send'}にsendmailが入って、メール送信処理に行くでしょ?
違うのかな?
186 :
ルーキー :2001/05/22(火) 13:42 ID:tyzDAZII
たくさんのヒントをありがとうございます。 基本的に182さんのでやろうかと思ってます。 さっき、 print qq(<input type="hidden" name="send" value="sendmail">\n); をフォームの中に入れたらいいんじゃないかな? をやってみたんですが、何故かエラーになるんです。sendmailすると。 184さんのも、「なるほど」と思うのですが、作り変える自信と理解が足りない気がします。 結果がでたらまたご報告します。 (トロイので時間かかりそうです。。)
187 :
ルーキー :2001/05/22(火) 14:01 ID:tyzDAZII
>>182 さん
エラーの原因がわかりました。
page1で格納された$formdataの最後部分に、page2で取得された変数を足して
sendmailしたいのですが、page2からPOSTするとpage1のデータがリセットされてしまいます。
何か良い解決法がありましたら教えてください。
188 :
182 :2001/05/22(火) 14:22 ID:???
>>187 foreach(keys %QUERY){
print qq(<input type=hidden name="$_" value="$QUERY{"$_"}"\n);
}
を<form></form>の間に入れてみそ。
余計なデータも多分入っちゃうけど。
$formdataをそのまま送りたいんだよね?
キミはどういうやり方をしてるのかな?
多分そのやり方がまずいと思うんだけど、もう少し説明をもらえるかな?
少しHTMLの勉強もした方がいいかもしれない。
189 :
182 :2001/05/22(火) 14:23 ID:???
>>188 自己レス。
記入ミスがあった。
foreach(keys %QUERY){
print qq(<input type=hidden name="$_" value="$QUERY{"$_"}">\n);
}
190 :
ルーキー :2001/05/22(火) 16:42 ID:0Hl.W4fE
>>182 さん
ごめんなさい。ずっと悩んでました。
foreach(keys %QUERY){
print qq(<input type=hidden name="$_" value="$QUERY{"$_"}">\n);
}
を<form>と</form>の間に入れてみたけど、エラーになってしまいます。
>多分そのやり方がまずいと思うんだけど、もう少し説明をもらえるかな?
以下のように書いてあります。(perlです・・)
print "<form method=POST action=$filename>\n";
print "<font size=-1 color=red>必要な商品を選択してください(複数可)</font><br>";
print "<input type=checkbox name=item_1 value=on>口紅\n";
print "<input type=checkbox name=item_2 value=on>マスカラ\n";
print "<input type=checkbox name=item_3 value=on>マニキュア\n<br>";
foreach(keys %QUERY) {
print "<input type=hidden name=$_ value=$QUERY{$_}>\n";
}
print "<input type= hidden name= send value= sendmail >\n";
print "<input type=submit value=この内容で注文する\n";
print "</form>\n";
}
else {
print "<font size=4 color=blue>この内容で資料請求する場合は、前画面で連絡先を入力してください。</font>\n";
}
ご面倒かけます・・・
191 :
182 :2001/05/22(火) 17:01 ID:???
いや、$formdataをどう処理しているかを聞きたいんだけど。 こっちも聞き方悪くてスマン。 $formdataはきちんと%QUERYに分けられてるんだよね? ↓こんな感じで。 @pairs = split(/&/,$buffer); foreach $pair (@pairs){ ($key,$value) = split(/=/,$pair); $QUERY{$key} = $value; } あと、 foreach(keys %QUERY){ print qq(<input type=hidden name="$_" value="$QUERY{"$_"}">\n); } をそのままコピペしてないよね? 見やすいように全角スペース使ってるから、そのままコピペしたら当然エラーが出るけど。 それと、キミの書き方を見ていると入力されたデータに関わらず 口紅やマスカラとかが選択されているようにも見えるんだけど、 その辺は抜かりないよね? あとは・・・、なんだろう? なんとなく基本的な部分がヌケてるように思えて。
192 :
ルーキー :2001/05/22(火) 17:34 ID:0Hl.W4fE
>いや、$formdataをどう処理しているかを聞きたいんだけど。 流れは以下のとうりです(長文ごめんなさい)。 #!/usr/local/bin/perl require './jcode.pl'; #もろもろの初期設定 #データエリア #クッキーを格納する名前を設定する #===入力データの格納($formdataに)====================== if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'}); } else { $formdata = $ENV{'QUERY_STRING'}; } #===入力データの分解〜不用文字列のデコード〜S-JIS変換〜連想配列に格納====== @pairs = split(/&/,$formdata); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/\n//g; $value =~ s/\,//g; &jcode'convert(*value,'sjis'); $QUERY{$name} = $value; } #===CGIが呼び出された条件によって処理を分岐============= if($QUERY{'send'} eq 'sendmail') { &sendmail; } elsif ($QUERY{'action'} eq 'estimation') { &psge2; } else { &page1; } #===入力画面を生成=========================== sub page1 { $count = @DATA; &html_head; print "<form action=$filename method=POST>\n"; print "<input type=hidden name=action value=estimation>\n"; 中略 もろもろ入力 print "<p><input type=submit value=試算書作成></p>\n"; print "</form>\n"; 後略 exit;} #===試算結果作成============================ sub psge2 { &html_head; 中略 各アイテムの料金を計算させて、表示。 print "<form method=POST action=$filename>\n"; print "<input type=checkbox name=item_1 value=on>口紅\n"; print "<input type=checkbox name=item_2 value=on>マスカラ\n"; print "<input type=checkbox name=item_3 value=on>マニキュア\n<br>"; foreach(keys %QUERY){ print "<input type=hidden name=$_ value=$QUERY{$_}>\n"; } print "<input type= hidden name= send value= sendmail >\n"; print "<input type=submit value=この内容で注文する\n"; print "</form>\n"; 後略 #===メールメッセージを生成======================== #===メール送信サブルーチン(&sendmail)==================== >見やすいように全角スペース使ってるから、そのままコピペしたら当然エラーが出るけど。 ??直したつもりなんですが・・ 上記のとおりです。 ホントにお手数かけます。
193 :
182 :2001/05/22(火) 19:05 ID:???
foreach(keys %QUERY){ print "<input type=hidden name=$_ value=$QUERY{$_}>\n"; } を削除したらエラーが出ないよね? それでもエラーが出るならエラーの原因は別。 (エラーが出る場合は、まず色んな所を削除してみて、 どこを削った時にエラーがなくなったかを調べるのが 原始的だけど確実。) もし例の部分を削除してもエラーが出ないなら(そこに原因があるなら) foreach(keys %QUERY){ print "<input type=hidden name=$_ value=$QUERY{$_}>\n"; } こう変える。 こうしてくれないとエラーが出る。 全角スペースと半角スペースの違いはわかるよね? タブを使うとHTMLでは表示されないから、俺が全角スペースを 使ってたんだけど、gun_zipさんみたいに 使った方が 良かったな。 打ち込み面倒だから全角スペース使ってたんだ、悪かった。 それ以外の部分についてはあまり問題を感じない。 (わざわざダブルクォーテーションを使う理由はわからないが) 少なくともそれをコピペして(一部修正して)試した所、 こっちではエラーが出てないんだけど、そっちでは どんなエラーが出てる? まず自分で色々試してみてくれ。 こっちは全貌が見えないんだ。 デバッグの基本は色々試す事。 人に聞くのもいいけど、もう少し色々自分で試してみてくれ。 色々やって手の打ちようがなくなったら、検索サイト行き。 それでもどうしてもダメなら人に聞く。 それが一番勉強になるしね。 自分の教え方の悪さを棚上げしてこれってのもなんだけどね。 むしろ俺が何か大きな勘違いしてるような気すらしてきた。 手間かけさせて悪い。
194 :
名無しさん@お腹いっぱい。 :2001/05/22(火) 19:09 ID:ofJMUrRg
はじめまして THE ROOMのアクセスランキングで難しくてわからないことがあるので教えていただけませんか?Ranking Link Ver.1.70のcgiですが、管理人ページの登録情報表示(sub list1)で頭文字でsortするのではなくアクセス数でsortして表示するようには出来ないものでしょうか?
1.THE ROOMとやらのそのアクセスランキングを 検索してソース落として回答して検討してくれる親切な人が現れるのを待つ 2.そのアクセスランキングを偶然知っていて 検索してソ(中略)親切な人が現れるのを待つ
s/回答/展開/
>>194 ソートの処理を行ってるサブルーチンを探して、頭文字にあたる変数
をアクセス数にあたる変数に入れ替えてみる。
198 :
ルーキー :2001/05/22(火) 19:27 ID:0Hl.W4fE
>>182 さん
できました。
>もし例の部分を削除してもエラーが出ないなら(そこに原因があるなら)
foreach(keys %QUERY){
print "<input type=hidden name=$_ value=$QUERY{$_}>\n";
}
こう変える。
この部分が原因でした。
次回お会いしたときは、もっと成長してるよう、頑張って勉強します。
ありがとうございました。
>>194 まずはその配布スクリプトの配布元URLをみんなに教える。
200 :
名無しさん@お腹いっぱい。 :2001/05/22(火) 21:33 ID:ofJMUrRg
201 :
名無しさん@お腹いっぱい。 :2001/05/23(水) 15:55 ID:AMvalJ9M
日本語の処理が特別なのは"異なる文字コードが混在している可能性があるから" であって、その"$value =~ tr/+/ /"などの処理とは無関係だぞ。
>>201 nplib.pl の 180行目あたり見れ。
204 :
201 :2001/05/23(水) 21:02 ID:epsCb6tE
205 :
201 :2001/05/23(水) 21:03 ID:???
>>204 数値実体参照→数値文字参照です。逝ってきます…
>>205 そういう情報はとっとと出しましょう
#!/usr/bin/perl
use 5.6.0;
use Jcode;
$str = '???';
$str =~ s/?(\d{5});/pack('U*', $1)/eg;
print Jcode->new($str)->sjis;
__END__
ゲハ(;´Д`) $strの中身が化けてしまったが、文字参照ね。念の為。
>>201 とりあえず、print "Content-type: text/html\n\n";
のところを、
print "Content-type: text/html; charset=x-euc-jp\n\n";
みたいにしてみたら?
>>208 (゚Д゚)ハァ?
まだx-euc-jpを薦める奴なんて居たのか…(驚)
>>209 ご、ごめんなさい間違ってたみたいですね。
EUC表示使ってないので…
正解はEUC-JPですか?
211 :
201 :2001/05/23(水) 23:29 ID:???
>>206 ええと、これをテキストファイルにコピーして拡張子を.plで保存して、それから
どうすればいいんでしょう。あとこれってJcode.pmが必要なんじゃないんでしょうか。
$strの中身が化けたとのことですが、化ける前が推測できません・・・
教えてチャン厨房ですみません。もう少しだけお付き合いください。
>>210 正解
>>211 化ける前のは"テスト"を数値文字参照化させたもの。
>>204 に書いてあるやつな。つーかそれ以外に何がある?
で、"use Jcode"と書いてあるからには当然Jcode.pmが必要
use 5.6.0は不要かもしれん
関係ないが質問に答えてほしければageろや。
sageで書いて無視されても文句いえねーぞ。
213 :
201 :2001/05/24(木) 00:50 ID:sL7IkDYk
>>212 わーごめんなさい。
結果報告です。
あれからJcode.pmを落としてインストールし、nplib.plの186行目以下に
use 5.6.0;
use Jcode;
$value =~ s/&#(\d{5});/pack('U*', $1)/eg;
$value = Jcode->new($value)->sjis;
を付け加えて、An HTTPD上で実行したら成功しました!
皆様のご指導の賜物です。本当にありがとうございました。
が。ローカルで成功したもののサーバーに載せたらやはり動かない・・・
Jcode.pmがないって言われてしまうんですが、これはサーバーにインストールするしか
ないのでしょうか。jcode.plと勝手が違うので戸惑ってます。
214 :
212 :2001/05/24(木) 00:58 ID:???
215 :
名無しさん@お腹いっぱい。 :2001/05/24(木) 03:21 ID:gHUnUmaM
age
216 :
名無しさん@お腹いっぱい。 :2001/05/24(木) 10:13 ID:R30YzE8A
フォームでMETHODがPOSTのとき何が送られてるんですか? サンプルで教えてください。
>>216 当然フォームに入力された内容が送られる。
↓に適当なFORMからPOSTで送信してみれ
----------------------------------------------
#! /usr/local/bin/perl
my $query;
read STDIN, $query, $ENV{CONTENT_LENGTH};
print "Content-Type: text/plain\n\n";
print $query;
>>216 当然フォームに入力された内容が送られる。
↓に適当なFORMからPOSTで送信してみれ
----------------------------------------------
#! /usr/local/bin/perl
my $query;
read STDIN, $query, $ENV{CONTENT_LENGTH};
print "Content-Type: text/plain\n\n";
print $query;
なんで2重投稿になるんだ?
220 :
名無しさん@お腹いっぱい。 :2001/05/24(木) 11:58 ID:Dq/jNNBM
cwd()・・・最も安全,'pwd'と等価 getcwd()・・・getcwd(3),getwd(3)を再実装 fastcwd()・・・chdirで戻って来れないようなディレクトリにchdirする可能性があるので 最も危険。 と本に書いてありますが、fastcwd()がどの位の危険性があるのか教えてください。
221 :
名無しさん@お腹いっぱい。 :2001/05/24(木) 12:51 ID:Xg3o9H/I
i-mode用のCGIを、i-modeシミュレータで テストしながら作ってるんですが、i-modeの CGIって出力する時は必ずContent-lengthを明示 しなくちゃならないんですか? あと、i-modeだと入力フォームの中に 半角スペースが入ると、スペース以降の入力は 無視されるってホントですか?
222 :
名無しさん@お腹いっぱい。 :2001/05/24(木) 12:57 ID:Xg3o9H/I
>>216 たとえば名前と年齢を入力するフォームがあった時、
GETメソッドだと、サーバーには
GET /test.cgi?name=yamada+tarou&age=20 HTTP/1.0
Referer: tekito.html
User-Agent: tekito
こんな感じで送られる。POSTで送ると
POST /test.cgi HTTP/1.0
Referer: tekito.html
User-Agent: tekito
Content-length: 24
name=yamada+tarou&age=20
こんな感じ
複合検索のやり方をおしえて!!
/$pattern1/ and /$pattern2/ and /$pattern3/
>>223 そんな抽象的な質問では答えようがありません。
カテゴリーA(選択肢3つ) カテゴリーB(選択肢5つ) カテゴリーC(選択肢5つ) 複合検索。 1.Aからひとつ選択。→検索→結果表示 2.Aからひとつ選択。さらにBから1つ(ここで絞り込み)→検索→結果表示(1よりも絞りこまれた) 3.さらにこんどはCからも。するとさらに絞りこまれた検索結果が。 というような。アタマ爆発しそうです助けて。
1.Aからひとつ選択。→検索→結果表示 (ついでにhiddenで必要な情報をを出力) 2(hiddenの情報に加えて)さらにBから1つ(ここで絞り込み)→検索→結果表示(ついでにhiddenで必要な情報をを出力) 3.(hiddenの情報に加えてさらにこんどはCからも。するとさらに絞りこまれた検索結果が(ついでにhiddenで必要な情報をを出力)
228 :
201 :2001/05/24(木) 19:48 ID:sL7IkDYk
229 :
名無しさん@お腹いっぱい。 :2001/05/24(木) 21:30 ID:ZqhZs8E6
ebicounter 使ってたんだが、なぜか、remote_host が取得できなくなった。 web_analyzer の方は、ちゃんと取得できてる。 xylog 試しに入れてみたが、これもリモホが取れてない。 他の時間、リファラー、UAなんかは取れてる。 自分でperl と Apach の仕組みを全部勉強して理解してからソースを見れば解決するだろうけど、2年くらいかかるだろう。 それまでの間、リモホが見れないとなると鬱だ。
>>228 makeの引数に何か指定すれば個人のディレクトリ内にインストールできるはず。
>>229 リモホを取得するにはちと負荷が掛かるんだよ。
取れなくなったのはその鯖の管理会社の判断だろう。
>>229 .htaccess に
HostNameLookups on
って入れてみ。
233 :
名無しさん@お腹いっぱい。 :2001/05/24(木) 22:06 ID:ZqhZs8E6
>>231 アドバイスありがとうございます。
実は、2,3日前に、そのプロバイダーのサーバーの移転工事があったんで、それと何か関係があるのかなーと少し考えてました。
不思議なのは、web analyzer では、きっちりリモホが取れているのに、ほかのcgiなどでは取れなくなったことです。
web analyzer とほかのプログラムの間に、リモホを取得する方法になにか違いがあるのだろうと思いますが、それを理解するのに2年くらいかかりそうです。
>>232 アドバイスありがとうございます。
.htaccessだったら、おそらく1週間くらい勉強すれば設置できそうです。
そのコマンドは、たぶん、リモホを強制的に取得する呪文ですね?
うちのサーバーは、indexes を設定しようとしたときに、なんとかのオーバーライドはできない、って言われたので、その制限にひっかからなければいいんですが。
とにかくやってみます。
ありがとうございます。
234 :
名無しさん@お腹いっぱい。 :2001/05/24(木) 22:59 ID:ZqhZs8E6
235 :
201 :2001/05/24(木) 23:47 ID:sL7IkDYk
>>230 わーんあきらめかけてたのにー。ありがとうございます。
上手くいきました。
>>214 のサイトをもう一度読み直して、CPAN経由で個人ディレクトリに
インストールできました。ホントに楽だった。
が、今度は「パスが通っていない(@INCにない)」と言われてしまい途方にくれてます。
ちなみにcgiが返した@INCの現在の要素は、
/home/(アカウント名)/html/****/newspro
/usr/lib/perl5/i386-linux/5.00404
/usr/lib/perl5
/usr/lib/perl5/site_perl/i386-linux
/usr/lib/perl5/site_perl
で、Jcode.pmがインストールされているディレクトリは
/home/(アカウント名)/p5-module/
なんですが、これって
push(@INC,"/home/**_**/p5-module/");
という一文をnplib.plかnewspro.cgiのどこかに付け加えるだけじゃダメなんでしょうか。
やりたいことに近づいてるんだか遠ざかってるんだか…遠い道のりだなぁ。
age
237 :
名無しさん@お腹いっぱい。 :2001/05/25(金) 00:12 ID:wtGhDgwQ
>>365 いや近づいているよ。ガムバレ
@INCパスを通す方法
1. BEGINブロック内で@INCをいじる( BEGIN{ push @INC, '/home/hoge/perl5lib'; } )
2. use libプラグマを使う( use lib '/home/hoge/perl5lib'; )
238 :
201 :2001/05/25(金) 19:04 ID:IhXtwXHM
>>237 ありがとうございます。2のuse libで対処し、無事パスは通りました。
が、今度は「Uってなんじゃいボケ」とか言われています…
(Untrapped Error: Invalid type in pack: 'U' at nplib.pl line 192.)
どうも、
$value =~ s/?(\d{5});/pack("U*", $1)/eg;
のことらしいんですが、確かに今日参考書籍スレを見て買って来た
「CGI&Perlポケットリファレンス」のpack関数の型指定文字列には
大文字のUはないんですよね。ローカルでは動いたくせに。
239 :
名無しさん@お腹いっぱい。 :2001/05/25(金) 19:08 ID:.fPzJFjk
>>238 Uが使えるのはPerl5.6以降でなかったっけ?
日本語だけなら"U"の部分は"n"で代用できないかな?
できないかも。
240 :
名無しさん@お腹いっぱい。 :2001/05/25(金) 19:22 ID:z/gmREzA
ISP に質問メールを出しておいたら、今日返事が返ってきました。 「最近、アクセス解析で、リモートホストが取れなくなったプログラムがあるのですが、サーバー側では特に何も設定とかはいじってないですよね?」 「申し訳ありません。 サーバー側で Hostname Lookup を off にしております。 サーバーの負荷軽減のための措置ですので、ご理解くださいますよう、お願いいたします。」 それならそれで、連絡くらいしてほしかったなあ。 こっちは CGI の不具合かと思って、再インストールしたり、他の CGI 入れてみたり、5時間くらい悩んだんですよぉ〜。 ところで、サーバー側でoffにされていても、ユーザーが個人で .htaccess で on にしたら、そっちのほうが強いんですか?
241 :
名無しさん@お腹いっぱい。 :2001/05/25(金) 19:28 ID:Xm4KUCxE
>>239 うぃ、その通り。
212を書いた直後に気づくものの、書いてなかった。
よって「use 5.6.0は不要かもしれん」の一文は不適切だったな。スマソ
>>240 その話題多いね。
実は俺のとこもそうだし(笑)
一斉にやってんのかな?
質問はわからないのでsage
試しにやってみたらどうよ?
$host = $ENV{REMOTE_HOST} を $host = gethostbyaddr(pack("C4",split(/\./,$ENV{REMOTE_ADDR})),2) or $ENV{REMOTE_ADDR}; に変えれば済むんだから、鯖側が嫌がることは止めとけば?
244 :
201 :2001/05/25(金) 20:02 ID:IhXtwXHM
>>239 >Uが使えるのはPerl5.6以降でなかったっけ?
ああ納得。ローカルにインストールしたPerlは5.6でしたから。
(
>>212 を読んでuse 5.6.0はコメントアウトしてました)
やっとあきらめがつきそうです。
結局cgiは動かなかったけど、Perlのことが少しわかったことは大きな収穫でした。
これから勉強して、いつの日か自分で動かせる日が来るのを待つことにします。
つまらない質問にお付き合いいだだき本当にありがとうございました>all
245 :
名無しさん@お腹いっぱい。 :2001/05/25(金) 21:57 ID:eb.ywCSo
最近CGIを勉強しはじめたのですが 静的なHTMLの中にラジオボタンが数個あり 選択されたラジオボタンごとに ジャンプさせる先を CGIで制御するにはどうしたらよいのでしょうか? また、未選択だとエラーページを表示したいんですが
use CGI qw/:noxhtm :standard/; SELECT: foreach (CGI->new->param('radiobutton')){ lc eq 'a' and print redirect('page_a.html'); lc eq 'b' and print redirect('page_b.html'); print redirect('error.html'); } print header(-charset => 'Shift_JIS'), start_html( -title => 'hoge', -lang => 'ja'), h1('何か選択しろ'), # フォームをごちゃごちゃと end_html, "\n"; __END__
247 :
名無しさん@お腹いっぱい。 :2001/05/26(土) 16:34 ID:mRkT8Xi2
246さんのお答えに 数項目にそれぞれ数個のチェックボックスが数個付き チェックボックス自体はどれを選択しても ジャンプ先には関係ないのですが (実際はラジオボタンだけが振り分けるようになっていて) 各項目未選択だとエラーページにて その未選択な項目を提示したいのですが? どうすればよいのでしょうか?
>>247 そいつをJavaScriptで実装してアプするとかしたらどうよ?
そうすれば的確な回答が得られる確率が跳ね上がると思うぜ。
ISP に質問したところ、 「すべての項目に対し、オーバーライドは認めていない」 と言われた。 終わったな。
250 :
247 :2001/05/26(土) 19:27 ID:mRkT8Xi2
できればi-modeで使えるようにしたいので CGIで制御したいのですが
>>250 Perl言語の前にまず日本語を理解できるようになってから出直してください
ですがですがウルサイのですが
253 :
247 :2001/05/27(日) 05:15 ID:d3zuE6.g
>>247 さん
すみません、誤解していました。
http://www.geocities.com/sayapion/ にJavaScriptで実装してアプしました。
完全ではないけど
エラー表示はCGIでは未入力の項目を動的にHTMLで出力し、
全てチェックされた状態で送信ボタンを押すと
各項目の確認画面を出してから、選択された項目のページへ
ジャンプする(振り分けはチェックボックスのみ)したいです。
よろしければ、ご指導よろしくお願します。
自分に「さん」付けるな。
#!/usr/bin/perl use CGI qw/:noxhtml :standard/; @ISA = qw(CGI); use strict; =pod form部分はこんな感じ <form action="$0" method="POST"> <div class="a"> <input type="checkbox" name="a-1" value="true"> <input type="checkbox" name="a-2" value="true"> </div> <div class="b"> <input type="checkbox" name="b-1" value="true"> <input type="checkbox" name="b-2" value="true"> </div> <div class="c"> <input type="radio" name="c" value="1"> <input type="radio" name="c" value="2"> </div> </form> =cut my @a = qw(a-1 a-2); my @b = qw(b-1 b-2); my $form = new CGI; $form->is_checked(@a) or &error('a'); $form->is_checked(@b) or &error('b'); $form->param('c') or &error('c'); #checkbox-a, checkbox-bの値を元に処理をする $form->c(); sub is_checked{ my $q = shift; my @names = shift; local $_; my $i; foreach (@names){ $q->param($_) and $i++; } return $i; } sub error{ my $error_type = shift; #エラーメッセージを出力 } sub c{ my $q = shift; my $c_value = $q->param('c'); #c_valueの値を元に結果のページを出力 } __END__ ・A項目(@a)の何れかが真であることを確認する さもなくばエラーa ・B項目(@b)の何れかが真であることを確認する さもなくばエラーb ・C項目が真であることを確認する さもなくばエラーc ・Cの選択によって出力内容を変える
256 :
お悩み君 :2001/05/27(日) 14:47 ID:52TCocto
CGIでのハイパーリンクについての質問です。 良く、自動登録の出来るリンク集などが有り、その場合、logフォルダーの中に、データファイルが1個ずつ増えていきますね。 ここからが質問です。 logフォルダーの中のデータファイルを、001.log、002.logと言うように増えていくファイルの中の、一番最後のlogデータファイル(一番数字の大きなもの)の数字を読み取り、そのlogファイルの数字に1足したファイル(その時点ではまだ存在しないファイル)にハイパーリンクを張ることは可能でしょうか? 要するに、logファイルが、001.log、002.logしか無い場合、003.logファイルにアクセスしたいのです。 どなたか教えてください。
#!/usr/bin/perl
use IO::Dir;
my($l) = sort{ $b <=> $a } map { (/(\d+)\.log$/) } IO::Dir->new('LO_DIR')->read;
print ++$l, "\n";
__END__
>>256
cool :-)
259 :
247 :2001/05/28(月) 01:25 ID:zbIEQa5k
>>255 さん
CGIとして操作させるにはこれだけでよろしいのでしょうか?
色々試してみたんですけど、駄目みたいです。
で、ラジオボタンの部分(c)はどうやって別のHTMLファイルにジャンプ
するようにしたら良いのでしょうか?
>>259 もちろん
>>255 だけじゃなにも起きないだろうよ。
入り口のページを用意しなきゃいけないし
飛んだ先のページも用意しなきゃいけない。
>>255 がやっているのは、
項目Aと項目Bがそれぞれ最低一つチェックされていることを確認して、
かつ、項目Cもちゃんと選択されている事を確認する
それだけだからな。
全て書くとなると
続き 全て書くとなると、長くなりすぎるしウザイから、 残りは自分でやってみてくれ。 「ここをがどうしても分からない」ってのならそう書きゃまた誰かが何とかしてくれるさ。
あるUP板を設置しようとして、 説明書通りにパーミッションも設定したのに、 Wrire Error count.dat書き込みできません。 todemasu. 何故でしょう?
>>262 そんな妙なエラーメッセージを出されても困る。
$!を出力してくれ
264 :
262 :2001/05/29(火) 22:21 ID:???
265 :
262 :2001/05/29(火) 22:29 ID:???
書き忘れましたが、freewebでHPを作成しています。
266 :
262 :2001/05/29(火) 22:30 ID:???
書き忘れましたが、freewebでHPを作成しています。
267 :
262 :2001/05/29(火) 22:31 ID:???
二重投稿・・鬱だ・・
>>267 ディレクトリのパーミッション書いてみろ
269 :
262 :2001/05/29(火) 22:41 ID:???
+ board.cgi (705) + delete.pl (705) + info.pl (705) + index.pl (705) + jcode.pl (705) + lib.pl (705) + regist.pl (705) + revise.pl (705) + search.pl (705) + view.pl (705) + vip.pl (705) + write.pl (705) + count.dat (606) + アクセスログファイル (606) + (707) + 中身は空です。 + (707) + 中身は空です。 です。
>>269 count.datが入ってるディレクトリのパーミッションはどうよ?
271 :
262 :2001/05/30(水) 00:30 ID:???
>>270 まさにそれが原因でした。
どおうもありがとうございました。
272 :
お悩み君 :2001/06/01(金) 21:33 ID:???
>>257 さん
すいません説明不足。
logフォルダーの中のデータファイルを、001.log、002.logと言うように増えていくファイルの中の、一番最後のlogデータファイル(一番数字の大きなもの)の数字を読み取り、そのlogファイルの数字に1足したファイル(その時点ではまだ存在しないファイル)にハイパーリンクを張ることは可能でしょうか?
要するに、logファイルが、001.log、002.logしか無い場合、003.logファイルと言う有得ないファイルにハイパーリンクを張りたいのです。
ttp://123.~abc/arienai.cgi とし、logファイルも同じフォルダーに置いた場合で、
arienai.cgiの中に、
$new = sprintf("%03d.log", &count() + 1 );
<A HREF="
ttp://123.~abc/$new ">有り得ないページ</A>
とした場合、
ttp://123.~abc.003.logにアクセスできるでしょうか?
273 :
257 :2001/06/01(金) 21:59 ID:???
>>272 説明不足も何も無茶苦茶じゃねーか。
ハイパーリンクがどう関係するんだ?
有り得ないページにアクセスしたことあんのか?
普通はブラウザが落ちたりせず、NotFoundページにアクセスできるだろうが(藁
そいつを好きなフィアルにする事はもちろん可能だが、
そんなことしてしてどうする気だよ?
必要ならその場で作れば良いだろ。
274 :
257 :2001/06/01(金) 22:01 ID:???
s/フィアル/ファイル/
275 :
お悩み君 :2001/06/01(金) 23:19 ID:yjQBx9AY
>>257 さんへ
別にブラクラを作りたいわけではなく、NotFoundを出したいわけでも有りません。
と言うより、大きな間違いに気付きました。
存在しないファイルにアクセスするのではなく、
たとえるなら、ひとつの書き込みごとにIDをつけ、ひとつのlogファイルに保存します。
書き込みの時のID番号と、logファイル名を同じにし、
新しい書き込みをする場合、
logファイル内のまったく新しい(存在しない)IDに直接アクセス(リンク)したいのです。
要するに、Yahoo!の掲示板のように、書き込みボタンをクリックすると、一度、logフォルダー内のファイル数を数え、そのファイル数に1を足した因数を導きだし、<A HREF="
ttp://123.~abc/bbs.cgi?id=$因数 ">書き込み</A>
としたいのです。
この質問てやっぱり超〜初心者?
276 :
257 :2001/06/01(金) 23:36 ID:???
(゚Д゚)ハァ? それなら、 書き込みボタンがクリックされた時にlogディレクトリの中のファイル数を数え、 そのファイル数に1を足した因数を導き出せばいいだろ。
277 :
お悩み君 :2001/06/02(土) 00:23 ID:0cBgSTx6
>>257 さん
そのやり方が解りません。
スクリプトを教えてください。
278 :
むぎ茶 :2001/06/02(土) 01:26 ID:???
↑ ネタ。
ageとくか
sage ながら失礼します。
>>277 さん
解決するにあたって,非常に簡単な方法があります。
1. www.google.com で "opendir" を検索します。
2. およそ30万件ヒット。
3. がんばってください。
281 :
名無しさん@お腹いっぱい。 :2001/06/07(木) 20:35 ID:7evOf8Wk
教えて下さい。 $room = $in{'room'}; これの意味を。 この一行が原因でエラーが出ます。 どういう時に、こんな一行が原因でエラーが出るんでしょうか?
>>281 ・$roomはtieされているが、STOREメソッドが存在しない
・$in{room}はtieされているが、FETCHメソッドが存在しない
・$roomに何かオブジェクトが入っていて、代入によりDESTROYが発生。
そしてそのDESTROYが例外を発生させる。
283 :
282 :2001/06/07(木) 21:08 ID:???
・use strictの元で、$roomはvars/our宣言されていないグローバル変数である
284 :
名無しさん@お腹いっぱい。 :2001/06/07(木) 21:20 ID:7evOf8Wk
ありがとうございます。ただ、意味がまったく、わかりません、、、、(^_^;) 小生、Perl歴1年。ただし改造がメインで、基礎ガタガタ。 で、$in{'room'}; これって、ハッシュなんですかね? >・$roomはtieされているが、STOREメソッドが存在しない tieとは? 対応づけのことですか? >・$in{room}はtieされているが、FETCHメソッドが存在しない FETCHメソッドとは? そもそも FETCHとは?(^_^;) >・$roomに何かオブジェクトが入っていて、代入によりDESTROYが発生。 > そしてそのDESTROYが例外を発生させる。 これも意味が、、、(^_^;) >・use strictの元で、$roomはvars/our宣言されていないグローバル変数である use strictとは? vars/our宣言されていないグローバル変数とは? 基礎的なこと?ばかりでスミマセン。 で、これらの場合、どうすれば、解決できるんでしょう?
285 :
282 :2001/06/07(木) 21:35 ID:???
>>284 まぁ
>>282 はネタだ。tieを使ったCGIスクリプトなんて聞いた事無いな。
ただtieはPerlの非常に面白い部分の一つなので興味があったら調べてみるといい。
しかしPerl歴1年でuse strictを知らないというのは如何なものか。
use strictとは危険な構文、曖昧な構文を制限するプラグマだ。
vars/ourはそれに関係するが書くと長くなるので自分で調べな。
で、今回の件はどちらも違うようだな。
$room = $in{room}
の一文だけでは分からない。
CGIスクリプトならKCatch.pmを使ってみろ
http://www.kawa.net/works/perl/catch/news.html
286 :
名無しさん@お腹いっぱい。 :2001/06/08(金) 12:03 ID:gNerhrec
L-mode対応ページを製作してるんですが 一般ページと分けるたけのREMOTE_HOSTではんだんしてるのですが HOSTどんな感じになるかわかりますか? *.pipopa.ne.jpってかんじでしょうかね?
1. 「&」は「&」に変換 2. ただし「&」はそのまま というのをエレガントに書く方法はありますか? ※かちゅ〜しゃの人はブラウザで見てください
s/&(?!;)/&;
スマン変換された上に間違えた; s/&(?!;)/&/g;
>>289 s/&(?!;)/&/g;
でうまくいきました。産休
※例によってブラウザで
CGI_Lite でテキストは送れんのに、バイナリができん! スイッチなのか? 教えてくれ〜。 アクチブパール6 なんだけど。
人に物を尋ねる前にそのふざけた態度を何とかしたらどうだ
出来たでいいわ。 教えて師匠気取りになってんじゃ ねーぞ。 ゴルルルルァ!!
295 :
倉庫番 :2001/06/13(水) 21:48 ID:???
>>295 あ、わざわざ出張ありがとうございます。
サーバ監視所のほうにも書きましたが直ったみたいです。
CGIがユーザ権限で実行されるサーバを借りました。 が、ユーザ権限で動作するためか、 環境変数REMOTE_ADDRがサーバのIPになってしまいます。 アクセス者のIPアドレスを得る方法はないものでしょうか。
298 :
名無しさん@お腹いっぱい。 :2001/06/14(木) 02:17 ID:XRIaTlTQ
$host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2); これ試してミソ
299 :
名無しさん@お腹いっぱい。 :2001/06/14(木) 02:20 ID:XRIaTlTQ
#!/usr/bin/perl $host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2); print"Content-type: text/html\n\n$host"; __END__
300 :
名無しさん@お腹いっぱい。 :2001/06/14(木) 02:21 ID:XRIaTlTQ
あれ?質問の意味取り違えた。ごめんちゃい
どもです。 上手くいったようです。ありがとうございました。
超初心者なのですが、失礼します。 $test{'test1'} = "a"; $test{'test2'} = "b"; $verd = 1; foreach(0..$verd){ print "$test{'test$verd'}"; $verd += 1; }; で、処理結果がabになるようにしたいのですが、どうやってもうまく行きません。 どうすれば上手くいくのか、よければ教えてもらえないでしょうか?
>>302 $test{'test1'} = "a";
$test{'test2'} = "b";
$verd = 1;
foreach(0..$verd){
print qq($test{"test$_"}); # ダブルクォーテーションじゃないと変数展開がされない
}
なるほど…そうするのですか。 303さん、どうもありがとうございました。
昨日かんたんperl/cgi入門という本を買い
初めてCGIを勉強しはじめたど素人なんですが
9行目付近が間違っていると
perlチェッカーで出るのですがさっぱりわかりません
どう間違っているのかご指摘いただけませんでしょうか
よろしくお願いいたします
#!/usr/bin/perl/
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>げすとぶっく♪</title>\n";
print "</head>\n";
print "<body bgcolor="#FFFFFF" text="#000000">\n";
print "<CENTER>\n";
print "<p>\n";
print "<font size=2 color=white>げすとぶっく♪</font>\n";
print "<br>\n";
print "<font size=1 color=white>あしあとぺたぺた</font>\n";
print "</CENTER>\n";
print "<HR>";
print "(半角カナは使用しないでね♪)\n";
print "<form method=\"post\" ACTION=\"guestbook.cgi\">\n";
print "<font size=1 color=white>あなたのお名前:</font><INPUT NAME=\"name\" TYPE=\"text\" SIZE=30><br>\n";
print "<font size=1 color=white>Eめーる:</font><INPUT NAME=\"email\" TYPE=\"text\" SIZE=40><br>\n";
print "<font size=1 color=white>こめんと:</font><TEXTAREA cols=40 ROWS=4 NAME=\"comment\"></TEXTAREA><br>\n";
print "ほーむぺーじ:";
print "<INPUT NAME=\"url\" TYPE=\"text\"VALUE=\"
http://\ "SIZE=40<br>\n";
print "<INPUT TYPE=\"submit\" VALUE=\"かきこみ♪\">\n";
print "</form>\n";
print "</body>\n";
print "</html>\n";
_END_
>>305 ヒアドキュメントが載っていないような本は捨てましょう。
print <<EOD;
Content-type: text/html
<html>
…
</html>
EOD
__END__
307 :
( `.∀´)<逝ッテヨシ :2001/06/16(土) 05:19 ID:gZwvTOW.
>>305 print "<body bgcolor="#FFFFFF" text="#000000">\n";
この行を見て何も感じない不感症なキミは逝ってよし
308 :
ドキュソ :2001/06/16(土) 06:00 ID:yBowf1qk
誰も一行目と最終行には突っ込まないのナ(w
310 :
perl初めて :2001/06/16(土) 13:14 ID:C1nY1sAg
>>306 さん
こんな方法があったのですね!
昨日検索かけてたくさん調べてみました
凄く便利なので使わせていただきます!
>>307 さん
大文字小文字が混じってて気持ち悪いと言うことでしょうか?
>>308 さん
今はEMエディターで拡張子をいちいちtxtからcgiに変えてやっているので
秀丸エディターに変えてみます
>>309 さん
えっと最初の行はサーバーに合わせて書いたつもりなのですが
おかしいのでしょうか?
最後は__END__でよろしいでしょうか?
初歩的なことですいません
print "<body bgcolor="#FFFFFF" text="#000000">\n"; ↓ print "<body bgcolor=\"#FFFFFF\" text=\"#000000\">\n";
312 :
ドキュソ :2001/06/16(土) 17:18 ID:k9nU2Pm6
>310 ヒアドキュメントにすると通るので、なんで通るのか考えてみよう。
>>310 『\』の使い方も載ってないのにホントに入門本なのか?
314 :
ドキュソ :2001/06/16(土) 18:16 ID:k9nU2Pm6
>かんたんperl/cgi入門 ここが今日のポイントだ。試験に出すから覚えとけよ〜。
315 :
perl初めて :2001/06/16(土) 18:51 ID:C1nY1sAg
>>311 さん
ご丁寧にありがとうございます
\が抜けてたんですね、本に書いてある通りではなく
そこは少し自分で変えていました
本にはprint "<body bgcolor=WHITE>\n";とかいてありました
私のミスだと思います。
>>312 さん
ヒアドキュメントにすると通るわけですね
調べてみます、結構丸暗記でやっているので
理解しながらやった方がいいですよね。
>>313 さん
はじめての人のためのと書いてあったので買いました
\の使い方はいまいち私がまだわかってないだけだと思いますので
じっくり勉強します。
>>314 さん
はっはぁ・・・
其の本には最初の行について何て書いてあったのか知りたい気がする あと、\がたくさんついてると気持ち悪いのは俺だけか 最初はしょうがないかもしれないけど
317 :
perl初めて :2001/06/16(土) 19:46 ID:C1nY1sAg
わかりやすそうな解説だったのですが とりあえずこの本に書いてあることぐらい 簡単に理解できるように頑張ります ちなみに間違っている点は 一番最初の行の#!/usr/bin/pirl一番最後につけていた/の ためにエラーが出ていたようでした 皆様いろいろご指導いただきありがとうございました
318 :
:2001/06/16(土) 19:48 ID:???
>>315 Perlは色々な書き方があるから、本屋とかで立ち読みして見比べたら良いかと。
319 :
:2001/06/16(土) 19:51 ID:???
>>317 率直に言おう。"" の中で "" を使うとエラーになります。
' (シングルクォート)と使いわけよう。
>>318 さん
はい、いろいろと読み比べてから本は買うようにします
いろいろありがとうございました
>>319 さん""の中で""を使うときは'を使い分けていくわけですね
では\を使って""の中に""を使うやり方は違うのでしょうか?
それともこれでも良いのでしょうか?
とりあえずいろいろ調べてみます!
321 :
名無しさん@お腹いっぱい。 :2001/06/16(土) 21:18 ID:Xw9raK02
Win2K+Apache+ActivePerl でサーバを立てようと思っているのですが、 Perlだけなかなか正常に動いてくれません。 cgi実行すると「Internal Server Error」が出てしまいます。 DOSプロンプトから直接実行は問題ありませんでした。(>perl test.cgi) cgiスクリプトの1行目のperlパスの指定も間違ってません。 (#!D:/Server/Perl/bin/perl ←インストールディレクトリ) でもApacheエラーログでは、 malformed header from script. Bad header=test: d:/server/apache/cgi-bin/test.cgi と1行目が間違ってるという風に言われます。 httpd.conf の設定も大丈夫だと思うのですが・・・ ほかにどのような原因がありうるでしょうか? お助けくだされ・・・。
ヘッダの出力が間違っている。
323 :
名無しさん@お腹いっぱい。 :2001/06/16(土) 21:44 ID:Xw9raK02
>>322 むむっ!!もう少し詳しく教えてください。
324 :
S :2001/06/16(土) 21:56 ID:QjdpSRZc
header=HTTPヘッダが変、もしくは無いってことだと思います。
325 :
名無しさん@お腹いっぱい。 :2001/06/16(土) 22:04 ID:Xw9raK02
>>324 どうもです。でもまだ分からない(w
もう少し教えてください。
具体的にどこをどのように見直すべきですか?
>Perl初めて 悪いが君はプログラムに向いてないのかもしれない。 もちろん努力すれば何とかなるけど、今の態度を見るにあまり期待も出来ない。 ""の中になぜ"を使ってはいけないか? 考えてみなさい。 print "a"b"; とあって、printは 全体の""の中身であるa"bをprintするべきか 最初の""の中身であるaをprintするべきか 最後の""の中身であるbをprintするべきか。 どれだと思う? 答えは2番目だ。 最初の"からその次に現れた"までを""の中身と判断する。 ではそうなったらb"はどうなるか? どうにもならない。 ただb"って書いてあるだけとしか思ってくれない。 そしてそれは構文になっていない。 結果として構文エラーになる。 \"を使うのは「これは"の終わりではない文字列としての"ですよ」という目印だ。 print "a\"b"; と書けば、真中の"は文字列として認識されるから、そこで"が終わらない。 つまり、そういう事。 'を使えば大丈夫なのも、「"から"まで」という認識の邪魔をしないからだ。 これは「知ってなきゃわからない」事かもしれないが、「考えてわからない」事じゃないと思う。 それを考えてわからないなら、君はそのセンスがないのかもしれない。 もしPerlを本格的にやりたいなら、センスを磨きな。 長文スマソ。
それでもヒアドキュメントを使わないその根性に脱帽(w
329 :
名無しさん@お腹いっぱい。 :2001/06/16(土) 23:33 ID:3vKwuoqU
>>325 print "Content-Type: text/html\n\n";
こういう出力をしてないとか、ケツの改行が1個しかないとか。
バーカ ニドトクンナ!ペッペ!! ,, .: 。 \( ゚´3゚)- = 。 ゚ ( )` :: . ノ \
332 :
名無しさん@お腹いっぱい。 :2001/06/17(日) 00:09 ID:cAWaiwrs
gethostbyaddr()でホスト名を取得しようとしているのですが うまくいきません。(IPアドレスが表示されます) 他のCGIではgethostbyaddr()でホスト名が取得できているので サーバがgethostbyaddr()が使えないということではないと思うんですが… どのような原因が考えられるでしょうか?
334 :
332 :2001/06/17(日) 00:25 ID:cAWaiwrs
ホスト名取得は以下のようにしてるんですけど、 どの辺がおかしいでしょうか? $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "" || $host eq "$addr") { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2); } if ($host eq "") { $host = $addr; }
335 :
325 :2001/06/17(日) 05:09 ID:555t4a6o
>>329 まさにそのとおりでした。
どうもありがとうございます。
助かったdeath.
>>332 =334
Netfirmsは、gethostbyaddr()関数を使えない。
337 :
332 :2001/06/17(日) 12:40 ID:4s/tVhGY
>>336 Netfirmsっていうのはサーバのことでしょうか?
うちはhi-hoのサーバを使っています。
一見普通の画像(jpg)だけど裏でCGIを実行させるにはどうしたら良いのでしょうか? (画像の中にCGIを埋め込むには?の方が言い方としては正しいのかな?)
Apacheならhttpd.confに AddHandler cgi-script .jpg を加える。
↑ (゚Д゚)ハァ?
>>338 おれも
>>339 を最初に思いついた。
あるいはPATH_INFOから引数をとるような画像表示CGIを作り、
拡張子なしのファイル名を付けて、URLでごまかす。
>>340 ┐(´ー`)┌
342 :
:2001/06/17(日) 15:49 ID:???
そうやって初心者を潰すから嫌われるんだよ。
343 :
名無しさん@お腹いっぱい。 :2001/06/18(月) 12:32 ID:Ai/io0AA
apacheのルートではsuEXECって動かないの? ユーザディレクトリではsuEXECで動いているんだけど、 /usr/local/apache/cgi-binではwwwで動くんだよね。
ユーザディレクトリ以外では httpd.confの User www Group www の権限で動きます。
345 :
名無しさん@お腹いっぱい。 :2001/06/18(月) 16:12 ID:Ai/io0AA
ああ、そうなんだ。 んじゃぁ、ユーザーディレクトリをエイリアスに設定させれば 動くかな? Alias /test/ "/home/test/public_html/"みたく
346 :
:2001/06/19(火) 16:29 ID:.3uKdYEE
自分のHPにおけるチャットで一番使いやすいのってなんでしょうか? ヤフーのチャットをおいてたけど、いろいろ不満もあって・・・。 いい、チャット知ってたら教えてください。
IRC
348 :
名無しさん@お腹いっぱい。 :2001/06/19(火) 16:39 ID:.3uKdYEE
IRC? それってHPにおいて使えるんですか? では、早速やってみます。 ありがとうございました。
プ
351 :
名無しさん@お腹いっぱい。 :2001/06/20(水) 19:49 ID:pmjBvxSs
掲示板等のCGIのスクロールバーの色を変えるには どうすればいいのですか?
>>351 HTMLのスクロールバーの色を変える方法を使う
354 :
332 :2001/06/21(木) 21:44 ID:06pi5Po2
どなたか分かる人いないでしょうか。 まだ解決していないのです・・・
355 :
sage :2001/06/21(木) 22:07 ID:???
357 :
名無しさん@お腹いっぱい。 :2001/06/22(金) 02:50 ID:XQWf5jh2
掲示板レンタルサービスを作るつもりなんだけど、 データの保存形式はどうしたらいいだろう? 俺的には、 設定情報+記事ファイル 会員情報はSQL みたいな感じだけど。 設定と記事は分けた方がいいかな?同じにすればファイルを2度開かなくてもいいかなと思ってるんだけど。 因みに、設定は10項目くらいタブで区切るつもり。
配列の名前に変数を使うことはできますか? $hairetu[$hensuu]ではなく、 $haieretu 変数 [1] という風にしたいのですが。
359 :
名無しさん@お腹いっぱい。 :2001/06/22(金) 10:54 ID:MTHVeG4o
age
360 :
名無しさん@お腹いっぱい。 :2001/06/22(金) 11:58 ID:uKEGoNlk
age
>>358 ${hairetu}{$hensuu}[1]
${$hensuu}[1]
362 :
358 :2001/06/22(金) 19:35 ID:???
>361 回答ありがとうございます。 さっそく試してみます。
こちらで聞いてよいでしょうか Perlで掲示板をつくってprohostingのサーバに置きました。めでたく書きこみが出きるまでになりました そこで一つわからないことがあります。 その掲示板でリロードしようとすると、ダイアログが開いて「このページは 再送信しないと更新できません」とでるのです。それに従って更新すると、 同じ内容の書きこみが二つになってしまいます。このようにならないように、 リロードするにはどうしたらよいでしょうか
>>363 1:アンカータグでリロードボタンを作る
2:フォームでリロードボタンを作る
3:書き込みが終わった後Locationで移動させる
4:書き込み後に「書き込みが完了しました」とクッションページを置く
>>364 ありがとうございます。
IEの更新ボタンで更新できるようにしたいのですが(2たんねるのように)
その場合は3.のでよいですか?
>>365 364じゃないけど、3でおっけーです。
367 :
名無しさん@お腹いっぱい。 :2001/06/23(土) 00:28 ID:MdTHDgYc
質問させて頂いてもよろしいでしょうか? 特定のIP&プロ串経由でのアクセスをピンポイントで制限するというCGIをPerlでつくり、 WAKWAKのサーバーに置き、ちゃんと動作してくれたので、旧INFOWEBのサーバーに設置してみたところ 「Internal server error」 が出てしまいました。 あるサーバーでは上手く動作しても、あるサーバーでは上手く動作しないということは、 CGIスクリプトと、鯖との相性なんでしょうか?
まあ、大体Perlのバージョンの絡みとかかな。 偶に、perlのパス確認せずに騒ぐドキュソも居るけど(w
>>367 1:Perlにパスが通ってない
2:requireなどのパスが通ってない
3:Win鯖とUnix鯖だったりする
4:Perlのバージョンが違う
5:サーバーで許されている関数に違いがある
6:.plファイルのCGI起動を許可されていない
7:cgi-binに入れないと動かない
後はなんだろう?
370 :
名無しさん@お腹いっぱい。 :2001/06/23(土) 00:35 ID:/3Jg8tz.
質問です。 2chのIDのようにIPに基づいて成り立つIDをPERLで作成するにはどうしたらいいのでしょうか
367です。
>>368 Perlへのパスは何度も確認してます。
>>369 わっかりました。
もう一度、ソースを見直してみます。
>>370 srand($ENV{'REMOTE_ADDR'});
$xx = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
. "abcdefghijklmnopqrstuvwxyz"
. "123456789./";
foreach(1..8){
$ID .= substr($xx, int(rand(65)), 1);
}
srandにIPを入れることで常に同じ結果が返される。
あくまでサンプルとしてね。
他にも色々と方法はあると思う。
373 :
370 :2001/06/23(土) 00:55 ID:???
>372さん できました! ありがとうございます!
374 :
名無しさん :2001/06/23(土) 08:25 ID:vckxBx8o
IPアドレスからユーザー名ってとりだせませんか?
376 :
名無しさん@お腹いっぱい。 :2001/06/23(土) 12:18 ID:9TJHVS52
sendmailが使えない鯖でcgiからメールを送る方法ってあります?
>>376 そけっと使うんだよ。(自分はやったことないけど…汗) SMTPサーバと
お話ししたら大丈夫。
378 :
名無しさん@お腹いっぱい。 :2001/06/23(土) 12:46 ID:9TJHVS52
>T女 も少し具体的に教えてください。 あと、やらせてください。
379 :
名無しさん@お腹いっぱい。 :2001/06/23(土) 13:01 ID:/dnaAWAM
>372 2chのIDってcryptで生成していると思ってた。
380 :
370 :2001/06/23(土) 13:48 ID:jCLGsch.
372さんのでやっているんですが、 IPが違っても同じIDになることがたびたびあります。 初心者なもんで全然わからないんですが、どう対処したらいいのでしょうか
381 :
:2001/06/23(土) 14:17 ID:???
>>379 その方が効率的かも。
サンプルきぼん。
$packip = join "", map{ chr } split /\./ $ip; print crypt($packip); とか。
>>363 =
>>365 です
location文をどのように挿入すればよいかわからないです
どなたか教えていただけないでしょうか
385 :
名無しさん@お腹いっぱい。 :2001/06/24(日) 16:10 ID:PvagkePY
>>384 Content-type:と同じやりかたでオッケー
>>385 locationを試してみたところ、リロードしてもcgiが読み込まれなくなってしまいました
サーバはProhostingです
>>377 Sendmailが使えないサーバなら、Socketもまず使えないだろう。
>>383 そのままコピペして試したら鰓出たんで自分なりにアレンジしてみました。
$packip = join "", map{ chr } split /\./,$ip; # ,を入れてみた
print substr(crypt($packip,$ip),2,8); # saltを入れてからsaltの分を削除してみた
こんな感じでいいのかな?
Shift_JISの1バイト目だけの中途半端な文字コードを削除する正規表現 って書けますか?
390 :
名無しさん@お腹いっぱい。 :2001/06/25(月) 01:21 ID:k5UlKqNo
<form method='POST' action="
http://aaa/ssss.cgi ">
<input type=hidden name="get" value="143242341324">
<input type=submit value="abcd">
</form>
これをTELNETで見ようと思ってもサッパリ分かりませんでした
いま将棋にはまってます
このCGIの出力結果を見るにはどんな文ををサーバーに送れば見ることが出来ますか?
詳しく分かりやすく専門用語を使わずに教えてくださいおしえてください
391 :
名無しさん@お腹いっぱい。 :2001/06/25(月) 03:32 ID:5VbEnasM
>>389 中途半端なコードが1個でもあったら、それ以降すべて削除。
というの作ってみた。
$re_sjis_zen = '[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]';
$re_sjis_han = '[\xA1-\xDF]';
$re_ascii = '[\x20-\x7E]';
$s =~ s/^((?:$re_sjis_zen|$re_sjis_han|$re_ascii)*).*/$1/;
>>390 君の場合「専門用語を使わず」にとか言う前に、
日本語を勉強した方が良いと思われ。
393 :
383 :2001/06/25(月) 18:05 ID:???
394 :
名無しさん@お腹いっぱい。 :2001/06/25(月) 19:21 ID:ZSLnqgJ.
Apacheを使っています。ここに存在はするがindex.html はないディレクトリにアクセスした場合はindex/xxxという ファイルの一覧になりますよね。 ここをファイル一覧にはせずに、そのままFile Not Foundの ようなエラーページに飛ばす方法はApacheにはあるのでしょう か?いろいろ見たけれどわからないです。 @niftyなんかはこういう風な仕組みになってますが、あれは CGIとかでやれるのでしょうか?
Options -Indexes
397 :
名無しさん@お腹いっぱい。 :2001/06/25(月) 23:23 ID:r5yv8Gx.
398 :
370 :2001/06/26(火) 04:53 ID:AyIlniPs
$packip = join "", map{ chr } split /\./,$host; $ID .= substr(crypt($packip,$host),2,8); これでできたIDからIPに戻すとかはできます?
399 :
JAPU :2001/06/26(火) 05:18 ID:???
crypt は一方向性のハッシュ関数を使用しているため、計算で求めることはできません。 # DES を使用している場合でも、単なる一方向性関数としての利用です。
よくある投票CGIで多重投票をしたいのですが、1回しただけで次から規制されてしまいます ネットを切ること無しに多重投票ができる方法はありますでしょうか? また、効率のいい投票方法、ツールなどありましたら教えてください
>>400 方法はあるけど…
多重投稿をして欲しくないから、そういう機能があるのだと思われ。(ワラ
あきらめて逝ってください。
403 :
名無しさん@お腹いっぱい。 :2001/06/27(水) 16:27 ID:Me2B1mgQ
以前掲示板リロードとlocationについて質問したものです リロードによる二重書き込みが無くなりました!!! なんとお礼を言っていいやら・・!!ありがとう
/_ | /. \ ̄ ̄ ̄ ̄| / / ― ― | | / - - | ||| (6 > | | | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | | | ┃─┃| < 正直、どういたしまして。 || | | | \ ┃ ┃/ \________ | || | |  ̄  ̄|
406 :
名無しさん :2001/06/28(木) 06:33 ID:a55aZI4U
よくCGIのサンプルでPOSTかGETか判定して分岐しますが、 同時に使おうとするとなにか問題があるんでしょうか? 変数名がかぶるとか回避できますよねえ。
>>406 同時に使おうとすると判定処理が増えるからじゃない?
408 :
名無しさん@お腹いっぱい。 :2001/06/28(木) 15:46 ID:m7F35MBU
>>406 同じデータをPOSTでもGETでも受け付け可能にするってこと?
掲示板なんかでPOSTとGETの両方オーケーにすると
<img src=".../bbs.cgi?text=hoge">みたいなリンクを貼りまくる
荒らし厨房がわいてきそうでいや。
別々のデータをPOSTとGETで分けて受け取るスクリプトの話なら、
まえにそういう掲示板
(テキストをPOSTで受けて、動作モードをQUERY_STRINGで指定)
を書いたけど、そのときは問題なかった。
Apache以外のWEBサーバだと、問題あるらしいとの噂も聞いたが。
409 :
370 :2001/06/28(木) 15:57 ID:d9KcmRW.
410 :
406 :2001/06/28(木) 21:03 ID:a55aZI4U
>(テキストをPOSTで受けて、動作モードをQUERY_STRINGで指定) まさにそれです。Perl勉強中なんで問題があるのかと、、、 # フォームからのデータを連想配列に格納 read(STDIN, $buffer1, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer1); foreach $pair (@pairs) { ($name,$value) = formdec(split(/=/, $pair)); # フォーム形式のデコード if(exists($FORMS{$name})) { # 既にキーが存在した場合 $FORMS{$name} = $FORMS{$name}.",".$value; # FORMSに, 区切りで格納 } else { $FORMS{$name} = $value; # 連想配列FORMに格納 } } # クエリーからのデータを連想配列に格納 @pairs = split(/&/, $ENV{'QUERY_STRING'}); # 引数を格納する foreach $pair (@pairs) { ($name,$value) = formdec(split(/=/, $pair)); #フォーム形式のデコード if(exists($QUERYS{$name})) { # 既にキーが存在した場合 $QUERYS{$name} = $QUERYS{$name}.",".$value; # QUERYSに, 区切りで格納 } else { $QUERYS{$name} = $value; # 連想配列QUERYSに格納 } } # クッキーデータを連想配列に格納 @pairs = split(/;\s*/,$ENV{'HTTP_COOKIE'}); foreach $pair (@pairs) { ($name,$value) = formdec(split(/=/, $pair)); # フォーム形式のデコード if(exists($COOKIES{$name})) { # 既にキーが存在した場合 $COOKIES{$name} = $COOKIES{$name}.",".$value; # COOKIESに, 区切りで格納 } else { $COOKIES{$name} = $value; # 連想配列COOKIESに格納 } } # フォーム形式のデコード sub formdec { ,,, Multipulなのはsplitして使うと。
>>410 問題は要するに「POSTしたときもQUERY_STRINGは有効なのか?」
ってことだけど、
こりゃCGIスクリプトじゃなくてWEBサーバの動作の問題だね。
経験則だけど、Apacheはオーケー。
他のWEBサーバは知らないけど、たぶんApacheコンパチでないの?
>>408 の「Apache以外で問題あり」なんて話は聞いたことない。
412 :
名無しさん@お腹いっぱい。 :2001/06/29(金) 00:25 ID:Cs3QYnzU
すいません、質問です(別板でこちらの板に来る様に言われましたので参りました)。 データファイル(ログファイルやデータベース用のテキストファイル)の漏洩問題に 対処するためにこのデータファイルをドットファイル(拡張子部分は固有名詞を使わない 任意の文字列)にすれば、ある程度データファイルのセキュリティーは高まるのでしょう か? どのくらいの安全性なのか、あるいは危険性はあるのか、どうか教えてください( 本の知識です)。 よろしくお願いします。 ちなみに別板で最初に書きこんだ時のその板の皆様のご返答は・・・ ・貸し金庫よりドットファイルは安全だ。 ・パーミッションを640にしろ。 ・拡張子を.cgiにして保存しろ。 ・この板(このスレの板)に逝って質問しろ。 でした。悩める厨房にどうか教えてください。混じれ酢希望です。
>412 基本的はドキュメントルートの外に置けばいいんじゃない?
412です。
>>413 早速有難うございます。ただその外に置く方法が分からないのです。
今使っている鯖(レンタル)は、やり方は分からないのですが、そ
の「/」の上の階層にファイルを置けないようなのです。マジでセキ
ュリティーのことを考えて色々思考錯誤しているのですが・・・。
一つ一つ勉強ですが、回りに詳しい人間もいず、本で読んでも
理解するのが遅すぎて。。。だけど有難うございます。
他にはどうでしょうか?いい機会(迷惑?)ですので教えて下さい。
>>414 そのサーバはHTMLやCGIを「/」の下に置くようになってんですか?
public_htmlがあるなら、そこが「ドキュメントルート」だよ。
つまりpublic_htmlディレクトリの外にデータを置けばいいということ。
あと、共有サーバで他のユーザにデータを見られないようにする てゆー問題もあるね。 CGIが所有者権限で動くWEBサーバなら、データのパーミッションを600に。 そうじゃないWEBサーバなら、あきらめる。
412です。皆さんありがとうございます。
>>415 そうなんです。/の下にcgi-binディレクトリを置いたりやHTMLファイルを転送します。ただtelnetがその鯖では使えず、普通のftpソフトでは/より上に行くことができませんし、鯖の方も許可していないようで
す(←ただ私の言うことですので信用できないかもしれませんが・・・)
こういう鯖ではルート以外におく方法の次善の手としてどういう方法があるのでしょうか(←416でパーミッション600という手を教えて頂きました)?
>>416 はい、共有鯖です。外に置いたら(というか置けると仮定したら)、やはり他人に見られますよね。そう言う場合600にすれば確かに最も安全ですよね。 ただこのデータファイル、不特定多数の人間が実行するスクリプトから
読みこんだり書きこんだりする代物ですので、600だとちょっと不都合が・・?
結局、
>そうじゃないWEBサーバなら、あきらめる。
やはり「外に置く」以外のセキュリティーはどれも似たり寄ったりなのですか?
>>417 >普通のftpソフトでは/より上に行くことができません
あー、そういう設定か。確かにそういうサーバありますね。
困ったもんだ。せめてもう一個上まで行けるように
設定しといてくれればいいのにね。
>不特定多数の人間が実行するスクリプトから
>読みこんだり書きこんだりする代物ですので、600だとちょっと不都合が・・?
「CGIが所有者権限で動くWEBサーバ」なら、600で不都合は
起きないから大丈夫です。
誰が実行しても、CGIファイルの所有者(あなた)が読み書き
してるのと同じことになります。
>やはり「外に置く」以外のセキュリティーはどれも似たり寄ったりなのですか?
いや、外に置くのも拡張子を".cgi"にするのも結局似たようなもので、
共有サーバの別ユーザから見られる危険性は一緒。
ひとつだけその危険がないのが、パーミッション600です。
とにかくそのサーバで、CGIが所有者権限で動くか
(別の言い方すると、CGIがSUEXECで動いてるか)を確かめるのが先ですな。
419 :
名無しさん@お腹いっぱい。 :2001/06/29(金) 07:51 ID:PEj2qvtM
412です。 丁寧なご返答有難うございます。(感謝 渦巻いていた疑問が晴れました。 こんな厨房の意見に混じれ酢をして頂いて本当に恐縮です。 鯖の設定と手元の本をもう一回確認して色々と試してみます。 ありがとうございました。
>>412 ドットファイルが安全というのはどういう意味か分からん。
WINDOWSのHIDDEN属性と近藤しちゃいないか?
↑の説を言い出したのが412氏じゃないことは分かっているけど。
最近のApacheは .ht で始まるファイルがデフォルトで外部から見えない ようになってるという話と混同してるのでは?
422 :
名無しさん@お腹いっぱい。 :2001/06/29(金) 17:08 ID:qvcgEcjU
やれなかったのか やらなかったのか どっちかな
______ /_ | /. \ ̄ ̄ ̄ ̄| / / ― ― | | / - - | ||| (9 > | | | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | | | ┃─┃| < 600デキナイサーバカリナイジョウシキ || | | | \ ┃ ┃/ \________ | || | |  ̄  ̄|
412です
皆さんレス遅れてすいませんでした。そして有難うございます。
>>420 ドットファイル(例:.hogehoge1233455)にすると、.txt .log .csvなどに
比べて外部からのアクセスによる不正なデータ閲覧を少しは防げる、というもの
でした。早速試したところ、確かにブラウザでの閲覧(ファイルを直接URLで指
定)を試みると、見れません。またファイル転送時にバイナリにすると良い様でし
た。ただいかんせん私のレベルは皆さんから見ればお粗末なもので・・・皆さん
にかかれば、あまり意味のない防御方法かもしれません。
>>421 例えば.hthogehoge1232344のようにすれば、上記の様なファイル名よりかは
安全性が高まると言うことでしょうか?う〜ん?もしよろしければ詳しく教えて
下さい。お願いします。
>>422 ルートディレクトリの外に置けるサーバーではありませんし、600にしたらスク
リプトが動きませんでした。従って
>>423 さんのように、よ〜〜〜〜く調べて鯖を変えなくては逝けないかもしれませんね。
しかしどうやったら調べられるんでしょうか??
>>424 Apacheのデフォルト設定で、
.hogehoge1233455 → ブラウザのURL直接指定で表示できちゃう
.hthogehoge1232344 → URL直接指定でエラーになって見れない
となってた時代があったんよ。
こういうのApacheのバージョンによってころころ変わんだけど、
もしかして現在のApache1.3.20だとドットファイルは全部アクセス不可?
なんにせよ、これはあくまでもデフォルト設定であって、
あとでいくらでも変えられるので、サーバごとに事情は異なる。
「ドットファイルは絶対アクセス不可」と思ってはいけない。
ただし自分で.htaccessを書いて「ドットファイルはブラウザからアクセス不可」に
設定することはできる。
レンタルサーバでデータのパーミッション600が可能か調べるには
そこのサポートにメールして聞けばいいんじゃない。
「CGIはsuEXECで動作してますか?」で相手はわかると思うよ。
>>424 です
>>425 さん、ありがりがとうございます。かなり理解が深まりました。
正直、セキュリティー(今回のドットファイルも含め)に関する情報って、
結構見つからないですよね(当たり前なんですけどね。ヘタレ厨房がス〜グ
悪用するから)。だから情報集めてそれを自分で噛み砕くのは本当に大変で
す。
ありがとうございました。また分からないことがあったらこちらで質問
させて下さい。
# >そこのサポートにメールして聞けばいいんじゃない。
# サポートがなっていない鯖も多いようですので参考にしながら
# 別板・別スレで情報を集めます・・・。
perlで掲示板を作っているのですが、$mymail(メールアドレス欄)に ☆┌|∵|┘♪└|∵|┐♪┌|∵|┘ ☆(∂v∂)☆(ノ^0^)ノ☆\(^○^)/☆(∩.∩)☆(〃^∇^)o_彡☆(V)o¥o(V) ↑このような文字列を入れるとアンカータグが閉じられずに、他の発言にも リンクが及んでしまいます。これを改善するにはどうしたらよいでしょうか? # Emailからタグを作成 if ($mymail ne '') { $mymail = "<A HREF=mailto:\"$mymail\"><b>$myname</b></A>"; }else{ $mymail = "<font color=\"#228b22\"><b>$myname</b></font>"; } # 一行に変換する &auto_link($mycomment); $mycomment =~ s/\r\n/<BR>/g; $mycomment =~ s/\n/<BR>/g; $mycomment =~ s/<BR><BR>/<BR> <BR>/g; # 書き込みメッセージ構成 $message = "<dt>$mymail <font size=\"2\">投稿日:$datestr</font><dd>$mycomment<P>";
428 :
427 :2001/07/01(日) 13:13 ID:???
429 :
427 :2001/07/01(日) 13:41 ID:???
代替文字で解決しようとしたのですが、 &nbsp;&quot;のような文字(&は半角)がそのまま出てしまいます このように書きました $mymail =~ s/</</g; $mymail =~ s/>/>/g; $mymail =~ s/"/"/g; $mymail =~ s/ / /g; $mymail =~ s/&/&/g;
430 :
427 :2001/07/01(日) 13:50 ID:???
ごめんなさい!自己解決しました 最後に”&”を置き換えてました
431 :
名無しさん@お腹いっぱい。 :2001/07/02(月) 14:11 ID:pXSk7yhs
Sakura Upload Boardでアドレスに
http:// 〜/cgiwrapDir/cgiwrap/sakura.cgi?new
とよけいな/cgiwrapDir/cgiwrap/という文字列がくっついてしまうのですが
どこを書きかえればよいですか。
$ENV{'SERVER_NAME'} $ENV{'SCRIPT_NAME'}
433 :
431 :2001/07/02(月) 14:30 ID:pXSk7yhs
434 :
名無しさん@お腹いっぱい。 :2001/07/02(月) 16:53 ID:W6DVOuys
C言語でURLエンコード、デコードする関数を教えてください。
>>434 そういうライブラリ探すべし。
検索キーワードは「C言語」「ライブラリ」「URLエンコード」
$FORM{'submit'}を見れないんだけど、どうしたらよいのでしょう? <form action="./temp.cgi" method="post"> <input type="text" name="name"> <input type="submit" name="submit" value="書き込む"> </form> temp.cgi 側 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; my $query_string = undef; my (@m_elements, $m_element, $name, $value); use vars qw(%FORM); if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'}); @m_elements = split(/&/, $query_string); foreach $m_element (@m_elements) { ($name, $value) = split(/=/, $m_element); $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; $FORM{$name} = $value; } } print <<"EOT"; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <META CONTENT="TEXT/HTML; CHARSET=SHIFT_JIS" HTTP-EQUIV="CONTENT-TYPE"> <TITLE>出力結果</TITLE> </HEAD> <BODY> <H3>出力結果</H3> 本文 $FORM{'name'} です。<BR> 実行 $FORM{'submit'} です。 </BODY> </HTML> EOT exit;
437 :
minima :2001/07/02(月) 22:28 ID:W/GXWllY
>>436 type=submit って、見えたっけ?
439 :
431 :2001/07/03(火) 12:40 ID:OhZUTkuw
おしえておくれ・・・
>>439 Sakura Upload Board なんてマイナーなCGIをソースも出さずに
何処直しゃ良いなんて教えられるわけねーだろ。
お前が知ってるCGIは全員知ってるとでも思ってんのか?
443 :
:2001/07/03(火) 14:49 ID:NUoQLxF.
Perlの質問です。 フォーム入力で「aaaa"bbbb」と入力されたとする。 CGIのデコードで ~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c",hex($1))/ge; として、確認画面で「name=aaaa"bbbbです」と表示した。 その同画面で print "<input type=\"hidden\" name=\"name\" value=\"$name\">\n"; と言う風に出力し(仕様)、さらに表示させようとすると valueの中身が「aaa」で切れてしまう。 これを解決する方法を教えてください。
444 :
432 :2001/07/03(火) 14:53 ID:???
445 :
見習い君 :2001/07/03(火) 14:56 ID:???
>>443 $value =~ s/"/&quot;/g;
446 :
431 :2001/07/03(火) 15:01 ID:???
447 :
431 :2001/07/03(火) 15:05 ID:???
448 :
443 :2001/07/03(火) 15:15 ID:4CbQmAdw
>>445 ありがとうございます。
このようにやると、
name=aaaa"bbbbと表示されますが、ソースは
<input type="hidden" name="name" value="aaaa&quot;bbbb">
となりますよね?
これはまた&quot;を元に戻す処理を入れ、ファイルなりに落とすという
方法(ファイルに落としたい)をとるしかないのでしょうか。
アングラ野郎は 初級ネット板 or ダウソ板 へ
>>448 ソース上は「"」になりますが実際に送られるのは「"」です。
つーかまず試してから物言え。
451 :
438 :2001/07/03(火) 16:40 ID:???
>>442 サンクスコ
見えるんだ…シラナカッタヨ
>>436 お詫びにこっちの環境で動作テストしてみたよ。
上のForm部分を HTMLに入れて、
下のソースは temp.cgiとして実行。
環境[ Apache 1.3.14 + Perl 5.2.2 ]
で…問題なく見えたけど。
ボタンを複数にした場合も、それぞれの Value値が渡ってきたよ?
ソース以外に問題がある可能性が高いと思われ。
452 :
438 :2001/07/03(火) 16:41 ID:???
>>451 記入漏れ…
Win32(Win2KServer)環境なの。
453 :
436 :2001/07/03(火) 18:59 ID:???
ありがとうございます。 当方 VirtualAvenue です。 $FORM{'name'} しか見えません。
ブラウザは関係あってもサーバが関係あるはずないだろ 実験に使ったブラウザの名前を書けよ
>>454 は ?
CGIが出力したHTMLに何も書いてないから
何も表示されないわけで,ブラウザとは無関係だろ...
456 :
438 :2001/07/04(水) 00:19 ID:???
>>454 「あるはずない」って断言するのはどうだか知らんがね。
そもそもブラウザがデータを渡してない可能性がある…ってことか?
だったらそう言えや。
IE5.5 と NC4.75で確認したけど、どちらも動作を確認。
ちなみに、俺の婆茶のアカウントで試したが、やはり動作を確認。
Freewebアカウントでも動作を確認。
仕事でやってるなら、更に IEバージョンごとにテストするところだが、
今は面倒なのでやらない。(ワラ
結果、
>>436 氏の環境の問題である可能性が高くなった。
これで満足か?
457 :
436 :2001/07/04(水) 10:28 ID:???
レス遅くなりました。IE5.0 です。 それで、同じ作業を(単にフォームに適当な文字を記入して送信) 繰り返してると、たまに 実行 書き込む です が見えるようになりました。 同じ文字を入力しても、見える時と見えないときがあります。 私の IE がウソコなんでしょうか? それとも IE の設定に関係あるんでしょうか?
460 :
436 :2001/07/04(水) 23:04 ID:???
やっと原因が解りました!! サブミットボタンをマウスでクリックすると上手く逝き、 リターンキーで送信すると上手く逝きませんでした!! 私は Win では殆どマウスを使わないので (ショートカットキーやタブで済ます)、気付きませんでした。。。 原因が暫く掴めなかったので、Linux に Apache 2.0.16 βとMozilla 0.9.2 を入れてローカルでも 実験しました。それでも$FORM{'submit'} が たまにしか表示されないので、もう諦めて 回線切って氏のうかと思ってましたが、 解ってよかったです。お騒がせしました。
>>460 あぁ、それが原因だったのか。
よく考えたら俺も昔同じ事に引っかかってた事があった。(w;
気付かずスマソ。
462 :
名無しさん@お腹いっぱい。 :2001/07/05(木) 01:06 ID:iTVp4ylE
パターンマッチについて質問します。 数字1文字か2文字、または、半角カタカナだったら真、 それ以外は偽、という正規表現ではまってます。 どなたか、お答えお願いします。
CGI設置したんですが 拡張子を他のものに変更したいんですが、、無理でしょうか よく掲示板なのにindex.htmlとかありますよね? あれってどうやるんですか?
>>464 書き込みをされる度に、データファイルと一緒にindex.htmlを書き換える。
それでその中に<form action=bbs.cgi>と入れておく。
書き込み記録はCGI。
記入欄はHTML。
わかるかな?
466 :
名無しさん@お腹いっぱい。 :2001/07/05(木) 18:18 ID:CmVrVJtE
基本的な質問スイマセン。 掲示板を作ったはいいんですが、ログファイルを 直リンとかURL直入力で落とされない様にする為にはどうしたらいいですか? IPアドレスを記録していますので、管理者(=自分orSU)以外から見られないように 何らかの方法で設定したいのです。 ちなみに、サーバは skipup.com です。
467 :
JAPU :2001/07/05(木) 18:22 ID:???
HTTPで見られるところ以外に置けばよろしい。 たとえば、~/public_html/ 以下のみが見られるようなら、 ~/log/ にでも置きましょう。
468 :
466 :2001/07/05(木) 19:04 ID:CmVrVJtE
>>467 早速ありがとうございます。
その方法を試してみたのですが、skipup.com では無理でした…
/web/* にHTML文書があり、/web/cgi-bin/* にCGIをおくというのが
skipup.com の設定なのですが、
どうやらCGI上でも/web/と同レベルの他ディレクトリ(/cgi-data/*)には
アクセスできないようです。
念の為絶対パス指定も相対パス指定も試したのですが、ダメでしたxx
IPアドレスは暗号化して、IP調査はダウンロードして復号する、という方向で
外的な匿名性を持たせる方向ですすめます。
469 :
昆布茶 :2001/07/05(木) 19:48 ID:???
↑パーミッションを600にすればいいだけだと思うが。
470 :
名無しさん@お腹いっぱい。 :2001/07/06(金) 00:38 ID:.S0aJ5pE
mod_perlを使用すると、親切にもmainに相当するパッケージ名 を自動的に割り当ててくれますが、スクリプトを作る場合は これに素直に従い、サブルーチン等に自分でパッケージ宣言 しない方が吉なんでしょうか。
471 :
名無しさん@お腹いっぱい。 :2001/07/06(金) 01:40 ID:dC0yYHsk
1、CGIでURLエンコードするときのデフォルトの文字コードは決まってるんでしょうか? 2、SJISのエンコードは %XX で言いと思うんですが、他の文字コードのエンコードは どうやってやるのでしょうか? UNICODEとかの場合は %XXXX で良いのでしょうか?
>>470 -741
まずは試してみろ。
うまくいかなきゃまた聞きに来い。
>>470 -471
試すのはいいけどローカルでな。
自分で試すことによって他の問題が出た時も対処がしやすくなる。
頑張れ。
474 :
名無しさん@お腹いっぱい。 :2001/07/06(金) 18:05 ID:YlE0Cv3o
475 :
モヘンジョ :2001/07/12(木) 01:10 ID:Li6mv1Jk
CGIの実行速度を測ってくれるサイトってありませんか? Kentのは重いって聞いたんですけど、実際他と比べてどうなのかなと。
use Benchmark times()
477 :
モヘンジョ :2001/07/12(木) 21:50 ID:.DP5dWOk
できればもう少し詳しくお願いします。
>>477 478に禿げしく同意。
せめて検索くらいしましょう。
それから、perldocくらい自分で見れるようになってください。
480 :
名無しさん@お腹いっぱい。 :2001/07/13(金) 02:56 ID:9y1whwlE
掲示板作成時、デザインとプログラムを分けて作りたいんだけど、 HTML::Templateモジュールとかのオブジェクト指向でないスクリプト で良い物ってありますか?
>>480 自分で掲示板作るんだよね?
モジュールって基本的に再利用可能でカプセル化されたものだから、
オブジェクト指向はついて回ってくるというか。
Exporterで関数指向にしてしまう。これは改変だけど。
自分で作る。
こんなとこかしら。答えになってないようで悪いが。
せっかく便利なものがあるんだから、使ったほうがいいと思うよ、でも。
482 :
480 :2001/07/13(金) 10:48 ID:???
>>481 オブジェクト指向ど素人やからしょうもない事、
聞いてしまいました;;
てーねーなレス感謝。
オブジェクト指向なんて慣れてしまえばどうってことはない。 俺はリファレンスを理解する方が苦労したYO!
484 :
奈々氏さん :2001/07/13(金) 15:12 ID:i.TxHOnw
CGI ではなく フォームの質問なんですが…。 フォームが表示されたときに、特定のテキストエリアにフォーカスが 行っていて、マウスでクリックしなくても、入力を始められるようにする にはどうすれば良いでしょうか?
486 :
484 :2001/07/13(金) 18:07 ID:i.TxHOnw
>>485 JavaScript の勉強をしてみました。
<input type=text name=text1 onLoad="this.focus()">
ここまで書いてみて挫折。うまく移ってくれません。
onLoad というのが違うようなのですが…。
>>484 onLoad()は<body>に書くがよろし。
つーか板違いか、これ(w
詳しく聞きたいならWeb製作板にいきましょう。
489 :
484 :2001/07/13(金) 18:23 ID:???
できましたー。 皆様ありがとうございました。
現在PerlでCGIを作っています。 テストはもちろんローカルで行っています。 そこで、もし無限ループに陥った場合は再起動すればいいのでしょうか?
>>490 俺はPerl.exeを強制終了させてる。
493 :
名無しさん@お腹いっぱい。 :2001/07/14(土) 20:31 ID:.p5/Qjsw
既出かもしれないんだけど、トップページでCGI使う場合(検索エンジンとかで) トップページのアドレスが長くするのを防ぎたいんですが フレームを使う以外の方法ありませんかね?板違いだったらスマソ
<!--index.html--> <form acrion="foo.cgi"></form>
s/acrion/action/
493が何を言ってるのか判らないのは俺だけですか
498 :
493 :2001/07/15(日) 04:38 ID:SggsQjA6
499 :
名無しさん@お腹いっぱい。 :2001/07/15(日) 06:34 ID:gUXi0obQ
DirectryIndex だっけ? アレってファイル名じゃなくてディレクトリ名まで指定できるの?
あの〜厨房な質問で申し訳ないんですが・・ DUKEってなんですか? これって何に使うの?
>>498 cgi-binでしかcgiが動かない設定なのか?
>>501 厨房が自分の力を誇示する為に使うツール。
DUKEを使う=ゴリラのドラミング(胸を叩くアレ)のようなもん
504 :
なー :2001/07/15(日) 19:27 ID:???
DUKEってまだ使ってるやついるのか?(^^;
505 :
なー :2001/07/15(日) 19:33 ID:???
>>500 できるよ。
DirectryIndex ./cgi-bin/hoge/hoge.cgi
とかね。うちのtopは掲示板だし(わ
506 :
nuc :2001/07/16(月) 01:57 ID:mntjpSsQ
if (!open(NOTE,"+<$visit_file")) { &error("書けない"); } flock(FILE, 2); truncate(FILE, 0); seek(FILE, 0, 0); print NOTE @DATA; close(NOTE); ↑こういうふうにopenとflock,truncate,seekの ファイルハンドルが違っていてもOKなんでしょうか? ファイルハンドルを合わせなくても正常に動作しているような 気はするけど、実際のところが知りたいす。
$a += 10; $b *= 2; $b -= 5; ↑こういうふうに"+="演算子と"*=", "-="演算子の 変数が違っていてもOKなんでしょうか? 変数を合わせなくても正常に動作しているような 気はするけど、実際のところが知りたいす。 *a = *b とすれば正常に動くがな。
>>508 507は506を馬鹿にしてるだけだと思われ。
510 :
名無しさん@お腹いっぱい。 :2001/07/16(月) 21:44 ID:hw6Oxuec
掲示板スクリプトで、 x.cgi ->(実行ファイル)と y.pl -> (環境設定ファイル)があったとして、 実行ファイルに環境設定ファイルを読み込ませる場合、普通に require './y.pl'; としてる物と、サブルーチンで設定変数の読み込みをさせてる物とがあるが、 どっちの方がいいか? またそれぞれのメリットなど教えて下さい。
freewebのページで「ずるぽん+擬古猫 2000年10月26日版」 の、アプロダを設置しようとしても500エラーが出てしまいます アスキーでftp転送し、パーミッションもあってるはずなんです。 原因として考えられることををご教示ください。 すれ違いなら素直にそういってください。夏厨房でスマソ
512 :
nuc :2001/07/17(火) 00:37 ID:wxI8qTz.
同じファイルハンドルにしないと効かないんすね。 配布されていたスクリプトがなぜかファイルハンドルを 別にしていたので1年くらいずっとそのままで使っていた。 わざわざスイマセンした。
最近本を読めば分かるようなことを聞いてくるやつが多いな。
>>510 どっちでも大差ないと思うが。
というか「サブルーチンで設定変数読み込み」ってなんだ?
open-parse-closeで値を取得するくらいならrequire/doの方が早いと思うぞ。
>>511 一行目が違う。
それでもだめならKCatch.pmを使え。
516 :
CGIヲタク :2001/07/17(火) 22:01 ID:YSWaJfE2
CGIのデコード処理が解りません。 0から教えてください。
まず精神統一をします
518 :
CGIヲタク :2001/07/17(火) 22:10 ID:05GVs.SU
てゆうかデコード処理しないとやばい?
まず座禅を組みます。 …と、その前に滝に当たった方がいいだろうか?
520 :
CGIヲタク :2001/07/17(火) 22:53 ID:05GVs.SU
すいませんけどマジメに答えて下さい。 本当に困っているんです。
0から、か。 ならまず #!/usr/bin/perl 0 __END__ これをやってみろ。
>>520 そこまで言うならマジレスするけど、貴方の質問には不足が
有り過ぎです。
・『0から教えてください』って、自ら努力しない人に教えるほど人は
出来てないの、私は。
・どう言うシチュエーションなのさな?コードくらい書いて例示しろっての。
・そもそも『CGIのデコード処理』って何の事よ?
少なくとも、らくだ本の前に国語の教科書を見なおしてくれ。
>>523 ・そもそも『CGIのデコード処理』って何の事よ?
逝って良し!!
CGIオタクが解りません。 0から教えてください。
>>524 =CGIヲタ
(プ
CGI:
WWWで, WWWブラウザからの要求に対してサーバが別のプログラムを起動実行し,
結果をWWWブラウザに返す処理を行なうためのインターフェイス.
コイツをデコードしてどうするつもりだよ(ワラ
>>526 自分の命がかかった場面でもなお相手とのやり取りでそういう構文エラー出してみせるなら
その時は褒めてやるけどね。
>>520 自分の命がかかった場面でもなお相手とのやり取りでそういう日本語と
態度を出してみせるなら その時は褒めてやるけどね。
要するにアホ同士の極めてアホなやりとりというわけで。
531 :
名無しさん@お腹いっぱい。 :2001/07/19(木) 13:56 ID:TX55hRGo
がいしゅつかもしれませんが優しく教えてください。 J-SKY対応のメールフォームCGIを探しています。 どこかのサイトで配布していませんか? おしえてください!!
532 :
名無しさん@お腹いっぱい。 :2001/07/19(木) 15:12 ID:d2nShnpo
CGIに限った話ではないが、 掲示版やチャットなどでよく使うので質問します。 クリプトの塩って、どうやって決めればいいのですか?
「クリプトの塩」って何だよ。
534 :
名無しさん@お腹いっぱい。 :2001/07/19(木) 15:39 ID:d2nShnpo
>>532 漏れはユーゼ名を塩にしてパスをCRYPTしてるが、塩を忘れないからいいのでは。
>>532 time()とか[a-zA-Z0-9/.]とかかな、俺は
536 :
名無しさん@お腹いっぱい。 :2001/07/19(木) 16:15 ID:3AQoVu6g
538 :
名無しさん@お腹いっぱい。 :2001/07/19(木) 17:16 ID:SOCZ4ghs
>>533 無知って怖いねー
クリプト=crypt
塩=salt
ネタだったらスマソ
ってかこれで間違っててもスマソ
クリプトの塩などとわざわざ難解な表現をするあたりでまともに聞く気があ るとは思えんのだが ネタだったらスマソ
ちなみに、saltもどこかに保管しておかなければいけないですね。 そうすると、たとえばユザー認証用のファイルを作るとすれば username, crypted pass, salt ってかんじでいいのかな。 ちなみに、saltがばれたり容易に推測できるのはやばいのかな phpマニュアルでは、saltに乱数使ってるよ。
クリプトの塩って、チュニジアあたりでとれる良質の岩塩のことだったような気が
>>540 saltの保管は照合するため?
通常はcrypted passの頭2文字がsaltだから要らない気が。
MD5とかだったらちょい違うけど。
って外してたらスマソ
543 :
JAPU :2001/07/19(木) 18:25 ID:???
DESの時は先頭2文字が、MD5の場合は "$" で挟まれた2番目に salt が入ります。 でも、照合するときには crypt の第2引数にそのまま入れればOK。わざわざ salt を抜き出すのは移植性の低下につながります。 die "sage" if(not crypt($input_passwd, $crypted_passwd) eq $crypted_passwd); わざわざ salt を使うのは /etc/passwd が誰でも読めた時代の名残か? (単なる一方向性関数だけだと、たまたま同じパスワード使っている場合にヤバそう。)
544 :
名無しさん@お腹いっぱい。 :2001/07/20(金) 15:09 ID:1f3fgK9Y
Web制作板で聞いたらこちらの板の方をすすめられたのでおじゃましにきました。 シンプルな掲示板CGIを探しています。 ・スタイルはTcup風。ごちゃごちゃしていない。 ・過去ログ生成を自動でやってくれる。 ・ドコモ、Jフォンからもアクセスできる。 ・URLやメアドがそのままでない。(「URL」「Mail」とかいう文字にリンクしてくれる) ・文中に書き込んだURLはオートリンクされる。 もうずっといろいろ探してるんですが、 これらの条件を満たすものが見つかりません。 どなたかこういった掲示板CGIに心当たりありましたら教えてください。
546 :
名無しさん@お腹いっぱい。 :2001/07/20(金) 19:57 ID:wVCDVsI.
547 :
名無しさん@お腹いっぱい。 :2001/07/22(日) 01:46 ID:vWoEzwQk
Linux Apachでイントラネットのウェブサーバを立てていますが、 アクセスしてきたクライアントのIPアドレスはわかるのですが、windows機のログインユーザ名を取得するにはどうしたらいいですか?
548 :
名無しさん@お腹いっぱい。 :2001/07/22(日) 10:10 ID:QqOnPr.6
Windows2000付属のWebServerでC言語CGIって可能ですか? コンパイルしたオブジェクトの拡張子を.cgiにしてもエラーが出てしまうのですが・・・・
>>547 ログインユーザ名?
認証かかってるページへのユーザ名の事?
それなら環境変数 REMOTE_USERでとれる。Apacheのログにも残る。
Winが立ち上がった時にでるヤツのは知らん。
つかそんなモンセキュリティ上取れるのか?
ってIEの事だから穴突いたりしたら取れるんだろなぁ・・・。
>>548 PerlのCGIを動かす場合、IISは拡張子.cgiのファイルに対し、
c:\path_to_perl\perl.exeを使って実行する。
つことはCで作ったCGIも拡張子.cgiにすると、c:\path_to_perl\perl.exe
を使って実行しようとしてしまう。
んでCは単体で動くから多分拡張子は.exeにすれば良いと思う。
>>547 初回のアクセスでVBスクリプトなどでコンピュータのユーザ名を取得(わからないけど、VBスクリプトだったら、Win固有のことができるのでは?
で、そいつをクッキーでもらう。次回からそのクッキーを使ってアクセス管理。
VB使いの人、教えてやってくれ。
551 :
名無しさん@お腹いっぱい。 :2001/07/22(日) 15:33 ID:QqOnPr.6
>>549 さん
レスありがとうございます。
しかし拡張子を.exeにしても
「CGIエラー 指定された CGI アプリケーションは、HTTP ヘッダーを 一部しか返していません。返されたヘッダーは:」
というエラーが英語で出てしまいます。
しかしパーミッション・ヘッダーに誤りはないと思います。
試しに実行ファイルをループさせたり色々実験しましたが
どうやら実行すらされていないようです。
色々調べた結果、Pathが設定されていない場合にもこのエラーが表示されるようですが・・・・
(例えばc:\path_to_perl\perl.exeを使って実行するように設定してあるがperl.exeが存在していなかったり、
.dllが存在しなかった場合)
win2000+IIS+C言語でCGIを実現できた方アドバイスお願いします。
コンパイラはgccを使っています。
>>551 ちゃんと環境に合わせたコンパイルをしたんでしょうか?
例えば、LinuxでコンパイルしたものはLinuxでしか動きません、通常は。
試しに拡張子exeでコマンドラインから入力してみるとか
554 :
竹村健一 :2001/07/23(月) 20:38 ID:LfLDUuSI
CGIファイルの中身をテキストで開いて変更したのですがそのまま保存しますとテキストでの保存となってしまうのです。 中身を替えた後もう一度CGIファイルのままで変更の設定を保存するにはどうすれば良いのでしょうか? 素人なので申し訳御座いませんが教えて頂けないでしょうか。
>>554 $ mv foo.txt foo.cgi
C:\> ren foo.txt foo.cgi
556 :
竹村健一 :2001/07/23(月) 22:01 ID:LfLDUuSI
すいません。555さんちょっと意味がわからないのです・・・
ネタは他でやれ。 ネタじゃないならWin使ってるならWin、Unix使ってるならUnix、 MS-DOS使ってるならMS-DOS、BeOS使ってるならBeOSの勉強しろ。 Macは俺が嫌いだから捨てろ。
夏休みだよ・・・勘弁してくれ。
559 :
名無しさん@お腹いっぱい。 :2001/07/23(月) 22:51 ID:0Wghze/M
>>554 メモ帳を使っているなら、ファイル名をダブルクォーテーションでくくって保存すべし。
例 "abcd.cgi"。 これをしないと abcd.cgi.txt となる。
560 :
竹村健一 :2001/07/23(月) 22:52 ID:???
ネタ に マジレス カッコワル(ぷ
このスクリプトで2>&1は何のために行っているのでしょうか。 標準エラー出力を標準出力に変更するということらしいのですがそうする意味がわかりません。 ちなみにこれはあるスクリプトから他のスクリプトを実行させる物のようです。 open(EXEC,"| abc.cgi 2>&1"); while (<STDIN>){ print EXEC; } それとこのとき、実行されたスクリプトがはき出した内容を受け取るにはどうすればいいのでしょうか。
562 :
名無しさん@お腹いっぱい。 :2001/07/23(月) 23:26 ID:7GeYowA6
age
563 :
JAPU :2001/07/24(火) 00:07 ID:???
>>561 man sh すれ。
[n1]>&n2
duplicate stdout (or file descriptor n1) to file descriptor n2
(FreeBSD General Commands Manual より)
0 = stdin
1 = stdout
2 = stderr
なので、標準エラー出力を標準出力にリダイレクトすることを表す。
564 :
564 :2001/07/24(火) 01:00 ID:1Q8OCeBA
今CGI動かしてる鯖が結構不安定なので、前回アクセス時から1時間以上経過していれば 別鯖にデータファイルのみを転送したいと思っています。 Perlで可能でしょうか?
>>561 ということは単に実行するスクリプトがはき出したstderrも一緒に出力するため
っていうことでいいのでしょうか?
後の方の質問ですが
$_ = <EXEC>;で普通に読み出すことができました。
これで読み出さなければ勝手に標準出力に出力してしまうのでどうやって
読み出すのか迷っていました。これはperlの仕様なのでしょうか??
Perlの仕様っていうか、とりあえず一般的なプログラム言語のI/Oの復習とか。perldoc -f print とか。
567 :
JAPU :2001/07/24(火) 01:29 ID:???
>>561 書き忘れた。
IPC::Open2 を使いなさい。
SYNOPSIS
use IPC::Open2;
$pid = open2(\*RDR, \*WTR, 'some cmd and args');
# or
$pid = open2(\*RDR, \*WTR, 'some', 'cmd', 'and', 'args');
(man IPC::Open2 より)
open3 もあるので、用途によって適当にどうぞ。
568 :
561 :2001/07/24(火) 02:16 ID:???
>>566 perldocを見てみましたがなぜ勝手に出力するのかについては書いていませんでした。
かなり適当なコードを書いても動いてしまうので曖昧な理解で終わってしまいます。
自分のマニュアルの読み方がまずい&UNIXに関する知識が乏しいせいかもしれませんが・・・。
>>567 調べてみたところこれは直感的でいい感じですね。
教えていただいてありがとうございます。
>>569 Perlのパスが違うというオチは勘弁。
572 :
名無しさん@お腹いっぱい。 :2001/07/24(火) 21:35 ID:4urEwZxY
>>570 -571
いえ、どちらも大丈夫です。
Our machines are very strict when executing Perl, and bad code is always rejected.
こう書いてあったので、「悪いコード」があるって事らしいのですが、
他で使えたものでどこが悪いのか分からなくて・・・。
ものはYY-BOARDです。
use strict環境下でしか動かないとか。 デフォルトで-wTとかで動くようになってるとか。
575 :
名無しさん@お腹いっぱい。 :2001/07/24(火) 23:22 ID:nE97sqD.
>>574 これって、何も出ない方が良いんですよね・・・?
見るのも嫌なほどぎっしり埋まってくれてます・・・
その内容を書けよ
tok2で掲示板を作っています。cookie文字列がおかしくなってしまいます。 Location問題解決のためにmetaタグでrefleshをするのですが、[書き込む]→[refleshページ]→[掲示板表示]のとき [掲示板表示]でのみcookieが文字化けしてしまいます。解決する方法はあるでしょうか perlソースの日本語に関係している部分です↓ # &init_form('euc'); sub init_form { local($query, @assocarray, $assoc, $property, $value, $charcode, $method); $charcode = $_[0]; $method = $ENV{'REQUEST_METHOD'}; $method =~ tr/A-Z/a-z/; if ($method eq 'post') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } @assocarray = split(/&/, $query); foreach $assoc (@assocarray) { ($property, $value) = split(/=/, $assoc); $value =~ tr/+/ /; $value =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg; &jcode'convert(*value, $charcode); $form{$property} = $value; } }
>>577 とりあえず
jcode::convert(\$value, $charcode);にしたら?
直るかどうかは別として。
tok2で作らずにローカルで作りましょう。
580 :
超初心者 :2001/07/28(土) 22:58 ID:???
すみません、ここのアップローダーについて教えてください。
http://zurubon.virtualave.net/upload.txt 240〜270行目までのパスワード設定についてよくわかりません。
投稿者がパスワードを設定して自由に自分がアップしたものを削除でき、
且つそれを管理者も自由に削除できるようにしたいのですが
うまくいきません。
どっちも使用するにすると、投稿者のファイルを管理人が
管理パスワードで削除しようとすると
「削除禁止ファイルです」等、エラーが出て投稿者以外削除できなくなります。
http://zurubon.virtualave.net/crypt.cgi ここの設定が悪いのでしょうか。
$val = crypt( , );は空白が2つありますけど
どっちに何を入れたらいいのですか?
表示されるInput: Seed: Out: の三つのうち、どこに何を入れたらいいのですか?
よろしくお願いします。
# 投稿ファイル削除パス生成時の'種'
$del_seed = 'z8';
# 投稿ファイルの管理者削除
$admindel_enable = 0;
# 管理者パスワード
$adminpass = '';
# 管理者パスワードの'種'
$adminseed = 'z8';
作者に聞きませう!
582 :
名無しさん@お腹いっぱい。 :2001/07/28(土) 23:25 ID:5DaHUFuo
ENCTYPE="multipart/form-data"で送信すると、STDINに -----------------------------********** Content-Disposition: form-data; name="aaa" aaa (以下略) のようなものが入ると思うのですが、これはどのブラウザでも同じ書式(?)なんでしょうか? どうか教えて頂きたいです。
583 :
超初心者 :2001/07/29(日) 00:07 ID:???
>>581 そんなー(゚д゚)
アップローダーつったらこれが殆どみたいだし、
使ってる人も多ければ教えてもらえるかな、と思ったのに・・。
>>577 =~ s/reflesh/refresh/g;
>>583 スクリプトはよく見てないけど、
crypt(パスとして使いたい文字列,z8);
として、出てきたものを管理者パスワードとして設定すればいいんじゃないかな。
586 :
名無しさん@お腹いっぱい。 :2001/07/29(日) 02:28 ID:18Lus0bo
サブルーチンを別ファイルにまとめ、メインのスクリプトの頭で require '../libdir/hoge.pl' してmod_perl(Apache::Registry)で 動かしているのですが、時々最初のサブルーチンを呼ぶところで、 Undefined subroutine が出て困っています。require をフルパス 指定にしたり、startup.plで use lib qw(/full/path/libdir) 等 を試しているのですが、不定期にエラーが出続けています。 何か原因推定できるでしょうか。 動作環境はApache-1.3.20 + mod_perl-1.26 + perl-5.6.1(スレッド オプション無し)で Solaris8で使用中。
>>586 名前空間の問題じゃなかろうか。
そんな話を耳にした記憶が。
詳しくはmod_perlのドキュメントでも見てくれ。
588 :
超初心者 :2001/07/29(日) 10:28 ID:???
>>588 $val = crypt ( 暗号化する文字列 , 種 );
Seedを$adminseed、Outを$adminpassに設定
590 :
:2001/07/29(日) 15:34 ID:Qc8mCzXU
@nifty じゃ Referer 変数って取れないの? つーか、@nifty 使うのはシロート?
591 :
名無しさん@お腹いっぱい。 :2001/07/29(日) 23:40 ID:f21NlnVQ
クライアントがサーバーからファイルをダウンロードできるような CGIを書いてます。(ドキュメントルートに置きっぱなしにして、直リン されたら困るようなファイルを、その都度送信してあげるようなCGIです。) Content-typeとContent-Dispositionの並び順は次で正しいのでしょうか? 1行目;Content-Disposition: attachment; filename=hoge.bin 2行目;Content-type: application/octet-stream<CR><CR> IE5.5(SP1非適用)だとこの順番でないとダウンロードのダイアログに 表示されるファイル名が"hoge.bin"にならず,CGIのファイル名になって しまうのですが、なんとなく本当は逆?のような気がするのですが。
592 :
586 :2001/07/29(日) 23:52 ID:iMPG7BfY
>>587 mod_perlのドキュメントは、いろいろ見てはいるんですけど、
英語ドキュメントばかりで、なかなか進まない。(泣
特にpackage宣言はしていません。サブルーチンのファイルは、
mod_perl用のスクリプトでは無い、普通のCGIスクリプトからも
共有でrequireしてるのがマズイのか?鬱だ。
593 :
591 :2001/07/30(月) 00:01 ID:neeKDwG6
追加。 一行目の最後にも改行コードが入ってます。
>>586 Perlはrequireとか順番に実行しないような気がした。
BEGIN { require '../libdir/hoge.pl' };
でどう?
597 :
名無しさん@お腹いっぱい。 :2001/07/30(月) 17:07 ID:H421xe6w
>>590 HTTP_REFERER は取れる。
@niftyで取れないのは、REMOTE_HOST。
598 :
591 :2001/07/30(月) 23:52 ID:nDJaYIZI
えっ! (^^;
環境変数を確認できるCGIのURLに /hoge.bin という文字列を 付け加えてアクセスしてみましょう。 CR -> 復改 LF -> 改行
601 :
586 :2001/07/31(火) 03:13 ID:y761.lo6
>>586 同一人物です。が、そんなことはいいとして。
多分requireしてるライブラリに問題が、でしょう。
OOPなモジュールに書き換えてuseするのが吉かと。
頑張ってください。
質問掲示板で、レスがつくごとに親記事を書いた人に sendmailを使って自動的にメールを送るようにしたいんですが、 もしメールアドレスが存在しなかった場合、 サーバーエラーが出たりするのでしょうか?
606 :
while(0) :2001/08/01(水) 00:12 ID:P0HzbCeY
おいおい、5万人近くの利用者のメアド&tel番がそのままおいてあるよ、、
609 :
591 :2001/08/01(水) 01:47 ID:7nllhseE
whois警報発令中?
612 :
586 :2001/08/01(水) 23:06 ID:oQT0JWR6
>>603 結局名前空間の問題のようです。601のリンク先に従い、
requireされている側でpackage宣言して、サブルーチンと
グローバル変数をエクスポートし、呼出しをrequireから
useに変えて(要はモジュール化した訳ですが)1日順調に
動いています。ダーティなスクリプトの書き換え優先で
OO化までは手が回りませんが、
>>587 ,
>>603 で指摘された
通りと言うことで、どうもありがとうございました。
613 :
名無しさん@お腹いっぱい。 :2001/08/02(木) 00:11 ID:FK1JacWw
614 :
名無しさん@お腹いっぱい。 :2001/08/02(木) 00:30 ID:DguDE1y6
>>604 どこに届くかはReturn-Pathの設定によるね(藁
ボタンをクリックするとサーバー上のファイルをダウンロード するにはどうすればいいのでしょうか? HTMLに記述?それともcgiでやるの?
>>617 ダウンロード回数とか調べる必要が無いならHTMLで。
htmlじゃ絶対に無理だと思うが。
いやそれがそうなんだってば今の季節 <a href="hogehoge">hoge</a> きっとこれだ! w
>>617 確認の為に聞く。
ダウンロードは、自分のPCにDLするんだよな?
だとしたら
>>620 で右クリックでもして「対象を保存」で十分。
ただし、Win鯖の場合exeファイルをDLできないことがあるので注意。
実行されちまったりするからな。
もしA鯖のファイルをB鯖にDLしたいんだとしたら、LWPかSocketだな。
この場合DLと言わないと思うが。
622 :
名無しさん@お腹いっぱい。 :2001/08/02(木) 13:12 ID:lELrWrZM
質問です
ttp://ipveov.virtualave.net/hope/index.html ここの「素敵メーラー Ver0.7」をomosiro.comに置くと
check.htmlが表示されるところで
formのactionが
<form method="POST" action="included://***.omosiro.com/cgi-bin/mail.cgi" enctype="multipart/form-data">
このようになってしまいます。
どうにかして対策できないでしょうか
>>619 HTML勉強しなおせ。Web製作板でな。
624 :
617 :2001/08/02(木) 13:24 ID:???
えいと、いや 「クリックするとサーバにのってるデータをcsv形式で サーバのどこかに一回保存して、それを自分のPCに 名前を付けて保存」 しようと考えたのだ。 いいや、できそうにないんでFTPでやるから。
サーバのどこかに一回保存する必要があるのか? あるとしてFTPならできるのか? 馬鹿?
>>617 CGIでやりたいことは出来るかと思いますが。
628 :
627 :2001/08/02(木) 15:29 ID:???
629 :
617 :2001/08/02(木) 16:11 ID:???
>>623 いや、文章をよく理解する能力を付けた方がよかった。
鯖にアプロードする事かと思ったんよ。
631 :
コメント無しさん :2001/08/03(金) 13:56 ID:DhQExyss
アプロードがHTMLだけでできるの? frontpage extension とか mod_dav などが入ってるの前提?
ブラウザに送らせることはできるけどサーバ側で受け取る方法が…。
634 :
殺 :2001/08/03(金) 15:55 ID:???
ブラウザでしかファイルのアップが出来ない鯖に 自動でファイルを転送するプログラムを組みたいのですが、 <INPUT TYPE="FILE" NAME="filename" … のタグの部分のパラメータをうまく渡すことが出来ません。 他のHIDDEN等と一緒に filename="c:\index.html"&… のようにしているのですが どこか間違えているのでしょうか?
スレ違いの予感
>>634 それはセキュリティに問題が出るので出来ないことになってます。
例えば特定のファイルを決めうちで設定してJavaScriptとかで
OnLoad時にsubmit()やられたら勝手にファイルもってかれちゃうでしょ
637 :
636 :2001/08/03(金) 17:12 ID:???
ん、、質問の内容を取り違ってるんかな タグの部分のパラメタってなに? 渡すとはどっちからどっちへ?
638 :
殺 :2001/08/03(金) 17:53 ID:???
>>635 どのスレが適切でしょうか?
>>636 なるほど・・・
パラメタは NAME と VALUE 。つまりアプするファイル名情報。
渡すのは、こちらのプログラムによって「ローカルHDD」から「サーバー」へ。
うーん、説明下手でスマソ。。
>>638 あーわかったよ
FILEだから、ENCTYPE="multipart/form-data" なんだよね?
標準入力を全部表示して見りゃわかるとおもうが、
ライブラリ等使用してるなら、multipart/form-dataのときの
値の取り出し方をライブラリのドキュメントとかでさがしてみたらいいかも。
そゆことでない?
>>641 それが不思議なんだけど、いるからSPAMが絶えないんだよな
登録する人たちにとってはあれはSPAMじゃなくて 「出会いの場を提供してくれる素敵なメール」 なのではないかと。
644 :
名無しさん@お腹いっぱい。 :2001/08/06(月) 13:55 ID:r1Q1kj2I
「ダウンロードしなおしたら動いた」ってどこかで見た気がする
647 :
名無しさん@お腹いっぱい。 :2001/08/08(水) 16:46 ID:hfCNj1Do
質問です。たとえば30項目のテキストフィールドのデータを GETでCGIに渡すとき、カンマ区切りの一つの文にしてCGIに 送り、サーバ側でカンマで分割させるのと、"?xxx=yyy&fff=aaa" とひとつひとつ30項目GETのクエリで渡すのとどちらが サーバ側に負担をかけないでしょうか?
>>646 製作者にメールで聞いたら?
正しい答えが返ってくる可能性一番高いよ。
>>647 どっちかというと前者の方が負担は少ないと思うが、
差は気にするほどじゃないと思われ
>>644 a-men.dat(たぶん)が0バイトのファイルじゃないと飛ばされる。
改行一個でもあると空文字がマッチする。
…だったと思うヨ。
651 :
肉 :2001/08/08(水) 20:04 ID:el4UUDvg
>>648 それが質問は受け付けてないとのお答え
いっそのこと金払ってサポート受けるのがいいんでしょうかね。w;
653 :
名無しさん@お腹いっぱい。 :2001/08/09(木) 23:57 ID:yQqDsehE
フォームメールを作っててちょっと困ってるんですが、 Webのフォームに入力して、送信ボタンで指定アドレスにメールを送るんですが、 ネスケのメーラーで受信した時だけ文字化けしてしまいます。 Outlook, Outlook Express, EdMax は大丈夫でした。 「ネスケは無視」で済ませられないので何とかお願いします。 誰かこんなケース知らないでしょうか?
655 :
名無しさん@お腹いっぱい。 :2001/08/10(金) 00:11 ID:rALdiy7o
全部JISにしてるはずなんですけどねえ。 っていうかそれにしたって他のメーラーでは大丈夫でネスケメーラはダメ ってのはなんなんでしょう。 他のメーラーは文字コードが不正(というか変)でも補正してくれるんだろうか…
657 :
名無しさん@お腹いっぱい。 :2001/08/10(金) 10:31 ID:SGYXQF82
Netscape6が6.1になっても相変わらずContent-dispositionを 無視してくれやがりますがどうしたらいいですか? 4.xだとちゃんと動くのに・・
658 :
657 :2001/08/10(金) 10:34 ID:SGYXQF82
あう、 Content-Disposition: filename= でのファイル名指定っす。
それって6からなのかな? 2バイト問題じゃなくて、、 色々やったけどもう忘れちゃった w
661 :
名無しさん :2001/08/11(土) 00:33 ID:1T8I2FC6
FreeBSDにapacheをいれました。
そして、ためしに、定番のhallo.cgiなどを
ブラウザ経由で、表示してみると、見事成功するようになりました。
(hello worldとでる)
しかし、
次に、ある本に入っていた掲示板用cgiスクリプト(discussion.cgi)
を/cgi-bin/におき、
ブラウザ経由で、
/localhost/cgi-bin/discussion.cgi
にアクセスすると、
Internal Server Errorとおこられます。
しかし、terminalで
%perl discussion.cgi
とすると、
問題なく、html形式のソースをはいてくれました。
そのhtmlファイルを用いてブラウザで表示するとちゃんと、掲示板
がでてきました。
そこで、困ったと思い、いろいろ調べ、
http://www2.startshop.co.jp/~68user/webcgi/intro-perl.html にある、wrapper.cgiをcgi-bin/にいれて、
(僕のlocalサーバのルートのサブディレクトリにcgi-binはあります)
/localhost/wrapper.cgi/cgi-bin/discussion.cgi
としてみると、
Not Found
The requested URL /wcgi-bin/discussion.cgi was not found on this server.
といわれます。
どこがだめなのでしょうか?
>661 ネタ?それとも、エラーメッセージも読めない厨房? 厨房なら逝ってよし!
663 :
名無しさん@お腹いっぱい。 :2001/08/11(土) 00:43 ID:ktzGqCic
質問です。 掲示板の入力フォームにパスワードを入れるテキストを作り、トリップのようなその人専用のIDを作りたいです。 どなたかトリップ部分のサンプルお願いします。
よく分からんけど、その端末から操作した時には ヘッダは吐いてたの? Cotent-type・・・・ってやつ
>664 ネタにマジレス(w カコワルイヨ
668 :
名無しさん :2001/08/11(土) 00:52 ID:1T8I2FC6
>>664 Content-type: text/htmlのことですね。
はいています。
>>662 どういうことでしょうか?
そうそう、エラーメッセージ
The requested URL /wrapper.cgi/cgi-bin/discussion.cgi was not found on this server.
でした。
これは、上であげたページにのっていたんですが、
cgiファイルでのブラウザからのアクセスは
このような、アクセス法でいいみたいなんです。
一見wrapper.cgiがディレクトリみたいになってますが。
669 :
661 :2001/08/11(土) 00:53 ID:1T8I2FC6
まじでネタじゃないので、どこが問題かお願いします。 僕は初心者なので、みなさんからみたらネタレベルの 低レベルなことを尋ねているのかも知れませんが。
ラッパーって何だ? (´Д`;) それだと意図した様に/discussion.cgiがPATH_INFOに入ってないと思う。 /wrapper.cgi はちゃんと動くよね?? "foo.cgi をデバッグしたい場合は、〜〜〜"って出てる? つーか他のスクリプト(既存の)は動くの? お役に立てそうにないかな、、
/wrapper.cgi/discussion.cgi こうか、、
>661 そもそもrootディレクトリにcgiの実行権限を与えてるの? /localhost/wrapper.cgi/cgi-bin/discussion.cgi hallo.cgiを動かしたときには、どのように実行したの? ちなみに、hello.cgiじゃないんだよね(w あなたの設定環境などが我々には分からないのだから、 もうちょっと詳しくApatchの設定内容等書かないと レスつけても勘違いになることがあるかも知れないので これ以上書きようがないよ。
Apatchはいかんだろ(w
675 :
661 :2001/08/11(土) 08:09 ID:1T8I2FC6
ありがとうございます。
apacheの設定は、
1、httpd.confにおいて、
<Directory "/usr/local/www/*">
からはじまるところにある、
全てのOptionsにExecCGIを付け加えた。
2、ScriptAlias /cgi-bin/ "/usr/local/www/data/cgi-bin/"
もかいた。
3、AddHandler cgi-script .cgiもかいた
3、/data/cgi-binのパーミッションを755にした。
というところです。
>>672 >そもそもrootディレクトリにcgiの実行権限を与えてるの?
>/localhost/wrapper.cgi/cgi-bin/discussion.cgi
http://www2.startshop.co.jp/~68user/webcgi/intro-perl.html によると、wrapper.cgiはcgi-binに放り込め。と書いてあります。
このcgi-binにだけ、実行権限は与えてあります。
/localhost/wrapper.cgi/cgi-bin/discussion.cgi
というのは、上のページを参考にして、このような、
ファイルへのアクセスのしかたでいいように思われました。
一応/localhost/cgi-bin/wrapper.cgi/discussion.cgi
としても同じ結果がでます。
そもそもwrapper.cgiを使っているのは間違いなのでしょうか?
hello.cgiは/localhost/cgi-binにあります。
ソースは、
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><body>";
print "Hello world.";
print "</body></html>";
で、
ブラウザからみると、ちゃんと、
Hello world.とでてきます。
676 :
名無しさん@お腹いっぱい。 :2001/08/11(土) 12:30 ID:E74820vk
age
サゲ
678 :
18才の芸能人 :2001/08/12(日) 00:17 ID:6KogsX6I
679 :
名無しさん@お腹いっぱい。 :2001/08/12(日) 00:44 ID:t2EXh9wM
675です。 どなたか分かる人お願いします。
みんな色々書いてるからそれを一つずつ確認しないと パスミスとか鯖名が通ってないとか確認してるの? まずhtmlを表示→hello.cgi動作確認 で、自作のは置いといて 出来合いのスクリプトもうちょっと動かしてみて つか404出ますとか言われると 仮想パスとか解ってないのかなぁ と思って 説明以前にもどっちゃうのね
> しかし、terminalで > %perl discussion.cgi これじゃダメ、実行権限与えて(7**) %./discussion.cgi これで動く? perlのパスはあってる? perl5とかになってない?
っつーか、perl discussion.cgi で動くなら、wrapper使わんでいいでしょ。 で、500 Internal Server Errorってことだから、 定番で #!/path/to/perl が間違ってるか、CRLFの問題。 とりあえず、disccussionの先頭行を #!/usr/bin/perl -- (最後の--が重要)にしてみよう。
A pacth!!
685 :
661 :2001/08/12(日) 09:35 ID:t2EXh9wM
みなさま、有難うございます。できるようになりました! 682さんのおっしゃるように、 #!/usr/bin/perl -- で動きました。 #!/usr/bin/perl ではずっとinternal server errorがで続けていました。 この--ってどういう意味なのでしょうか?
686 :
名無しさん@お腹いっぱい。 :2001/08/12(日) 12:14 ID:SCAUF9dU
ここでしていい質問なのかわかりませんが、 CGIの中にあるURLのアドレスがわかりません。 具体的にいうとチャットの中にあるアドレスがわからないのです。 プロパティをみても正確でないし、ソースをみてものっていません。 これはHP製作者が隠していると思うのですが、場所を知る方法ありませんか? 別に変なことにつかうのでは全くありません。
意味不明
688 :
683 :2001/08/12(日) 13:26 ID:???
>>685 要は、改行コードの問題なんだけど。
FreeBSDだとLFが改行だけど、WindowsだとCR+LFが改行になる。
#! から改行の前までに書いてあるコマンドを実行しようとするから、
/usr/bin/perl(LF)
ってのを実行しようとして、そんなコマンドないよ→Internel Server Error
で、 -- をつけると、これ以降の文字が無視されるから大丈夫になる。
まぁ、自分で「CGI 改行コード」とかで検索したほうがいいとおもうけど。
689 :
664 :2001/08/12(日) 14:28 ID:???
そう言う意味だったのか、、、
今まで使ってたけど意味は知らなかった (´Д`;)
漏れも勉強になったよ。 3Q!!
>>688
690 :
688 :2001/08/12(日) 14:31 ID:???
>>688 の4行目
/usr/bin/perl(CR) だ。鬱。
691 :
名無しさん@お腹いっぱい。 :2001/08/12(日) 23:46 ID:latsU6.6
基本的なBBSプログラムの組み方(フローチャート) を教えてください。こんな感じでよいですか↓ 10 POSTされたメッセージを解析 20 削除要求があれば 50,なければ次へ 30 書込要求があれば 60,なければ次へ 40 100へ 50 指定されたメッセージを削除して 100へ 60 指定されたメッセージを追加して 100へ 100 BBSをHTML化110 終了
692 :
名無しさん@お腹いっぱい。 :2001/08/12(日) 23:52 ID:U63Q6.4.
CGI入れてるディレクトリのパーミッションはなんにすれば いいんですか? 今755にしてるんですが外部からみえまくりです。 掲示板設置してるんですけど、600にしたら掲示板みえなくなっちゃうんです。 お手数ですが教えて下さい。
693 :
Crow :2001/08/13(月) 00:04 ID:???
>>692 流石にそれは簡単すぎる問題。2chで聞くべき問題じゃないぞ。
YAHOOで"パーミッション"とか調べると良い。
695 :
名無しさん@お腹いっぱい。 :2001/08/13(月) 00:08 ID:YW6jxcOg
>>692 ディレクトリに制限かけるなら".htaccessの設定方法"で検索してくれ
696 :
692 :2001/08/13(月) 00:22 ID:???
>>693 ハイ。その通りです。
検索したらわかりました。
701が正解・・・でいいんですよね?
とりあえずindex.htmlは置いたほうがいいんじゃないかと思った
>>696 ディレクトリの内容を読みたいCGIとかだと705の方じゃなきゃだめだったりするよ。
(中身見えちゃうけど)
あと、suexecとかで動いてるところなら700にするとか。
705でindex.htmlを置いておくのが安定だと思う。
サーバによってまちまちだな。 700でも動くところはあるし、777でもログ等のファイルは見られないようにしてあるところもあるし。 動く範囲でなるべく低くすれば良いんじゃないかと。 まぁ、ファイルを直接見られたくないのなら そのファイル自体のパーミッションを変える方が適切だけど。
700 :
657 :2001/08/13(月) 15:39 ID:JzeNXb.k
>>660 少し頑張った人
めちゃくちゃ遅レスですがありがとうございました。
会社2チャンネラなもんで。えへ。
で、リンク先を参考にしたらうまい事動きました。
Content-Disposition: filename=hoge.hog
じゃなくて
Content-Disposition: form-data; filename=hoge.hog
にすれば動きました。書式が間違ってたとは・・
前者でもIE,NN4.xだとちゃんと動くんで気付きませんでした・・
701 :
名無しさん@お腹いっぱい。 :2001/08/13(月) 22:03 ID:MjrwvjYs
ここで良いのかどうかよくわからないんですが 質問させてください。 FTPを使わずに直接パーミッションを変更する方法は どうやるのでしょうか? 意味不明だったらすみません!
質問だけど、f2sであやしいあぷろだは使えるのかな?
704 :
UUDH :2001/08/13(月) 23:47 ID:???
なまえ消し忘れた ぁぁぁ〜
706 :
名無しさん :2001/08/14(火) 01:51 ID:NydWBwmo
鯖 管理者にログファイルを見れなくするために パスワードをかけて開けないようにできませんかね? たとえば、zipみたいにデレクトリー事とか...
>>706 > たとえば、zipみたいにデレクトリー事とか...
この行の意味が全然わからないけど・・・
サーバ管理者は何でも出来るので無理。
708 :
名無しさん@お腹いっぱい。 :2001/08/14(火) 20:07 ID:vuYvfUZY
>>706 何のログファイルか知らんけど、掲示板とかだと
利用者が投稿(データ送信)した時の全てのデータが鯖のログに残るからどうしようもないと思う
普通 サーバー管理者は見ないだろうけど・・・・
自鯖を立てる! これしかないでしょ。
>>706 ログデータに crypt かけて保存とか。
それ以前に信用できない鯖管のいるところは止めるのが先だな。
711 :
名無しさん@お腹いっぱい。 :2001/08/14(火) 22:26 ID:y4lUcYi6
FreeBSD、apacheでcgiファイルをみると、いっつも文字化けします。 ブラウザの文字コードをいろいろ変えてもだめです。 qkcで文字コードをためしに、 qkc -eu *.cgi としたり qkc -ms *.cgi としても、 どうやっても文字化けします。どうしてでしょうか?
712 :
JAPU :2001/08/14(火) 22:33 ID:???
>>710 crypt(3) は不可逆。
crypt(1) (aka enigma)を使うにせよ、鍵は平文で保存する必要があるので無駄。
>>711 CGI ファイルを何でどのようにして見たのですか?
713 :
名無しさん@お腹いっぱい。 :2001/08/14(火) 22:58 ID:y4lUcYi6
715 :
名無しさん@お腹いっぱい。 :2001/08/14(火) 23:33 ID:y4lUcYi6
>>714 charsetってどうやってはくのでしょうか?
716 :
チュー :2001/08/14(火) 23:47 ID:7g0MfT7Y
print "Content-type: text/html; charset=Shift_JIS\n\n"; #など
718 :
Anonymous :2001/08/15(水) 17:44 ID:8YDvnSrY
質問です!! 会員制のページを作りたいと思います。会員登録ページでパスワー ドを登録するとcrypt()によりhtpasswdファイルにユーザー名とパス ワードを追加するプログラムまでは簡単にできました。 次にログインするときに、htaccess制限されたディレクトリの中に、 パスワードダイアログではなくて、フォームにユーザー名とパスワ ードを入力させてログインさせることってできますか?? デザイナーの方、お願いします。
なぜデザイナー?
721 :
Anonymous :2001/08/16(木) 20:02 ID:/svhuBqY
>>719 デザイナーの方はデザインにこだわるので、認証ダイアログのような無機質な
ものを嫌うと思ったからです。
どちらかといえばやっぱりログオン画面もきれいな方がいいですよね?
それと、会員の入会した週によって飛ぶページを変えたいのです。なので、ど
うしてもCGI処理する必要があり、上のような質問になりました。
もちろん、デザイナーの方でなくてもかまいません。
722 :
JAPU :2001/08/16(木) 22:36 ID:???
JAPU氏ね
725 :
名無しさん@お腹いっぱい。 :2001/08/17(金) 23:35 ID:8DRJj08E
本当にくだらない質問なのですが NULL文字のTEXTファイルをWin98のメモ帳で 表示させる方法って無いでしょうか? よろしくお願いします。
>>725 NULL文字のTEXTファイルとは何ですか
727 :
725 :2001/08/18(土) 00:41 ID:???
>>726 レス有難うございます。
Mac愛用者の知人からもらったファイル(NULL文字の)なのですが。。。
Winだと何も表示されないのです。
だーかーらー
>>727 >>ファイル(NULL文字の)
ってなんだ?
>>728 きっとファイル名から内容からNULL文字(\x00)で埋まってるファイルだ
おいらマカーだけど作れないことはない。
731 :
725 :2001/08/18(土) 13:33 ID:???
>>730 レス有難うございます。
Winだと無理ってことですね。
ラウンジのトリップスレから来た人と見た
どうせサイズ0のファイルとかだろ
734 :
名無しさん@お腹いっぱい。 :2001/08/20(月) 18:13 ID:iIodgiMg
ENVチェッカー作ってるんですけど、プロキシサーバー等の 反応時間(速さ)を知るためにはperlではどうしたら値を取得 できるでしょうか? 流れとして 時間の取得 ⇒ ENVチェック ⇒ 2回目の時間の取得 として 2回目の時間−1回目の時間の取得とすればOKと思って たんですがこれだとENVチェックにかかった時間しか取得できま せん。あたり前ですね。 くだらない質問ですがお願いします。
735 :
頼むよ :2001/08/21(火) 01:47 ID:KxW7lOz6
737 :
名無しさん@お腹いっぱい。 :2001/08/21(火) 02:32 ID:Tv58Rzyg
>>734 普通はPINGとかじゃないかな。
サーバー間の接続環境で変わるからあんまあてにならんけど。
使ったことないけどNet::Ping.pmあたりでできない?
738 :
頼むよ :2001/08/21(火) 13:49 ID:???
739 :
名無しさん@お腹いっぱい。 :2001/08/21(火) 19:31 ID:fmPYJ6Ig
フォームのテキストボックスのフォントを等幅フォントにしたい場合、 どの様にすればいいのでしょうか? がいしゅつ?
740 :
JAPU :2001/08/21(火) 19:38 ID:???
741 :
ANT :2001/08/22(水) 23:03 ID:???
質問です、よろしくお願いします。 環境は、RedHat+Apache+PHP+Postgresです。 フォームよりasf形式の動画をアップするようにしているのですが、 この時にビットレートを下げるといったような事ってできないものでしょうか? 再圧縮といったイメージです。(表現間違ってるかも) 要は、ファイルサイズを自動で小さくしたいのです。 UP時でもUP後でもかまいません。 2日ぐらい検索しまくってるんですが、ヒントらしきものも見つかりません。 asf->asfって不可能なのでしょうか? インターネットビューカムで撮影→PCに取り込む→アップロードという流れです。 もし、PHPと関係なかったらスミマセン・・・。
少なくとも普通に考えたらPHPだけでビットレートを変更するのは無理だと思う。 現実的なのはアップロードする前にクライアント側で編集調整するしかない。
743 :
ANT :2001/08/23(木) 04:11 ID:???
>>742 そうですよねー。
ただクライアント側で編集調整するとしても、
バッチとかで一括処理できる環境にしてあげないといけないのです。
そっちも当たってみてるんですが、いい方法うかばなくて。。。
>>741 訂正:RedHatは開発機でした。本チャン機はSolaris予定です。
納期が迫ってきていて困ってます、情報お願いします!
(動画配信とかの勉強したほうがいいのかなぁ?)
744 :
名無しさん@お腹いっぱい。 :2001/08/23(木) 04:47 ID:OoZCUsLI
WebProg板は(ほかでもだけど)仕事が絡んだ話だとほとんどレス付かないよ。 納期が云々言い出したらなおさらだよ。 ガンバレ。
747 :
1 :2001/08/23(木) 11:37 ID:hVRNcAwI
748 :
ANT :2001/08/23(木) 12:27 ID:???
>>746 助言ありがとうございます。
仕事が絡むとダメなんですね、勉強になりました。
救いがたい馬鹿だ…。
>>748 いやさ、他人をタダで自分の仕事を手伝わせることについて何も思わないの?
仕事で金をもらっているならまがいなりにもプロだろ。
後一歩力及ばす同業の知恵を拝借ってなら分かるが、
右も左も分からないので教えてくれという態度では、資質を疑う。
個人請負だとしたら営業で損してるだろうから、
もっとはったりが利くようにした方がいいよ。余計なお世話だが。
いちおう突っ込んどくか・・ まがいなり -> まがりなり だよ。
752 :
名無しさん@お腹いっぱい。 :2001/08/25(土) 15:46 ID:1elSeqPg
NICOLEさんという方のHPで配付していたwwwforumというCGI 現在バグで配付を中止しているみたいなのですが どういうバグか知っている方いませんでしょうか? あと再配布してるとこってないでしょうか?
753 :
名無しさん@お腹いっぱい。 :2001/08/26(日) 03:26 ID:WUIH93bE
こんばんは。 PerlでCGIに挑戦しています。 1 print "Location:./index.html\n\n"; と 2 <META HTTP-EQUIV="refresh" CONTENT="0;URL=./index.html"> で、ページに移動する時間が違います。 1のほうは、ちょっと時間がかかるようですが、 理由を知っていましたら教えてください。 2だとダミーページ(空白)を出したりしないといけないので、 できればきれいに1のやり方がいいのですが・・・ よろしくお願いします。
>>754 RFCによればその通りだけど
CGIの仕様的には書いてもいい事になってる。
つまり絶対パスに置換する責任はWebサーバにあるのでは?
756 :
755 :01/08/26 16:48 ID:???
絶対パスじゃなくて絶対URL
757 :
名無しさん@お腹いっぱい。 :01/08/26 18:49 ID:CSxgtJiA
絶対URLに変えてもやはりLocationのほうは、ワンクッションあります。 テストは同じスクリプトで、1と2を書き換えて試しています。 うーん・・・・
何で? .cgiに飛ばしてんじゃ無いの Locationで詰まるhttpdなんて聞いた事無いぞ
はう httpd=>ブラウザ
>>753 CGIとHTMLを両方読み込まなきゃいけないからじゃないの?
仕組み的に一度CGIを読み込んでからHTMLに飛ばされるわけでしょ?
だとしたらまっすぐHTMLを表示するよりは遅くなると思うけど。
ワンクッションってそういう意味じゃなくて?
Rewrite使うというのはどうか。
>>761 CGIで何も処理しないで飛ばすならいいけど、
CGIで何らかの処理が必要ならrewriteで飛ばされてからじゃ遅すぎないか?
2 <META HTTP-EQUIV="refresh" CONTENT="0;URL=./index.html"> ってのがあったから、単に飛ばすだけなのかな、と。
764 :
753 :01/08/27 00:10 ID:8DJc9D8s
CGIで処理して、次のページに飛ばそうとしています。 次のページに飛ばすのに、 1のようにLocationで飛ばすか、2のようにHTMLを吐き出して refreshで飛ばすかという状況です。 760さんの指摘されるCGIを読み込むから遅いということはないです。
ちなみに自宅と外のサーバー4箇所に置いて見たよ 構造的にLocationの前に律速工程が有るんじゃないの?
767 :
名無しさん@お腹いっぱい。 :01/08/27 01:13 ID:EqCmVUMM
Perlで、flockを正しくかけていても、ログが飛ぶことはありますか? あるのなら、それはどのような時なのでしょうか?
ファイルシステムがNFSの場合はそもそもflockの完全性は保証されてないよ。 あと、ディスクフルのときに書き込もうとするとファイルが壊れることはある。 ありがちなのが、ログの内容をメモリに格納して、ファイルを消去した上で全部書き直すとかね。 ファイルはロックされててもメモリの内容が破壊される事はまれにある。 あと、OSのバグとかね。 こういうところは考えに入れないけど。
769 :
名無しさん@お腹いっぱい。 :01/08/27 01:49 ID:sFfEStcw
>>768 なるほど・・・ 勉強になりました。ありがとうございました。
770 :
名無しさん@お腹いっぱい。 :01/08/27 16:42 ID:T34udJH2
アクセス解析のefstatを設置しようと思っているのですが fcount.cgiをウェブ上から呼び出すと文字化けしてしまい、 カウンタ画像も壊れてしまいます。 fstatは正常に呼び出せるのですが、何がいけないのかわかる方はいますか? パーミッションは全てチェックしました。
配布元のURLくらい書けや 文字化けは使ってるUAとどんな文字化けかくらい書け。
772 :
名無しさん@お腹いっぱい。 :01/08/28 02:30 ID:scViMzR.
すんません。 サーバーにかかってる負荷を調べるにはどうしたらいいのでしょうか。
>>772 いちユーザーがサーバ負荷を調べるのは無理。
Telnetでtopとかは?
775 :
名無しさん@お腹いっぱい。 :01/08/28 10:51 ID:1jJCAs5c
>>753 # Location と refresh : refresh の方が速い?
refresh の方は Cache にあるページが表示されるんでない?
Location の場合、ブラウザが Cache を見ずに必ずページをリクエストするとか。
ブラウザによると思うけど。
776 :
名無しさん@お腹いっぱい。 :01/08/30 08:44 ID:Lg0QXk2Y
CGIの勉強ってどんな風にするんですか?
777 :
七死出号 :01/08/30 09:25 ID:cQfl7/iM
小規模ながらフロート板を作ろうとしている者です。 たいへん厨房な質問でスマソが、 2chは真珠製ですか?
read.cgi は C 他は perl
779 :
七死出号 :01/08/30 09:56 ID:f46sfrU6
780 :
七死出号 :01/08/30 09:59 ID:fo48bRRA
あらら、Cもあったんですね・・・・・多謝。
781 :
名無しさん@お腹いっぱい。 :01/08/30 20:05 ID:9ruRdkxM
今度サイトを作るにあたって、フリーの CGI 掲示板と日記 ( 配布元は別 )を アップロードしてみたのですが、 jcode.pl のパーミッションが異なるのです。 掲示板が 705 , 日記が 644 どのようにアップロードしたら良いのでしょうか? 因みにサイトは isweb で作っています。 cgi-bin ディレクトリの中に入れてあります。よろしくお願いします。
782 :
名無しさん@お腹いっぱい。 :01/08/31 00:33 ID:vqahwX9o
783 :
781 :01/08/31 01:47 ID:CNUi.0Z.
>>782 そうです。解説を読んでみると、両者のパーミッションの値が違っています。
掲示板は apeboard+ , 日記が a-nikki のものです。
で、あれからやってみた事は
1: 最新の jcode.pl をアップ。
2: パーミッションは 705 に設定。(理由は。。実は無くて。。)
cgi-bin フォルダの中に jcode.pl , BBS フォルダ , Diary フォルダ と分けて入れてみました。
すると 掲示板は正常に機能しています(多分
日記は。。。多分他の設定だと思うのですが。。。書き込みが出来ません。
結局 jcode.pl のパーミッションってどっちでも良いとかでしょうか。。
784 :
782 :01/08/31 02:14 ID:15D5/wj6
>>783 というか、CGI自体動いてるならrequireできてるんじゃないの?
読み込み権限さえあれば大丈夫な気が・・・<jcode.pl
日記ログファイルの書き込み権限の問題だと思ふ。
785 :
781 :01/08/31 03:04 ID:CNUi.0Z.
>>782 レスありがとうございます。
ホント初心者で。。満足なレスも返せないです(´д`;)
>ログファイルの書き込み権限の問題
頑張ってみます
でも。。今日はおやすみなさい。。。
僕も便乗です、たまにjcodeに実行権限要求する配布スクリプトが 有りますけど(755と言う感じで、、)あれは 作者さんは何を意図してるんでしょう コード見てもconvert(*〜,'sjis')とかしてるくらいで。。。 なじょ、、、
$B$3$&1>$&$N$rKI;_$7$F$$$k!)(B
jcode.plに実行権限は不用。 ま、作者の程度を知る物差しだと思っておけば良し(藁
ありがとう、
>>788 そうですよねぇ、、まだ書き込みなら解るんですが昔のバージョンで
そう言うモードが有って、その後方互換性の為なんかなとか勝手に思ってました
って事は上で言ってる掲示板って。。 ^^;;
人に渡す時は、全部まとめて「*.plと*.cgiは705」って指示しちゃう時あるなー。 あんまり細かく厳格にしとくと、設置時の設定ミスを誘うから。 パーミッションの設定ミスで「動かない、何とかしてくれ」みたいなこと少なからずあるし(w 簡単設置を謳ってるようなスクリプトなら、 そーゆー意図がある場合もあるかも? <jcode.plの実行権限要求
791 :
名無しさん@お腹いっぱい。 :01/09/06 13:13 ID:vG7O1gaY
ここで聞いても良いのかな・・ えっと、perlスクリプトの出力をHTMLのテキストエリアに吐き出しています。 print "<textarea rows=300 cols=90>"; foreach (@_){ print; } print "</textarea>\n"; @_にはリモートからの入力、ローカルファイルの内容などが入るんですが 内容に "</textarea>" と言う文字列が有ると そこでタグが閉じてしまいます(当たり前ですが・・) テキストエリアで出力すると、とても読みやすいのでこの方法が 気に入っています。 何とかこのままで上手くやる方法は無いでしょうか
foreach my $hoge (@_){ $hoge =~ s/</>/g; $hoge =~ s/>/</g; print $hoge; } これで 宜しいかと思われます
793 :
名無しさん@お腹いっぱい。 :01/09/06 13:23 ID:cGMUUJcs
こういうこと? foreach (@_){ s/</</; s/>/>/; print; } 野暮なこと言うようですが、読みやすいからって<textarea>で 出すのは間違ってるよ。スタイルシートとか使えばいいじゃん。
794 :
792 :01/09/06 13:25 ID:gk4jmuDQ
ガ━━(゚Д゚;)━━ン! 失敗した foreach my $hoge (@_){ $hoge =~ s/</</g; $hoge =~ s/>/>/g; print $hoge; } これで 宜しいかと思われます・・・。
795 :
792 :01/09/06 13:28 ID:gk4jmuDQ
鬱だ・・・逝って参ります。
796 :
ななし :01/09/06 21:43 ID:8sM1gM9g
スマソですが、cgi-binに直接アクセスされたときに中身が見えない ようにしたいんですがパーミッションをどのようにすれば? 見えないように自分で変更したらCGIが実行出来ませんでした。 ド素人です。
798 :
ななし :01/09/06 22:12 ID:8sM1gM9g
www.*****.comはルートフォルダーにindex.htmlおいてるので内部はみえません。 ただ、www.****.com/cgi-bin/ でどのようなcgiを使ってるかが見えちゃうん です。
>>798 www.****.com/cgi-bin/index.htmlを置いたら?
800 :
ななし :01/09/06 22:15 ID:8sM1gM9g
あ、なるほど。 パーミッションいじることも無いんですね やってみますー ドモ
801 :
ななし :01/09/06 22:22 ID:8sM1gM9g
出来ましたです。ありがとうございました
802 :
名無しさん@お腹いっぱい。 :01/09/06 22:29 ID:UxjwYaQ6
803 :
800 :01/09/07 03:04 ID:VqivuQXM
パーミッションを711にしたら動いたんですが これでもいいんですかね? 711でCGIの動には問題ないですか?
>>803 ,800,796
cgi-binの中にファイルを作ったりするCGIでなければ問題ないはず。
あと711で動くなら、701でもいけると思う。
7とか1とかの数字の意味がわかんなくて、それを知りたいつーなら、
そういってくれれば説明するよ。たぶん。。誰かが。。。
805 :
初心者です。 :01/09/07 11:15 ID:sphN5BlA
すみません。。わからないことが一つありまして・・・ 「挿入」「変更」「削除」と言うボタンを1つのCGIの中に入れたとき <input type="submit" value="">ってのが3つできますよね? その時に<form action="hoge.cgi" method=post>って1つしかないじゃないですか? この場合それぞれ違う処理をするようにするにはどのようにしたらいいのか教えてください。 お願いします。
>>805 <input type=submit value=挿入 name=submit>
if ($FORM{'submit'} eq '挿入') { ほげほげ }
で出来ると思います・・・。
でも これだとボタンを押さないと「挿入」が送信されないかもしれないです・・・。
807 :
名無しさん@お腹いっぱい。 :01/09/07 12:50 ID:klnUBO0U
CGIにIMGタグって挿入できますか? 掲示板にアクセス解析つけたいんですが、どうすればよいのか わからないのです。
>807 1:print "<IMG SRC=./count.cgi>"; 2:print "<IMG SRC=\"./count.cgi\">"; 3:print qq(<IMG SRC="./count.cgi">); 4:print '<IMG SRC="./count.cgi">'; オーディエンスをお願いします。(ぉぃ
809 :
807 :01/09/07 15:51 ID:???
50/50も使ってイイですか?
810 :
名無しさん@お腹いっぱい。 :01/09/07 21:12 ID:fuzJw3YM
とても初歩的な事ですが、カール板のひみこーどにノイズを加えたり数字を回転させたり するにはどこをどうすればいいのでしょうか。 マジレスでお願いします。
カール板って何? はやってるんの そーなの おぢさんチョーわかんない
812 :
791 :01/09/07 21:33 ID:???
>>792 >>793 >> さんありがと御座います。
んー、やっぱり邪道ですか (^^;
取り合えず</textarea>が有ったら変換して、表示する様にしました
理由は、前述の通りTAGとかインデントをそのまま表示したいからなのですが
CSSを使えば同様の事が出来るんですね、勉強不足です。。。
ちまたのソース貼り付けBBSを見て勉強しようと思います。
phpのソース表示とか綺麗なんだよなー、、、
ありがとう御座いました。
813 :
にゃん :01/09/07 22:51 ID:???
変な事書くとCGIだとInternal〜〜ゴルァって怒られるです。 シェルだとaborted due to compilation errors. とか言ってくれるんですがその時STDERRを補足して、 HTTP側にリダイレクトしてから死ぬ方法は無いでしょか Kcatchとか使わないとダメ? つーかソース嫁ってかんじでしょか? 逝って来ます ・・・・・・・寂しげせなか
814 :
にゃん :01/09/07 23:05 ID:???
ああっ! 今CGI-ML見たら同じ様なPOSTがあるにゃ (笑 dieイベント用のハンドラを自前で用意すればいいのか・・ やっぱりソース見ろって言われてる・・(滅
815 :
質問! :01/09/07 23:46 ID:vh.4S7K2
CGIさんに聞きたいのですが、 外部ファイルを読み込むのと、ファイルの中に書いておくのでは どちらが疲れないですか? javascriptもつかいたいので、記述部分が結構大きくなります。 CGIさんが疲れない方にしたいのですが?
>>815 なんとなくファイルの中に書いたほうがいい気もするが。
外部ファイルのサイズや使い方によるんでない?
もすこし具体的な例を出してもらわんと。
817 :
815 :01/09/08 00:49 ID:EuGVOIsk
掲示板のスクリプトなんですが、 javascriptが5.74kb CSSファイルが455b 入力フォームのHTMLが2.34kbです。 入力フォームのHTMLでjavascriptとCSSのファイルを読み込むように してあります。 CGIファイルのベースにしたのはとほほ氏のwwwboardです。 どうでしょうか?
かわいい (^^ 全然OKだと感じます。
819 :
815 :01/09/08 01:02 ID:EuGVOIsk
>818 しかし、午前三時頃や午後あたりは書き込めないようです。 サーバーはFREEWEB(infoseek)です。 多分、今夜もあと二時間後はCGIさんが僕のスクリプトのめんどうを みてくれなくなると思います。 どうでしょうか? 何かお気づきの点はございませんでしょうか?
それopen失敗してるんじゃ無いの? 良く解らんけど、あのサーバー、ファイル壊れるし 制限キツイし、その割にセキュアじゃないしで大嫌いです。 僕の配布してるBBS(シンプルな一行レス板) でもiswebで調子悪いと良く言われます。 C-Boardとかのファイル開けまくり系も調子悪いらしいです。 f2sとisはやめてほしい。。 (-。- 3時って言うのはおかしいですね、その時間にAbuseしてる人が 居るのかもしれないですね。
821 :
名無しさん@お腹いっぱい。 :01/09/08 01:16 ID:EuGVOIsk
>820 他のサーバーにしたほうがいいですか? トクトクも考えています。
822 :
名無しさん@お腹いっぱい。 :01/09/08 01:24 ID:EuGVOIsk
あ、今、CGIに見放された。403になりました。 ロックファイルは残っていません。 なぜか直接URLコピペするとちゃんと動作しています。書き込みも できる。 もちろん、つながらなくなったリンクはisWebの自分の容量内でのリンクです。
トクトクも勧められないが、今見てみたら大体3〜4000人位 詰め込んでるみたいだね>isweb、むしろこれでCGI動いてる事 事態が凄いんじゃないだろうか。 CPU USAGEとか凄い事になってると思うよ。 今にして思えば、Virtualave,Hypermartの両サーバーは偉大だったねえ よっぽど極端なループとかしてない限りサーバーの性にして良いと 思うが。
824 :
823 :01/09/08 01:31 ID:???
ちょっと実験したぞ、34番サーバー ちゃっと置いて適当に書き込んだらやっぱりログdだ p かわいそうなサーバーさん、、、
825 :
名無しさん@お腹いっぱい。 :01/09/08 01:33 ID:EuGVOIsk
>>824 僕も34番です。34番がとりわけぼろいんでしょうか。
13番の友達のところではこういうことはありません。
826 :
815 :01/09/08 01:37 ID:EuGVOIsk
あー、コピペでも403だー。 結構javascriptをつくるの苦労したので、配布したいんだけど、 こんなんじゃ信用性が疑われるよ。
827 :
823 :01/09/08 01:38 ID:???
何かチャット状態だね p 漏れもちょっと前に、とあるスクリプトの改造版配ってたんだが その時から(freeweb時代)やたらファイルが壊れたなぁ。 多分DISK IOが大変な事になってるんだろうと思ったけど。。 ちなみにチャットは置いちゃダメだよ、ちょっと調べただけです。
828 :
815 :01/09/08 01:42 ID:EuGVOIsk
>827 はい。書いてありましたので、大丈夫ですよ。 チャットとゲームはダメなんですよね。 ということは、より負担の少ないCGIを書いてもムダってことでしょうか。 一応Perl質問スレ1-6をダウンロードして読んでるところなんですが。
829 :
823 :01/09/08 01:49 ID:???
ソース見てないから何とも言えないけど、貴方がコストを意識して コーディングしたんなら、やっぱり(と言うか絶対)サーバーの問題 じゃないだろうか? KENTの配列一気読みコーディングなんかが意外といいのかも w 解ってると思うけど、JAVASCRIPT処理するのはクライアントだよ、一応。 ここの2ch型掲示板ってスレ読んでみ。 サーバーの苦情らしき書き込みが沢山あるよ それと自前のファイルロックとか使ってたら、意外とそれが癌だったり するから、その辺は要チェックかな。恥かかないためにもね じゃ、寝ます
830 :
815 :01/09/08 01:59 ID:EuGVOIsk
どうもありがとうございました。 javascriptがクライアントってのは解かります。 本当にありがとうね!!
831 :
初心にかえって物 :01/09/10 11:00 ID:5B9RTOLE
掲示板みたいなのを作ってるんですが、フォームから'GET'または'POST'でデータを 送ってCGIの方でデータを保存して出力はできるんですが、この状態でブラウザの 「更新」ボタンを押すと同じデータが送られてしまって、同一データができてしまいます。 この場合ってクエリ文字をキャンセルする方法ってあるんでしょうか?教えてください。
データ保存するCGIからLocationとかでリダイレクトさせる。
833 :
名無しさん@お腹いっぱい。 :01/09/10 14:34 ID:/XtzFYCg
web上のhtmlファイルを取り込むにはどうすればいいのでしょうか?
opendir(DIR,"
http://www.hoge.com/ ") or die "opendir miss";
@htmlfile = sort grep {/.html/} readdir(DIR);
closedir(DIR);
じゃできないですよね?
出来るわけがありません。
>833
>>2 のリンク集の先を「LWP」「socket」で調べてみることをお勧めします。
836 :
名無しさん@お腹いっぱい。 :01/09/10 15:49 ID:.RrxrENY
1〜5を選択する項目を10個くらいと コメントを記入する項目が3個くらい のフォームを作って 1,5,3,2,4,5,3,4,5,4,回答者1のコメント,だめっぽい,またあした 3,5,3,2,4,5,3,4,2,4,僕は回答者2です,いいかんじ,御願いします という感じでcsvファイルを作るcgiスクリプトを 作りたいのですが、 formからデータを受け取る>ファイルにcgiが書き込む という流れを思いつくだけで 具体的にどうしたらいいのやらさっぱりです、、 こんな私にどなたか少しでいいのでアドバイスを御願いします、、 自分でもいろんなページみてはいるのですが、、 あと、cgiで中国語や韓国語ってどうやって使うんでしょうか? jcode.pみたいなのが必要ですか?
837 :
835 :01/09/10 16:23 ID:???
838 :
名無しさん@お腹いっぱい。 :01/09/10 18:39 ID:bP2SIPQQ
えっと、cgiでフォームメール使うのってありますよね? WWWサーバとは別のサーバにMTA立ってて、それを使って送信って出来ます? 本を読んでみても良く分からないんで、教えて下さい。 WWWサーバは、アパッチで、OSはSolaris7です。
>>836 :HTML表示
:ブラウザから送信されたデータをURIアンエスケープ**
:適当に整える
:ファイル開く、書き込む、閉じる。
**はcgi-lib.plとか使えば簡単、どっかから持ってきてもいい
下は分からない、難しそうだね。そもそもGBとHZとBIG5って変換出来るん
だろうか。前にGBの掲示板見た時はそれらしきものはインクルード
されてなかったな 多分環境依存とかあるんだろうね
840 :
あああああああ :01/09/10 18:47 ID:IA/gamiU
841 :
むぎ茶 :01/09/10 18:54 ID:???
あなたニホンゴハナセマスカ
┐(´ー`)┌
┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶 ┃
┃
[email protected] ┃
┗━━━━━━━━━┛
おお
844 :
名無しさん@お腹いっぱい。 :01/09/11 09:19 ID:OqJ.Pmkc
>>839 感謝です!ありがたや、、
最初のHTML表示という項目は
cgiから吐き出す必要ないですよね?
韓国語、中国(カンタイ、ハンタイ)は
csvに保存するだけなら英語版(?)のcgi通すだけで
問題ない「かも」しれないっていわれました。
不安です、、
どなたか詳しい方いらっしゃいませんでしょうか!?>中、韓
>>842 頑張って理解してみます!
(こんなレベルでcgi組もうっていうのも我ながら、、
中国語・韓国語使えるようにしたいって事は、 中国語や韓国語読める&書けるんだろ? なら中国や韓国のホームページor掲示板で聞 いた方が確実且つ早いと思うが。
846 :
名無しさん@お腹いっぱい。 :01/09/11 09:24 ID:OqJ.Pmkc
>>845 まったくわかりません。テヘ
ついでに言うなら英語もサッパリです。鬱、、
cgiからHTML吐き出さないし
CSVファイル作るだけなんで
案外簡単に出来たりしないかなと
考えてるんですが、、無理かな、、
最近のブラウザは表示されたHTMLと同じ文字コードで フォームのデータ送ってくるから、文字コードの変換 なんか気にせんで良い。 たまに文字化けデータが出る可能性があるけど無視しとけ。 てゆーか、中国語・韓国語分かりもせんのになんでんなもん が必要なんだよ。
>>848 お客さんの依頼なんです、、鬱、、
という事は北京語ならBig5と決め打ちで平気ってことですよね?
んーむ、、
850 :
名無しさん@お腹いっぱい。 :01/09/11 11:07 ID:OqJ.Pmkc
送られてきたデータをcsvで保存するだけなんだから 問題ないっていわれたんですけど? 本とかな、、?
文字コードGB2312から送信>CGIがCSVに保存で 問題ないみたいっす。やってみたら普通にできました。 他のでもこうであることをいのりつつ、、
ああ、そう言う意味か。文字コードが同じなら(常にBGで送信されると保障されるなら) 何も心配ないよ URLデコード<=>URLエンコード を繰り返してるだけ なんだから。 問題はGBを想定した環境にHZで書き込まれた時なわけ。 この辺は良く解らんけど、例えば日本語だとFROMの表示をSJISにしても 送信時にはEUCで送信してしまうようなケースが良く有った。 そうなると同じファイル内に2種類の文字コードが混在する事になっちゃうわけ これも推測だけど、GBだけに含まれる文字コードの範囲が分かれば 書き込み前に、チェックしてGBに有り得なさそうなコードを含んでいたら (゚Д゚)マズー 位は出来るんじゃないかな
日本語変だけど 適当に解釈してね
854 :
名無しさん@お腹いっぱい。 :01/09/11 12:58 ID:OqJ.Pmkc
>>852 ありがとうございます!
日本語変だなんてとんでもないです!ばっちりです!
>例えば日本語だとFROMの表示をSJISにしても
FROM?FORMのうちまちがい、、?
コードチェック、、うむむ、俺には無理だ、、鬱。
>>852 IEだと
エンコードをHZにしておけばHZもGBも両方表示できてました。
そういうものなのか、偶然なのか、、
856 :
852 :01/09/11 14:09 ID:???
>FROM?FORMのうちまちがい、、? すんまそん 漏れも肝心の文字コードがどうなってるのかが分からないからこれ以上 力になれそうにないな、 GBをシフトしたものがHZなのか、それとも拡大した ものなのか、それともその逆なのか、この辺をしらべてみれば答えは 出るんじゃないかな、そんな単純でもなさそうだけど w 多分 ”我 ”とか ”イ尓 ”位はどの文字コードでも同じはず 確実に言えるのは BIG5 に GB や HZ で書き込むとダメって事くらい
858 :
名無しさん@お腹いっぱい。 :01/09/11 14:56 ID:mAmWB4Ko
>文字コード
FORMで accept-charset="Shift_JIS, EUC-JP" とかやれば
受け付け文字コードを制限できたような気がする。
>>858 最近よく見るけど,投稿日まちまちだよね。
手作業?
BBSの一つ一つの「記事」のことは英語では何と書くのがスマートでしょうか。 微妙にスレ違いな気もしますが、教えてください。
articleかな。 あとはsubjectとかheadlineとか 英語わからんのでうろ覚え
863 :
名無しさん@お腹いっぱい。 :01/09/12 00:50 ID:LH.sd166
perlの質問です! confファイル(set.conf)で宣言した変数を パッケージ(conf.pm)の先頭でrequireして そのパッケージを他のcgiファイルでオブジェクトとして読みこんで confファイルで宣言した変数を使うことは可能でしょうか? 書き方が分からなくてテンパってます…教えて下さい!
s/テンパって/デムパって/
>>863 意図するところと違うかもしれませんが。
# set.conf
use strict;
our $hoge = 12345;
1;
# conf.pm
package conf;
use strict;
require 'set.conf';
1;
# main.cgi
use strict;
use conf;
print "Content-Type: text/plain\n\n";
print "$conf::hoge\n";
866 :
861 :01/09/12 17:45 ID:???
>>862 遅レス失礼。
ありがとうございます。
参考にします。
867 :
863 :01/09/12 21:37 ID:xoRCqYQQ
>>865 ありがとうございます!
「オブジェクト名::変数名」で参照するのですね。
その書き方が分からなかったので参考になります。
変数を宣言する時には「our」としなければいけないのでしょうか?
ourとするとエラーが出てしまいました(500エラー)。
あと普通にやっても値が取れませんでした…
当方携帯でCGIを動かしているのですが、それが問題ってわけではないでしょうか?
"オブジェクト名::変数名"じゃなくせめて"クラス名::変数名"と表現して欲しいな(w ourがダメなのはPerlのバージョンが低いせいだろう。 our $var; これを use vars qw($var); use vars qw($foo @bar %hoge); のように変更すれば使えるようになるはずだ。
869 :
865 :01/09/12 22:14 ID:???
>>867 それPerlのバージョンが古いっすね。ver5.6以前のPerlなら
# set.conf
use strict;
use vars qw($hoge);
$hoge = 12345;
1;
だったかな。"our"を取って、use varsの後ろに変数名をズラズラ並べる。
870 :
865 :01/09/12 22:15 ID:???
う。かぶりまくり。
>>868 クラス名でもアレかと。
純粋に名前空間として使用しているのであって、
クラスやらオブジェクトやらは関係がない。
「せめて」と書いてあるので、こんなことは承知で書いているだろうけど。
>>868 > "クラス名::変数名"と表現して欲しいな(w
それを言うなら"パッケージ名::変数名"でしょ
873 :
名無しさん@お腹いっぱい。 :01/09/13 00:08 ID:WAUiRtRA
CGIでzipファイルを出力したいのですが出来ません。 IEではこのファイルをダウンロード出来ませんと言われます Content-type を application/zip application/x-zip-compressed の2つで試してみたのですが駄目でした、htmlやtext/plain は 問題無く表示出来ています (あたりまえですが。。。。) 勿論普通にアクセスすると問題無くDL出来ます。
874 :
863&867 :01/09/13 00:31 ID:6uXsG4m.
レスありがとうございます! use vars qw($変数名,$...,$...); と言う感じで宣言すれば良いのですね。 あと上の方で「オブジェクト名::変数名」と書いたのですが 今、パッケージ(conf.pm)を各CGIファイルの中でnewして $confというオブジェクトを生成して、 そこからset.confで宣言した変数を参照したいのですが その場合「$conf::変数名」と言う形で参照できますか? この場合は「オブジェクト名::変数名」では無いのでしょうか・・? 分かりにくい質問ですみませんが教えて下さい!
>>873 ソース出してみて。
>>874 そんなことしたい意味がわかりませんし、出来ません。
どうしてオブジェクトにしたいの?
876 :
874 :01/09/13 00:59 ID:6uXsG4m.
>>875 パッケージ(conf.pm)の中にあるサブルーチンを
$conf->サブルーチン名(); と言う感じで呼んでいるので
変数も呼べるかなと思ったのですが、無理なんですね。
オブジェクトにしたいのは、オブジェクト思考を用いたプログラムを作ると言う課題なので…
パッケージconfや、そこでrequireしてる変数の設定ファイル(set.conf)の中身を参照したい場合
わざわざオブジェクトにする意味は無いのでしょうか?
CGI初心者で見よう見真似で作っているので何が何やら…
877 :
865 :01/09/13 01:20 ID:???
>>876 いや、perldoc perlobjにまっさきに書いてあるように
「オブジェクトとは要するにハッシュである」んだから
$conf->{'hoge'} = 12345;
とか
print "$conf->{'hoge'}\n";
みたいにオブジェクトの変数をアクセスすることはできますけどね。
set.confでその値を設定するというのが、
いまいちどういう意味だかわからん。。。
オブジェクトをnewするときの初期値ってこと?
878 :
865 :01/09/13 01:24 ID:???
う、いま見直したら 「オブジェクトとは要するにリファレンスである」 って書いてあったよ。。。<perlobj
879 :
876 :01/09/13 01:59 ID:6uXsG4m.
>>877 書き方わかりにくいですね。すみません・・。
set.conf では、共通で使われる変数(定数と言った方が良いかもしれません)を
宣言しています。例えばDB名や接続パス、トップのURLなどです。
880 :
865 :01/09/13 02:38 ID:???
定数設定をオブジェクトにしても意味ないよ オブジェクト指向の考え方から勉強しなおしたほうがいいかも
881 :
875 :01/09/13 02:41 ID:???
あ、騙っちまった。880は875。スマン
>>880 同意。「定数設定用のクラス」を設けるっていうアプローチが間違ってるわけね。
>>876 「実際のオブジェクトのクラス内で定数を定義する」ならいいと思う。
↓こういう感じ。見た目865と変わらないけど、ニュアンスの違いわかる?
# myclass.conf
use strict;
use constant constA => "AAAAA";
1;
# myclass.pm
package myclass;
use strict;
require 'myclass.conf';
sub new { bless {}; }
1;
# main.cgi
use strict;
use myclass;
my $obj = myclass->new;
print $obj->constA, "\n";
883 :
875 :01/09/13 04:09 ID:???
無理矢理オブジェクトだね(笑) 876よ、ただ一つ言えることはこういうオブジェクトの使い方して 課題で出しても撃沈すること間違い無し。
884 :
初心者 :01/09/13 07:15 ID:vi66x7.c
ちょっとひとつお聞きしたいんですが、 @test に 133 xx nacchi 322 yy gomaki 240 yy aibon 99 xx nonotan 0 xx ayaya ・ ・ これがまるごと全部入っていたとき、 2列目が"xx"の行だけを抽出して 133 xx nacchi 99 xx nonotan 0 xx ayaya ・ ・ と上から順に並べるにはどうすればいいのでしょうか。 誰かお願いいたします。
@after = map { $_->[0] } sort { $b->[1] <=> $a->[1] } grep { $_->[2] eq 'xx' } map { [$_,split(' ', $_)] } @test; でどう?
886 :
初心者 :01/09/13 07:58 ID:vi66x7.c
>>885 どうもありがとうございます。
mapとかgrepとか調べてみましたが全然意味がわかりません。
>>885 がどういう理屈なのか説明していただけませんでしょうか。
お手数ですがどうぞよろしくお願いいたします。
Schwartzian Transform で検索してみると吉かも。
>>882 クラス定数を使用する時は -> よりも :: を使ったほうが(状況によっては)コンパイル時にタイプミスを検出できる。
でも、クラス名が長くてタイプが面倒ならそれもアリか…。
889 :
名無しさん@お腹いっぱい。 :01/09/14 00:07 ID:IrljZnrQ
HTTPのLocationヘッダについて教えてください。
Locationヘッダに指定するURLは
http:// 〜で始まらなければならないと
聞きましたが、/dir/file.htmlのようにhttpから始まってないCGIをよく
見ます。
これはWebサーバあたりが補完してくれるのでしょうか。
それともブラウザが相対URLでも理解してくれるのでしょうか。
ソフトウェアによってちがうんでしょうかね。。。
890 :
876 :01/09/14 00:20 ID:L7eQmRgA
長々とすみません。 こんな感じに作っているのですが最後でどのようにして $hogeを参照していいのかわかりません… conf.pmの中のサブルーチンをいろいろなところで使いたいので 全てのCGIファイルの先頭でnewしてるのですが オブジェクトにする必要は無いのでしょうか? 今一度分からないので教えて下さい! # set.conf use strict; $hoge = 123; # conf.pm package conf; use strict; require 'set.conf'; sub new{ bless {}; } sub a{ 処理 } #ここで$hogeを使っています。 sub b{ 処理 } #ここで$hogeを使っています。 # main.cgi use strict; use conf; my $obj = conf->new; $obj->a(); $obj->b(); test(); sub test{ } # この中で$hogeを参照したいのです
>>889 CGIの規格より。
If the argument to this is a virtual path,
the server will retrieve the document specified as if
the client had requested that document originally.
とのことですから、クライアントには302ステータスは送られずに
元々そのドキュメントをリクエストしたかのように振舞います。
892 :
( `.∀´) :01/09/14 00:36 ID:bv.kGVZQ
893 :
891 :01/09/14 00:54 ID:???
>>892 CGI と HTTP の規格は違いますよ。
試しに、/cgi-bin/redirect.cgi で
print "Location: /test.html\n\n";
とやってみると、ブラウザでは見かけ
/cgi-bin/redirect.cgi として test.html の内容が送られます。
HTTPセッションは一回。
print "Location:
http://hoge.com/test.html\n\n ";
とすると、ブラウザに302が送られてブラウザは
http://hoge.com/test.htmlを要求します 。HTTPセッションは二回です。
このようにまったく振る舞いが違います。
おまけで、print "Location: ../test.html\n\n" とかやると、
ブラウザにそのまま Location: ./test.html と共に302が送られます。
これは規格違反ですが、一応IEでは test.html を読んでくれます。
補完してるのはブラウザですね。
あと、URIや仮想パスや絶対パスや相対パスの意味混乱してません?
>>889 も。
894 :
891 :01/09/14 01:07 ID:???
あ、めっちゃ嘘ついたかもしれません。ちょっと調べます。
895 :
891 :01/09/14 01:29 ID:???
やっぱあってるみたい。
Location: を http: 無しで出力した場合は内部でリダイレクトされる。
で、注意すべきなのは内部リダイレクトだと一緒にCookieとか出しても
ブラウザはそれを見られないので Redirect と同時にCookie渡したい
場合は、きちんと
http://付きURLを渡す必要があるね 。
そしたらきちんと302HTTPレスポンスが返るのでクッキー取得できる。
けど、302だとクッキー受け取らないUserAgentエージェントがあるって
どこかで聞いた気もする・・・
896 :
892 :01/09/14 01:52 ID:bv.kGVZQ
>>890 そもそもそれだと、set.confでコンパイルエラーになると思うけど?
まあ、set.conf で strict はずして、conf.pmでは
$conf::hogeで参照するなり、our や use vars 使うなりするとして・・・
main.cgi では $conf::hoge に直接アクセスするべきでは無いよ。
値を得たいなら conf.pm に sub gethoge { $hoge; } とかで
メソッドを作っておいて、$obj->gethoge() として値を得る。
あと、Perlモジュールのお約束(慣例)として、モジュール名は
Conf のように頭文字は大文字にします。
なおかつ既存のモジュールとかぶらないように、アプリ名::Conf と
したほうがいいよ。たとえばプロジェクト名が Mona だとしたら、
Mona::Conf とか。
898 :
あうー :01/09/14 14:53 ID:IHq9oP0c
URLからWebサーバの名前を特定できるスクリプト (たとえばwww.infoseek.co.jpだったらNetscape Enterprise)を どこかで見かけたのですが忘れてしまいました。 どなたかご存知ありませんか? 知っていたら教えてください。
www.netcraft.com
900 :
名無しさん@お腹いっぱい。 :01/09/14 15:04 ID:IHq9oP0c
>>899 さん、ありがとうございます。ずばりそれでした。
指名がはいったぞ!>912
903 :
889 :01/09/14 22:05 ID:???
>>891 ,892
レスありがとうございます。
CGIでの規格がHTTPとは別にあったんですね。なるほどです。
やはりHTTPではLocationヘッダには絶対URIを書くべきなんですね。
ちょっとHTTPでLocationを相対パスで書きたい理由があったので
調べていたのですが、やめることにします。
ちなみに試してみたかぎり、IE3,4,5やNetscape3,4,6では相対パスで
書いたLocationを補完してくれました。また、302でもクッキーを受け
取ってくれました。
904 :
名無しさん@お腹いっぱい。 :01/09/16 20:57 ID:gRdNqaZI
ttp://www.f2s.comのフリースペースに ttp://www4.tkcity.net/~elmo/accessory/wforum.htmlを設置しようと思い 、
「#!/usr/local/bin/perl」のパスを「#!/usr/bin/perl」に変更し
cgi-binとbbsディレクトリのパーミッションは755に変更。
後は以下のように変更しました。
wforum.cgi(755)
wforum.log(644)
wf_admin.cgi(755)
index.cgi(755)
1.html(644)
pastno.dat(644)
index.html(644)
title.gif(644)
jcode.pl(644)
fold.pl(644)
accesslog.log(644)
code.log(644)
ですが、どうしても「500 Internal Server Error」と出てしまい動きません。
たぶんパーミッションが間違ってるのかな?と思いますが
どう変えれば良いのかがわかりません。
誰か教えて下さい、お願いします。
ちなみにFTPソフトは「Fetch3.0.3J2」を使ってます。
905 :
名無しさん@お腹いっぱい。 :01/09/16 21:13 ID:C6oahyos
>>904 ぜんぶ777にして動けばパーミッション。
うまくいったら ちょっとずつきつくしておけ。
f2sだとディレクトリ777にしちゃイカンらしいが
908 :
906 :01/09/16 23:38 ID:???
>>907 あら,そうだったか。知らんかった。
とりあえずKCatchとかでエラー表示するようにしてみて。
Internal Server Errorは日本語(sjis)処理で、スクリプトが壊れているのでは? EUCに書き直すか、文字化け対策が必要かと・・・。
910 :
名無しさん@お腹いっぱい。 :01/09/17 11:09 ID:J4kttWM2
掲示板を作ってみたら、256バイト以上の書き込みだとコケてしまう。 それってどう回避すればいいでしょうか? サーバーはトクトクですが、トクトクの仕様ですか? 聞いたことありますか?
912 :
904 :01/09/18 00:46 ID:/T6g5o8U
みなさんのおかげでwf_admin.cgiとindex.cgiは動くようになったのですが 肝心のwforum.cgiのがどうしても動きません。 それで、KCatch.pmを使ってみたところ、 [wforum.cgi:859:die] Missing right bracket, at end of line syntax error at (eval 1) line 856, at EOF と出たのですが、さっぱり意味がわかりません。。。。 何をすれば直せるのでしょうか?
914 :
名無しさん@お腹いっぱい。 :01/09/18 02:09 ID:VD7kGZj.
>>912 どっかで}を書き忘れてるということです。
どこかまではわからないので自分で探すしかありません。
インデントを調整しておくと,後でソース見る時に便利です。
あと,
>>901 -902で「新スレ係」との指名が入っています。
915 :
にょ :01/09/18 02:21 ID:hHvLBZhU
916 :
910 :01/09/18 03:43 ID:NbgShBZI
>>911 いいえ、POSTです。
GETにしたほうがいいですか?
>>912 英語を日本語に訳す事くらいはしようね。
あと新スレよろしく。
>>916 256byteっていうからGETって予測されたと思われ。
POSTならば、作ったスクリプトに問題があるのでは?
とりあえずエラーチェックしてみるとか。
>>916 あんまり聞かないけど LimitRequestBody 掛かってんじゃない?
スクリプト側で制限していないのなら可能性あるね。
エラーログは見た?
919 :
910 :01/09/18 06:20 ID:NbgShBZI
数字でためしたら、余裕でかけました。(256byte以上でも) 日本語だとダメだったんですが…。 エラーは、時間がかかるうえに「サーバーがみつかりません」が 出ます。そしてロックファイルが残っています。 ローカルのhttpdで試したら、 「(略)我々が今日やるべきことはマックにいって新しい ハンバー << HERE ガーをほおばることです。 (略)」 になりました。 << HEREが勝手に追加されてる部分で、よく数えたら 266byte目でした。(でもそのうち半角が10byte分) iswebでも試したけど同じでした。
920 :
名無しさん@お腹いっぱい。 :01/09/18 07:41 ID:LPKH4NdA
921 :
910 :01/09/18 09:48 ID:dx7/rVjI
チェックしました。 open(IN, "wwwboard.tmp"); $locka = 0; while (<IN>) { if ($_ =~ /^$FORM{'MESSAGE'}/) { $locka = 1; } } close(IN); ここがよくないらしい。 二重投稿を防ぐためのものです。 変数lockaが1だったら、tmpに追加するルーチンを飛ばします。 俺自身、もう一度、とほほのPerl入門を読み直すけど、アドバイス あったらお願いしたいです。
バイト数とか関係ないでしょう。 /^\Q$FORM{'MESSAGE'}\E/ これで試してみれ。 単に、$FORM{'MESSAGE'} がJSISで'ー'の2バイト目が '[' なので 正規表現がエラーになってるという、ありがちなバグ。 あと $locka = 1; のあとに last; でループ抜けたほうがいいよ。
923 :
912 :01/09/18 18:22 ID:plR9HC2E
924 :
名無しさん@お腹いっぱい。 :01/09/19 02:26 ID:1PCMynM2
925 :
924 :01/09/19 03:01 ID:???
失礼 xBitHackのグループビットが立ってました。
926 :
名無しさん@お腹いっぱい。 :01/09/20 10:50 ID:MTc8pgUs
簡単な掲示板を作ったのですが構成はbbs.cgiで処理をして、 書き込み等をbbs.htmlで処理しています。 bbs.cgiを単独で実行すると書き込んだログが表示されるようになってます。 それぞれ単独で実行させると表示されるのですが下記のように一画面に書き込みと ログを表示させようとするとうまく表示されません。 単独で実行するとうまく機能するのでそれぞれのスクリプトには問題ないと思う のでもしかしたらHTMLに原因があるのではないかと思い書き込みさせていただきました。 <FRAMESET ROWS=40%,60%> <FRAME SRC="bbs.html"> <FRAME SRC="bbs.cgi"> </FRAMESET> もしよければお知恵をお借りできればと思います。
927 :
名無しさん@お腹いっぱい。 :01/09/20 11:15 ID:zlFlBPrI
>>926 NAME属性が無い以外は問題無いと思うが・・・?
929 :
アナログから光までオッケー :01/09/20 22:07 ID:wUD8Nx2s
みなさんのインターネットのスピードは
早いですか? それとも遅いですか?
このサイトはみなさんのインターネット環境の
スピードを計ってくれます。また、遅いと思う
人は設定を少し変えることによって無料で
スピードを早くすることができます。
お金を出す前に一度試してみては
いかがでしょうか。
http://cym10262.omosiro.com/
931 :
名無しさん@お腹いっぱい。 :01/11/30 15:53 ID:Np7FhVDC
質問です。 cryptのことですが、Cryptされたものを逆にcryptされる前のものにもどすことは 可能でしょうか。できるならば、そのやり方が知りたいです。 それはWINDOWS上でもできますか??すみません。。変な質問で。。
潜んだ。
見つけた。
"一つ"の板の太陽の陰に隠れてみる。
それは多くの人に仕えているけど、多くの人にとっては遠い存在。 多すぎたものの反省から生まれて、多くの子孫をもっている。
937 :
名無しさん@お腹いっぱい。 :02/01/17 09:05 ID:ouB3hVAd
CGI(perl)で他サーバにあるファイルの最終更新日を調べる為には どう書けば良いのでしょうか? LWPを使えば他サーバのファイルを拾えると言う所までは 過去ログで何とか解ったのですが 更新情報の拾い方が今一解りません、おしえてください。
939 :
938 :02/01/17 09:32 ID:???
と思ったら消えてるやん。なんで?
>>937 Headerの Last-Modified 見れ。
と思ったら更に新しいスレあるのか。
941 :
名無しさん@お腹いっぱい。 :02/01/24 22:01 ID:D0zJH+Ea
CGIをローカルテストするのに「Webserver(vector.co.jp/soft/win95/net/se184736.html)」っていうソフトを いれてみたんだけど、403エラーしか出てけえへん;; どうしたらいいんでしょ? PC=Win95 鯖ソフト=Webserver ユーザー設定はしたけど、ログインするところがない・・ような
942 :
941 :02/01/24 22:18 ID:???
このスレ終わってるんじゃん・・鬱だ。 別スレに持っていきます。
ひたすらsageておいたほうがよさそうじゃのぅ。
まもなくここは 乂1000取り合戦場乂 となります。 \∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,, /三√ ゚Д゚) / \____________ ,,、,、,,, /三/| ゚U゚|\ ,,、,、,,, ,,、,、,,, ,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/ //三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ∪ ∪ ( ) ( ) ( ) ) ,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ,,、,、,,, ( ) ( ) ( ) ( )
945 :
nobodyさん :02/03/28 22:48 ID:G5TiSZPv
apacheにiofficeいれて動かそうとしてるのだけど、動きません エラーが出ます。 /usr/libexec/ld-elf.so.1: Shared object "libg++.so.4" not found って どうしたらいいんでしょうか?
946 :
nobodyさん :02/03/28 22:50 ID:G5TiSZPv
apacheにiofficeいれて動かそうとしてるのだけど、動きません エラーが出ます。 /usr/libexec/ld-elf.so.1: Shared object "libg++.so.4" not found って どうしたらいいんでしょうか?
947 :
nobodyさん :02/05/05 08:32 ID:UV8B0Y8+
THE ROOMさんのアイコンチャットを使っておるのです。
このチャットURLをオートリンクをしてくれるのはいいのですが、フレーム内に取り込んでしまいます。
なんとかtarget=_blank属性をつけたいのですが、無知なりにいろいろ試してみても直らず。
情けない話ですがソースのどの部分を提示してよいやらわかりませんので、
とりあえず配布ページを晒します。
http://dream.lib.net/room/cgi/e_ichat.html 配布元で質問しようにもこれは改造の話になるかと思いまして、
どうかご教示くださいませ。
948 :
947 :02/05/05 08:33 ID:???
しまった、旧スレだった!新スレ逝きます。 申し訳ない…
質問あんだけどさ。 ディレクトリの構成ってどういう意味なの? なんかよくわかんないんだけど。 例を書いて詳しくキボンヌ
最新スレ、どれよ?
>>944 で1000取り合戦宣言してから3ヶ月も放置されるスレ、初めて見た・・・。
さびしい板だなあ、ここ・・・
955 :
Miku :02/05/30 15:29 ID:Qeausx7o
CGIの設置の仕方について教えてください。 FTPを使って転送しなくちゃいけないのは分かったのですが、 その設定で、何のことを言ってるのか・何を入力するのかさっぱり分かりません。 なので、接続すらできないのですが、FTP以外の方法ってあるのでしょうか? あと、FTPの使い方をど素人に分かりやすく教えてもらえませんか。 よろしくおねがいします 使っているのは、FFFTPというやつです。 HPはpuresilkなのですが。
>>955 ・接続先(IPとかホスト名)
・ID(ユーザー名)
・パスワード
を教えて貰ってないの?
957 :
Miku :02/05/30 15:39 ID:Qeausx7o
早速、ありがとうございます。 サポートページはFTPのところはずっと更新されてないし、 無料領域なので質問とかは有料みたいです。 で、HPへのHTMLファイルの書き換えとかのログインページはあって そこからやってたのですが。 そこへのユーザーIDとパスワードは分かっているのですが、、、、 なんとかなりますか?
>>957 かなり厳しいな(w
要は君の知的好奇心と独学で勉強するゾというやる気と時間あれば…(w
959 :
Miku :02/05/30 16:36 ID:Qeausx7o
お答えありがとうございます。 やっぱり、厳しいですかね(T。T) なにか、ヒントって言うか、ここで勉強しといで。 見たいなお勧めってありますか?
根本的にFTPが使えないんじゃいの? サイト良く見てみてよ。それなら問題外。
962 :
Miku :02/05/31 05:37 ID:9TzlTgvN
色々、覗いてみたのですがFTP使えるって書いてあるところと 使えないって書いてあるところとあってどっちなのかよく分かんないんです。 でも、FTPが使えないのにCGIはOKっていうことはどうやってCGIをWEBにUPするんでしょう??? 何とかしてCGIをUPしたいですぅー(T0T)
tuka,何故今更、Part3に質問したのかわからない。
968 :
nobodyさん :02/06/18 19:17 ID:HmZ+teFE
968GET!
969 :
:02/06/18 21:29 ID:???
もう沈めちゃおうよぅ
970 :
nobodyさん :02/06/19 01:16 ID:/1fzGXVx
sage
972
\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ,,、,、,,, / \〇ノゝ∩ < 1000とり合戦いくぞゴルァ!! ,,、,、,,, /三√ ゚Д゚) / \____________ ,,、,、,,, /三/| ゚U゚|\ ,,、,、,,, ,,、,、,,, ,,、,、,,, U (:::::::::::) ,,、,、,,, \ ぶーぶーぶー / //三/|三|\ タリー ∪ ∪ (\_/)タリー タリー ドーセヒトイネーヨ ( ´Д) タリー タリー / つ (\_/) (\_/)ノ⌒ヽ、 (_(__つ⊂(´Д`⊂⌒`つ(´Д` )_人__) ))
974 :
nobodyさん :02/06/19 10:23 ID:tOAO1Py0
GCIサービスってサイト はどこへ逝った?? 五ヶ月ぶりにアクセスしてみたら なくなってたぞ
975sage
976 :
nobodyさん :02/06/19 10:48 ID:HHoJ2gY+
976GET!
977 :
:02/06/19 13:45 ID:???
977と・・・
978 :
nobodyさん :02/06/19 13:54 ID:HHoJ2gY+
978GET!
\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ,,、,、,,, / \〇ノゝ∩ < おまえら、気合足りないぞゴルァ!! ,,、,、,,, /三√ ゚Д゚) / \____________ ,,、,、,,, /三/| ゚U゚|\ ,,、,、,,, ,,、,、,,, ,,、,、,,, U (:::::::::::) ,,、,、,,, \ ぶーぶーぶー / //三/|三|\ タリー ∪ ∪ (\_/)タリー タリー ニッポン マケタシヨー ( ´Д) タリー タリー / つ (\_/) (\_/)ノ⌒ヽ、 (_(__つ⊂(´Д`⊂⌒`つ(´Д` )_人__) ))
. ピリオド period
, コンマ、カンマ comma
: コロン colon
/ スラッシュ slash
; セミコロン semicolon
@ mamuko
986 :
nobodyさん :02/06/19 18:50 ID:HHoJ2gY+
986GET!
|_∧ 989・・・ |ー゚) ⊂|
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 今だ!990ゲットォォォォ!!!!! \__ ________ ∨ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 日 凸 ▽ ∇ U < お客さん、暴れないでよぉ ≡≡≡≡≡≡≡ ∧ ∧ \____________ U ∩ [] % Σ(゚Д゚,,) ゴルァ!? (´´ ヾ∇ ∧∧ ) |つ∽ (´⌒(´ 日ヾ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (´⌒(´⌒;; ズサガッシャーン!! ━┳━ ━┳━
カラカラ ___◎_______________ || ≡ || ≡ ∧||∧ ≡ ( / ⌒ヽ 991get | | | ≡ ∪ 亅| ≡ | | | ≡ ∪∪ ・ ・ ‐ ‐ ‐ ‐ ‐ ‐ ‐
そこ遅いぞ!!!なにやってんの!!!992ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂( ゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ ∧∧ ) ⊂(゚Д゚⊂⌒`つ≡≡≡3 ズザ〜〜〜ッ
993ゲットですが何か?  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
994ゲットォォォ。  ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ __∧∧_ /\(゚ー゚*) l\ (´´ \/| ̄∪ ̄ ̄|\ (´⌒(´ \|____|≡≡≡(´⌒;;;≡≡≡ (´⌒(´⌒;;
995ゲ・・・・・・・・・!?  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧∧ (´⌒(´ Σ(゚Д゚;) ∩∩ (´⌒;;;≡≡≡ ⊆⊂´ ̄ ソ (´⌒(´⌒;;  ̄ ̄ ̄ ズザザザザーーーーーッ 995ゲトー!! (・∀・ )≡≡≡≡≡≡≡≡≡≡≡≡
今だ!996番ゲットでちぃ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(・д・,,⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
997 :
. :02/06/20 09:14 ID:???
997ゲットだがや!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ .∩∧,,∧ (´´ ,,,,,,,,,,ミ゚Д゚,,彡 (´⌒(´ ど,,,, ,,,,,二⊃≡≡(´⌒;;;≡≡≡ ~''(,,,,,づ゙゙ (´⌒(´⌒;; ズザーーーーーッ!!
============================================== ここまで読んだ。 ==============================================
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。