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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん02/03/03 12:49ID:673UxTI5
print"くだらない質問はここにかけや!";

0002nobodyさん02/03/03 12:50ID:???
__END__
0003nobodyさん02/03/03 12:51ID:673UxTI5
__再開__
0004nobodyさん02/03/03 12:51ID:???
■過去ログ

 Part 3 http://pc.2ch.net/test/read.cgi/php/988727833/l50
 Part 4 http://pc.2ch.net/test/read.cgi/php/1000804655/l50
 Pert 5:http://pc.2ch.net/test/read.cgi/php/1009331505/l50

CGI以外のPerlに関する質問スレッド
 Perl 初心者コーナー
  http://pc.2ch.net/test/read.cgi/php/1003900311/l50
 CGIに依存しないPerlの話題一般
   http://pc.2ch.net/test/read.cgi/php/991313362/l50

Perl以外のCGIスレッド(別にこのスレで良いんだけど参考に)
 RubyでCGI
   http://pc.2ch.net/test/read.cgi/php/988948655/l50
 C言語CGI専用スレッド
   http://pc.2ch.net/test/read.cgi/php/988918264/l50
 TclでCGI作ってる人いる?
   http://pc.2ch.net/test/read.cgi/php/993648764/l50
 /*Perl.Ruby.php以外でCGI*/
   http://pc.2ch.net/test/read.cgi/php/1004107967/l50

0005nobodyさん02/03/03 12:51ID:???
その他のWEBプログラムスレッド
 【PHP】 質問スレッド
   http://pc.2ch.net/test/read.cgi/php/1003283567/l50
 ◆JSP◆
   http://pc.2ch.net/test/read.cgi/php/984840356/l50
 ==ASP==
   http://pc.2ch.net/test/read.cgi/php/984840107/l50
 ColdFusion
   http://pc.2ch.net/test/read.cgi/php/988191427/l50

その他の良スレ
 【Perl,CGI】参考書籍
   http://pc.2ch.net/test/read.cgi/php/988809842/l50
 スクリプト改造工房
   http://pc.2ch.net/test/read.cgi/php/988808396/l50
 こんなCGI探してますスレッド
   http://pc.2ch.net/test/read.cgi/php/1003132904/l50


0006102/03/03 12:52ID:673UxTI5
質問する側は
>>4
がまとめてくれたのでよく読んでからするように。
0007102/03/03 12:52ID:673UxTI5
追加
>>5
もよく読むように。
0008nobodyさん02/03/03 12:53ID:???
>>1
スレたてるならちゃんと過去スレへのリンクとかもいれろボケ
0009102/03/03 12:54ID:673UxTI5
SEX
0010nobodyさん02/03/03 12:54ID:q9dpZREZ
>>6-7
おまえこそ>>4-5よく読んでから質問しろ
0011102/03/03 12:54ID:673UxTI5
おう!
0012nobodyさん02/03/03 12:56ID:???
>>10
これ勘違い。スマソ
0013102/03/03 12:58ID:673UxTI5
print"<font size=\"2\">気にするなや!良スレワショイ♪</font>"
0014nobodyさん02/03/03 12:59ID:???
>>13
;がありません。
0015102/03/03 12:59ID:673UxTI5
スマン
<font size=\"7\">
ダタヨ。

0016102/03/03 13:01ID:673UxTI5
すみません先生。
print"<font size=\"7\">気にするなや!良スレワショイ♪</font>";
0017fight02/03/03 13:09ID:hJgT38sz
http://www.geocities.co.jp/Bookend-Ango/2352/
お願いだから来て
内容は悪くないんだけど
出来たばかりだったから
頼むぜ
このページの未来は
君の心がけで
変わっちまうんだ
0018nobodyさん02/03/03 13:09ID:673UxTI5
さっきの質問の回答を私は待っています。
で、いかががなもんでしょ?
0019nobodyさん02/03/03 13:11ID:???
>>18
マルチを許可するから、今までの家庭と質問を簡潔にまとめて。
っていうか誰かわからん。\t。
0020nobodyさん02/03/03 13:11ID:???
>>17
ブラクラはもうちょっと上手にやろうな。
0021nobodyさん02/03/03 13:22ID:673UxTI5
print<<"<!--HTML-->";
前スレの
http://pc.2ch.net/test/read.cgi/php/1009331505/l50
>:>:954の方法だと組み込んだ場所から後が表示されなくなりました。
そこで、(ログ形式が不明なので直してチョ)とかいて頂けたので
ログ形式が.txt形式ですと私が答えました。
そして、保存されている形が
no. http://ハァハァ.ne.jp comment name
と書きました。
こう書いたらスペースが危険だ。とカカレマチタ。
そこで私はスペースではなくてタフで空白をいれていると答えました。
<!--HTML-->




0022nobodyさん02/03/03 13:24ID:???
>>21
さっきから思っているのですがもう少しまじめにかけませんか?
非常に読みづらい。
0023$name=1;02/03/03 13:27ID:673UxTI5
http://pc.2ch.net/test/read.cgi/php/1009331505/l50
>:>:954の方法だと組み込んだ場所から後が表示されなくなりました。
そこで、(ログ形式が不明なので直してチョ)とかいて頂けたので
ログ形式が.txt形式ですと私が答えました。
そして、保存されている形が
no. url comment name
と書きました。
こう書いたらスペースが危険だ。と教えて頂けました。
そこで私はスペースではなくてタブで空白をいれていると答えました。
0024nobodyさん02/03/03 13:30ID:ezJ1E2sl
#! /usr/local/bin/perl -wT
my $file = "hogehoge.txt";
my %count;
open (DAT, $file) or die $@;
while (<DAT>) {
my $name = (split /\t/)[3];
$count{$name}++; # $nameの発言数を+1
}
close (<DAT>);

print <<"_HTML_";
Content-Type: text/html

<html>
<body>
_HTML_
# 回数が多い人から並び替えて出力
foreach (sort{$count{$b} <=> $count{$a}} keys %count) {
print $_, ":", $count{$_}, "<br>\n";
}
print <<"_HTML_";
</body>
</html>
_HTML_
00252402/03/03 13:31ID:???
また間違えた(鬱
close (<DAT>);
  ↓
close (DAT);
0026nobodyさん02/03/03 13:33ID:???
foreachが妙。無数にsortすることもあるまい。
whileの中でのmyもいただけない。

君の日本語と同じくらいコードも妙。
0027$name=102/03/03 13:34ID:673UxTI5
$thanks = 24;

print ="$thanks<<ありがとうございます。";
もう一度チャレンジしてみます。

0028nobodyさん02/03/03 13:35ID:???
>>23
糞スレ(アパッチとアンパンチスレ)ageんなボケ。

以降673UxTI5は放置で。
0029nobodyさん02/03/03 13:40ID:???
よし、IDを隠そう。。。
0030nobodyさん02/03/03 13:51ID:???
できました。糞スレをあげてすみませんでした。
0031nobodyさん02/03/03 23:38ID:SnM6het0
>>26
>whileの中でのmyもいただけない。
26の人じゃなくても良いんだけど、
コレ、どうしていけないのか誰か教えてくれませんか。
0032nobodyさん02/03/03 23:39ID:SnM6het0
あ、コレってのは「whileの中でのmy」のことです。
0033nobodyさん02/03/03 23:47ID:???
> open (DAT, $file) or die $@;
基礎からやり直した方が良いよ
0034nobodyさん02/03/03 23:50ID:???
>>32
my()は微々たる物とはいえオーバーヘッドがあるから。
まぁ無いにこしたことはないと考える者もいるのだろう。

おれはCGIスクリプト以外では気にしない。
0035nobodyさん02/03/03 23:58ID:4iuYzTo3
IDテスト
0036nobodyさん02/03/04 00:11ID:???
>>34
ナルホド、どうもです。
自分も24の人みたいに小さいブロックでmyするもんで。
他の人はどうなんだろう。
0037nobodyさん02/03/04 00:13ID:???
>>36
俺もmy使う。
>my()は微々たる物とはいえオーバーヘッドがあるから。
を気にするくらいならそもそもPerlなんか使わない。
0038nobodyさん02/03/04 00:56ID:???
>>37
whileの中のmyは変だとほざいたものですけど、

C言語ユーザなのでローカル変数は関数の始めで宣言しないと気が済まないたちです。

C++でも

for(int i = 0;i < 5;i++)
{
string j = split();
}

のiは許しますがjはなんか違和感ありです。
0039nobodyさん02/03/04 03:30ID:rNzDwXQ3
____
Ю)__)
  |´ー`|      (´∀`;)....ヤッターカミガアターヨ
  ~~~~~


____
Ю)__)
  |終了|
  |´ー`|      ....(;´Д`)イヤァァァァッ
0040nobodyさん02/03/04 22:37ID:Bo4DQAhi
Kent-web落ちてるんだけど。
0041nobodyさん02/03/04 22:52ID:???
>>40
あんたのホストからつながらないだけだろ。
0042ago02/03/04 23:04ID:vvtG7qnQ
HPにCGIを入れて、サーチエンジンで検索できるようにするのってどうするのか?
どっかにフリーのCGI無い?
0043nobodyさん02/03/04 23:11ID:???
>>42
検索エンジンの呼び出しフォームだったらCGIじゃなくたってできる。
検索エンジンに登録するのは、代行ページがある。
 いったいなにがしたいのだ?
0044sage02/03/04 23:20ID:vvtG7qnQ
sounanoka
そうなのか
REALY!
0045sage02/03/04 23:40ID:vvtG7qnQ
YAHOOのサーチエンジンつかいたいんだけど、どうすればいい?
ぐーぐるはでけた
0046nobodyさん02/03/04 23:43ID:???
>>45
ヤフーのソースを見ろ。     
0047sage02/03/04 23:54ID:vvtG7qnQ
だからどこだよ?
おまえ暇なんだからアドレスくらいかいとけよ、ヒッキー!
0048sage02/03/05 00:08ID:oXG1039l
もう一個。
更新履歴とかってどうすれば?
0049nobodyさん02/03/05 00:24ID:kLevaTw3
ぬおおおお。質問させてーー。
掲示板、携帯電話から書き込み可能にしたら、
半角カナが頻繁に文字化けするっす。jcode.plで全部EUCでやってるっすぅ。
どうしたらいいっすか。今のところ半角カナ一文字の後に改行があるときに
文字化け確実っぽいっすが、まだ調べ中っす。
なんかあったらたのむっす。
0050nobodyさん02/03/05 00:26ID:???
>>49
化けないとでも思ったか・・・。
0051名無しさん@お腹いっぱい。02/03/05 00:28ID:???
テスト書きこみ
0052nobodyさん02/03/05 00:30ID:???
>49
http://www.din.or.jp/~ohzaki/perl.htm#JP_HK2ZK
0053nobodyさん02/03/05 00:45ID:kLevaTw3
>>52
そこは参考にさせてもらってるっすが、そのサイトのどこを見たらいいすか。
正しくパターンマッチさせるとか怪しいっすが、パターンマッチとか使ってないし。
0054nobodyさん02/03/05 00:48ID:???
>53
わざわざ何処を見るかまで教えてるじゃないか・・・。
0055nobodyさん02/03/05 00:52ID:???
>>54
釣られるなよ。
0056nobodyさん02/03/05 00:53ID:???
> 49
その価値のないソースを見せてみRO!
0057nobodyさん02/03/05 00:56ID:kLevaTw3
おっと、失礼しました。半角を全角にっすか?
それは、convertだかのオプションですでにやってだめで、
今、h2z_eucというのもためしてみたっすが、うまくいかんす..。
ていうか、WINやマックの半角はよくて携帯はだめってどういう仕組みっすか?
0058nobodyさん02/03/05 00:58ID:???
>57
送信の文字コードはなんなんだYO!
0059nobodyさん02/03/05 01:01ID:kLevaTw3
送信元はなんなんだかわからんっす!AUとドコモで試してるっす。
convertで第2引数は指定しなきゃいいかと思ってたっす。
頭悪くてすまんす。
0060nobodyさん02/03/05 01:08ID:???
おっと、すまんす。ちょっと試験の仕方を間違ったっす。
h2z_eucを再チェックしてみまっす。
0061nobodyさん02/03/05 01:16ID:???
>59
なに勘違いしてんだYO!
サーバ側からの送信文字コードだYO!
携帯だからSJISしか使えないはずだから確認したかったんだYO!
0062nobodyさん02/03/05 01:22ID:???
すまんす。意味わからんかったっす。
携帯にはSJISで出力してるっす。表示部には問題ないと思うっす。
なんか携帯のフォームからデータ受け取った時点ですでにおかしいっぽい。
0063nobodyさん02/03/05 01:24ID:???
URLデコードの部分を見せてみRO!
0064nobodyさん02/03/05 01:32ID:???
URLデコードっていうのかわからんっすが..こんな感じっす。
if ($ENV{'REQUEST_METHOD'} eq "POST") {
  read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
  @a = split(/&/, $query_string);
  foreach $x (@a) {
   ($name, $value) = split(/=/, $x);
   $value =~ tr/+/ /;
   $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
   &jcode'convert(*value, "euc","","z");
   $FORM{$name} = $value;
  }
}
....
print OUT "$FORM{'name'}\n";#ファイルに書き込みね☆
0065nobodyさん02/03/05 01:35ID:???
>63
>携帯にはSJISで出力してるっす。

ってことは、携帯以外には別のコードってことKA?
そしたら改行コードの統一ってのが不可欠になってくるけどどんな感じDA?
0066nobodyさん02/03/05 01:39ID:???
ていうか、パターンマッチばりばりしてるっぺな..。
改行コードか..。そういえば、パールメモからコピペして使ってたなあ。
全然チェックしてなかったっす。ちょっとチェックしてみるっす。
いろいろ世話になるっす。ありがとう。
0067nobodyさん02/03/05 01:46ID:???
んー待てよー。
でも<input type="text">からのデータには改行は入ってないっぺ?
これも化けるんだけど、改行コード関係あるっぺか?
0068nobodyさん02/03/05 01:48ID:???
ないネー。
半角以外の漢字コードは問題ないのKA?
0069nobodyさん02/03/05 01:50ID:???
<input type="text" .......
の場合、type="text"部分は省略できるZO!
携帯のようにバイト数に制限があるならより少なく書くのがよかろう!
0070nobodyさん02/03/05 01:54ID:???
んー今のところ、携帯で半角カナ意外では問題ないっす。
あ、ドコモのやたらと古い機種(関係あるのかわからんが)で、
(涙)みたいな意味の記号が化けたことがあったすけど、
原因がいっしょだか不明っす。
見切り公開してしまった掲示板す。どんどんバグがあらわに..。
0071nobodyさん02/03/05 01:57ID:???
>69
おお、それは知らなんだ!予期せぬ有用な情報をありがとう!!
0072nobodyさん02/03/05 02:00ID:???
最後にHTMLフォームをSJISで出力する際に、つぎをかませたらどうDA?

s/\x5c/\\\x5c/g;
0073nobodyさん02/03/05 02:08ID:???
おお、なんじゃそりゃ。
ホント頭悪くてすまないんだけど、なんか、携帯で半角カナで書き込んだら
データファイルの中も様子がおかしくて、携帯にsjisで表示しようが、
IEとかにEUCで出力しようが同様に化けるっす。
IEで半角カナ打った場合はIEでも携帯でも表示はノープロブレム。
これは携帯の電波に特殊な妨害電波が混じってるとしか思えん!そんな俺がデムパか。
てか、蓋を開けてみたら半数以上の訪問者が携帯から書き込みやがるし..。
0074nobodyさん02/03/05 02:14ID:???
s/\x5c/\\\x5c/;
ってのは、あくまでもSJISのみに適用DA!
0075nobodyさん02/03/05 02:19ID:???
おお!なるほど!!
って全然意味不明っすが、たしかに携帯でのみ化けなくなったっす。
007675とか02/03/05 02:21ID:???
やっぱデータ受け取った直後のパターンマッチかな?
0077nobodyさん02/03/05 02:23ID:???
SJIS以外の送信フォームが文字化けなら元データが既に汚染されてはいないKA?
0078nobodyさん02/03/05 02:29ID:???
急きょ以下を作ってみたから s/\x5c/\\\x5c/g;のかわりに次を使ったほうが
より化けないと思うZO!

s/([\201-\237\340-\374])([\100-\176\200-\374])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge;
s/([\241-\337])([\336\337])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge;
007975とか02/03/05 02:30ID:???
いや、SJIS以外のフォームは文字化けしないっす。
sjisフォームから来たデータだけ文字化けして書き込まれて、
さっき教わったやつでsjis出力時(つまり携帯に表示時)だけ元に戻ってるっぽい。
ああ、なんかだんだんわかってきたZO!そんな気がするだけか..。
0080nobodyさん02/03/05 02:33ID:???
>73
IEでの日本語EUCコードの文字化けはメタタグで回避済みKA?
0081nobodyさん02/03/05 02:37ID:???
>79
それだったらURLデコード直後に文字コードがSJISの場合のみ>78の処理を先に
かましておくのはDOUDA!!
008275とか02/03/05 02:39ID:???
メタタグとおまじないの文字(とほほさんのサイトでヤフーも使ってると紹介されてる方法)
で回避を試みてるっすが、それでもたまに化けることがあるっぺYO!
0083nobodyさん02/03/05 02:43ID:???
そういう場合はメタの直後に<!--日本語化けるなゴルァ-->
と書いておくと、化けない場合が多いZO!!
008475とか02/03/05 02:44ID:???
>>81
なるほどー。それってのはつまり
先にjcode.plとかで判定してsjisなら78の処理、
その直後にEUCに変換してデータファイルに書き込みであってるのかYO!
いや、態度でかくてすみません。あってらっしゃいます?いやこれも違うな。
008575とか02/03/05 02:45ID:???
おお!それは知らなんだ!予期せぬ有用な情報をありがとう!!

ははは、言えてる。
0086nobodyさん02/03/05 02:46ID:???
そういうことDAな!
チョット進化してきたNA!!
008775とか02/03/05 02:54ID:???
ありがとーだYO!だんだん分かってきたYO。
今やってみてるっす。私的な解説サイト参照しながらだからはかどらんス。
ていうか、今思ったけど、携帯専用の書き込みCGI作ったほうが動作確実かな。
しかーし、それはあんまり美しくないのでやはりこのままの方針で..。
008875とか02/03/05 03:29ID:???
まだいるかな?
なんだか面倒なことになったYO!
今度はIEで携帯からの半角カナが表示できなくなったYO!
IEからの半角も携帯からの半角もデータファイルを
テキストエディタで見れば同様に見えるんだけど、
携帯からの半角だけIEで化けるっす。携帯では化けないっす。
さっき教わったsjis出力時の怪しい変換は削除したっす。
かわりに書き込み前に変換してるっす。
0089nobodyさん02/03/05 03:32ID:???
当然SJIS出力時の変換はチャラDA!!

だいたい以下のようになったDAロ!!

if ("\U$ENV{'REQUEST_METHOD'}" eq 'POST'){
read(STDIN, $_, $ENV{'CONTENT_LENGTH'});
$isSjis= &jcode::getcode(\$_) eq 'sjis' ? 1 : 0;
for ( split('&') ){
($name, $_)= split('=');
tr/+/ /;
s/%(..)/chr(hex($1))/eg;
if ( $isSjis ){
s/([\201-\237\340-\374])([\100-\176\200-\374])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge;
s/([\241-\337])([\336\337])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge;
&jcode::sjis2euc(\$_);
}
$FORM{$name}= $_;
}
}

009075とか02/03/05 03:38ID:???
全くそのとおりっす!若干文法が違いますが意味は全く同じっす。
でIEでの表示がおかしい以外が一見正常に動いてるっぽく見えるっす。
009175とか02/03/05 03:40ID:???
データファイル内は名前、メッセージ、日付などを改行を挟んで並べてるんですが、
化ける文字の直後の改行をエディタで入力しなおすだけでIEでも表示できるようになるっす。
これがなにを意味するのか、ちょっとわからんっす。
0092nobodyさん02/03/05 03:43ID:???
じゃーYO−! とっておきのスペシャル変換をIEにだけ特別にぶちかましてやんナ!

if ( $ENV{HTTP_USER_AGENT}=~ /MSIE/i ){ s/\x5c/\\\x5c/g; }
0093nobodyさん02/03/05 03:46ID:???
>91
サーバOSはUNIX系だRO! EUCで処理するぐらいだから当然そうだRO-YO!
009475とか02/03/05 03:52ID:???
おおおお!なんだそれーー。なんかわからんがすごそう。
で、今バイナリエディタなるものを落としてきて、データファイル見たんだけどYO!
IEでの半角書き込みも携帯の半角書き込みも全く一緒に見えるZOYO?
0095nobodyさん02/03/05 03:54ID:???
できたってことKA!
009675とか02/03/05 03:56ID:???
いや、できとらんのYO!
>>89のままでバイナリデータ見てもなんら異常あるように見えナインだPPE!
それからIEでだめって言ってたけどYO!ネスケでもだめだっぺ!
0097nobodyさん02/03/05 04:09ID:???
>96
やはりそれも半角だけ化けるんだRO?
つまり半角カタカナがいっぱい化けた感じだと思うGA,
これはSJIS上でEUCコードを見たときに特有のものDA!
でも半角以外の日本語は化けないというのはチョット疑問だZE!
もしかして化けないのはボタン上の文字とかKA?
009875とか02/03/05 04:14ID:???
いや違うんだZO!携帯からの半角文字、一文字なら一文字だけが、
EUC表示のときに化けるんだZO!
0099nobodyさん02/03/05 04:16ID:???
携帯からの入力データを一旦ファイルに書き込むようなことをコチトラこみみに挟んで
るが、そこのコードを出しやがレ!!
010075とか02/03/05 04:17ID:???
化けるってのは、半角カナ一文字がただの・って感じに見えるだけで
それ以外の書き込み文字(普通のテキスト)は全部正常なんだZE!
010175とか02/03/05 04:22ID:???
んーそれは何のことだべな?
print OUT "$FORM{'name'}\n";
print OUT "$FORM{'message'}\n";
こういうところのことかYO?
0102nobodyさん02/03/05 04:27ID:???
チョット意味のない処理をしてしまっていたからYO!次の2行の置換は2行目をコメントにして
おKE!

s/([\201-\237\340-\374])([\100-\176\200-\374])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge;
#s/([\241-\337])([\336\337])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge;
010375とか02/03/05 04:30ID:???
わかったYO!消してみたぜYO
010475とか02/03/05 04:34ID:???
発言者名アってしたら岡だとYO!笑わせるゼ!
0105nobodyさん02/03/05 04:35ID:???
>101
そういうデータの書き方かYO!
直前にアクセスした一件分だけ保存してるということだNA!!
この一旦保存したデータを読み込んで出力してるなら当然改行文字を切り落として
いると思うがどうDA!!
$FORM{'message'}っつーのはテキストエリアで複数行書けるんじゃないのKA?
010675とか02/03/05 04:42ID:???
改行切り落としてないYO!まずったKA?
messageはテキストエリアだYO!これもまずったKAYO!
0107nobodyさん02/03/05 04:45ID:???
>106
とりあえずデータファイル読み込んだら改行を切り落とし過ぎるぐらいに切り落とせ!
テキストエリアデータの改行処理はどう処理してるのKA?
s/[\x0a\x0d]+/<BR>/g;
ってな感じか?
010875とか02/03/05 04:52ID:???
切り落としたらなんかその後の文字とくっ付いたZO!いやー!!
テキストエリアはYO!一行ずつ
print "$_<br>\n";
ってやってるだけだYO!悪いかっ!
010975とか02/03/05 04:57ID:???
やっぱ改行コードがおかしいんKA!
0110nobodyさん02/03/05 04:58ID:???
>108
なんでくっつくんだ!
1行ずつ読み込んでるだRO!

テキストエリアの出力にしても今一ついかしてネーゼ!
ソースを公開できる環境があればアドレスを書け!!
0111nobodyさん02/03/05 05:09ID:???
ソースを公開できる環境がなければデータ書きこみから読み込み終了まで
をみみを揃えてだしやがれ!!
011275とか02/03/05 05:20ID:???
http://blake.prohosting.com/k00lk/bbs_dazo.txt
見れ!
0113Name_Not_Found 02/03/05 05:39ID:???
普通にしゃべれねーのかお前らは(笑)
011475とか02/03/05 05:43ID:???
おろ?寝ちまったかYO!!
0115nobodyさん02/03/05 05:44ID:???
# Write current comment.
# $FORM{'message'} =~ s/\x0D\x0A/\n/g; # 改行コードを統一?動作未確認
# $FORM{'message'} =~ tr/\x0D\x0A/\n\n/;
# $FORM{'message'} =~ s/\r*$//g;
# $FORM{'message'} =~ s/ +/ /g;
やっとだいたいわかったZE!!
まず、上の行まで行って待っていRO!
011675とか02/03/05 05:47ID:???
上の行まで行くってどういうことだYO!!
意味わかんねーYO!
0117nobodyさん02/03/05 05:48ID:???
直後に一時ファイルへの書きこみがあるからつぎのように書き換えちまえ!!
$SEPA= '^K'; ## ADD NEW
$FORM{'message'}=~ s/[\x0a\x0d]+/<BR>/g; ## ADD NEW
open(OUT, "> wwwboard.tmp");
print OUT join($SEPA,"$yy年$mm月$dd日","$jj時$ff分$bb秒",$FORM{'from'},$FORM{'message'},"\n"); ### ADD NEW
=comment1
print OUT "$yy年$mm月$dd日\n";
print OUT "$jj時$ff分$bb秒\n";
print OUT "$FORM{'from'}\n";
print OUT "$FORM{'message'}\n";
print OUT "<!-- end of comment -->\n";
=cut
0118nobodyさん02/03/05 05:49ID:???
>116
オマエのファイルに同じ部分があるだRO-!
011975とか02/03/05 05:54ID:???
>>115の5行を>>117の12行に書き換えるってーことKAI?
012075とか02/03/05 05:56ID:???
いや間違ったZO!わかる!わかるぞ!
ただ、うまくねーNA!
0121nobodyさん02/03/05 05:56ID:???
5行じゃネーゼ6行ダゼ! 以下の行を117と置き換えろ!!
open(OUT, "> wwwboard.tmp");
print OUT "$yy年$mm月$dd日\n";
print OUT "$jj時$ff分$bb秒\n";
print OUT "$FORM{'from'}\n";
print OUT "$FORM{'message'}\n";
print OUT "<!-- end of comment -->\n";
0122nobodyさん02/03/05 05:58ID:???
=comment1 から =cut まではコメントだから消してもいいけどYO−!
念のために残しているこのおくゆかしさってなもんDA!!
0123nobodyさん02/03/05 05:59ID:???
書き終わったか?
まだつづくからYO!!
油断すんな!!!
012475とか02/03/05 06:03ID:???
ちょっと待てYO!確認なんだがYO!
こうなるとYO!
データファイルの構造が変わるべNA!
0125nobodyさん02/03/05 06:03ID:???
次に以下の行まで移動してみRO!!

open(IN, "wwwboard.dat");
while (<IN>){
   print "<div align=\"left\" class=\"normal\">\n";
   $date=$_; $time=<IN>;
   $from=<IN>;
   chomp($from);
0126nobodyさん02/03/05 06:05ID:???
>124
そうDA!!
1行に1データを書くからナ!
よく気づいたナー!!
0127nobodyさん02/03/05 06:08ID:???
127まで移動したらヨー!ファイル開いた直後に以下を書き足してみろってんDA!
これで最新データの取得ダゼ!!どうだいかしてるDARO? 一応、変数名は整合性がとれる
ように合わしてやったからヨー

chop($_=<IN>);
($date, $time, $from, $_)= split($SEPA, $_, 4);
012875とか02/03/05 06:09ID:???
まじでかー
実はYOー!この掲示板にはYO!もう一つ秘密のモードがあってYO!
そっちでもっとめんどくさいことになってるんだっPE!!
データ構造変えない方法はないかYO!
またはよ、データ内にタグを書かない方法はないかYO!
ないならしょうがないから秘密モードの仕様変更するからいいけどYO!!!
0129nobodyさん02/03/05 06:09ID:???
127じゃネーゼ! 125のまちがいサー!!
013075とか02/03/05 06:12ID:???
おっと、しかし、>>127はちょっとイカしてんナ!!
0131nobodyさん02/03/05 06:14ID:???
乗り気じゃネーのKA?
もちろんまだつづくけどヨー!
やめるんならいまのうちだZE!
やるんなら読み書きぐちをチョット変更して同じ変数にぶち込んで出力も同じようにする
だけだから難しくはないだローヨ!
それとも大事なデータが既に大量に存在するとかKA?
013275とか02/03/05 06:15ID:???
$SEPAってなんだよ!!イカしてるゼ、まじ!
013375とか02/03/05 06:17ID:???
いや、つづけてクレ!!こっちのほうが楽そうだZO!!
0134nobodyさん02/03/05 06:20ID:???
127がおわったら、次も書いておく

print qq(<div align="left" class="normal">\n);
s/</&lt;/g; s/>/&gt;/g;
print "$_<br>\n";
print qq!<div align="right" class="small">$from $date($time)</div>\n!;
print qq(<img src="graphics/dot.gif" height="30">\n);

これが終わったら whileループの読み出し・出力が終わったことになるからヨー!
またコメントししておけ!!
013575とか02/03/05 06:22ID:???
じゃあwhileループは全部イランということだナ?
0136nobodyさん02/03/05 06:23ID:???
そういうことDA−ZE!
013775とか02/03/05 06:25ID:???
なんかすげーナ!print qqってーのは"の前に\がイランのカ!
0138nobodyさん02/03/05 06:26ID:???
次も同じようにデータを読み込んでいる以下の部分があるからとっとと移動しておけ!!

if ($QUERY{'page'}==0) { #ページ指定がなければ発言リストを出力
   $title = "<div align=center>最新の15件</div><br>";
   &jcode::convert(\$title, 'sjis','euc');
   print "$title";
   $end_count=0;
   while(<IN>){
013975とか02/03/05 06:32ID:???
移動してるっぺな!!
0140nobodyさん02/03/05 06:32ID:???
while ループ内は以下のようになるってなもんDA!!

while(<IN>){
chop($_=<IN>); ### ADD NEW
($date, $time, $from, $_)= split($SEPA, $_, 4); ### ADD NEW
# $date=$_;
$date =~ s/(\d+)年(\d+)月(\d+)日/$2月$3日/g;
# $time=<IN>;
$time =~ s/(\d+)時(\d+)分(\d+)秒/$1時$2分/g;
# $from=<IN>;
# while (1) {
# $_=<IN>;
# if ($_ =~ /^<!-- end of comment -->/) {last;}
# }
014175とか02/03/05 06:35ID:???
最初に一行入るだけかYO!
0142nobodyさん02/03/05 06:40ID:???
>140
チョット間違いDA!!
chop($_=<IN>); ⇒ chop;
たまにはわざと間違うからYO-!
014375とか02/03/05 06:40ID:???
おお、いっぱい削除しとるんかいっ!!!
014475とか02/03/05 06:42ID:???
わざとかい!だろーと思ったゼ!
0145nobodyさん02/03/05 06:48ID:???
次はナー! 以下の行へ飛んじまえ!!
面倒だから字下げは省略だ!

} else { #ページ指定があれば指定ページまで飛ぶ
if ($QUERY{'page'}>15) {$QUERY{'page'}=15};
$end_count=0;
while(1){
if ($end_count>=($QUERY{'page'}-1)){
last;
}
0146nobodyさん02/03/05 06:50ID:???
この無限ループ内は以下のように書きサラセ!!

while(1){
if ($end_count>=($QUERY{'page'}-1)){
last;
}
$_= <IN>; $end_count++; ### ADD NEW
# if (<IN> =~ /^<!-- end of comment -->/) { # コメントの終端を判定
# $end_count++;
# }
}
014775とか02/03/05 06:55ID:???
はっはっは!すげーすげーZO!!
0148nobodyさん02/03/05 06:56ID:???
146の直後はつぎのようになるからヨーク目をこらして見サラセ!!
これで else ブロック内まで書き終わったことになるから覚悟しRO!

chop; ### ADD NEW
($date, $time, $from, $_)= split($SEPA, $_, 4); ### ADD NEW
s/</&lt;/g; s/>/&gt;/g; ### ADD NEW
=comment3
$date=<IN>;
$time=<IN>; #時間(使わない)
$from=<IN>;
while (1) {
$_=<IN>;
if ($_ =~ /^<!-- end of comment -->/) {last;}
=cut
&jcode::convert(\$_, 'sjis','euc');
=comment4
$_ =~ s/<!--/&lt;!--/g;
$_ =~ s/-->/--&gt;/g;
$_ =~ s/&/&amp;/g;
$_ =~ s/"/&quot;/g;
$_ =~ s/</&lt;/g;
$_ =~ s/>/&gt;/g;
print "$_<br>\n";
}
=cut
&jcode::convert(\$from, 'sjis','euc');
print "$_<br>\n"; ### ADD NEW
print "<div align=\"right\">$from</div>\n";
0149nobodyさん02/03/05 07:00ID:???
っと、どうやら終わったようだナ!
まあ、実際に動作させてないから間違ってるかもしれんがそこはご愛嬌!!
こっちのサーバ立ち上げるのもめんどいし、そう間違ってもいないダロウ!!
ポジィティブシンキングってやつだ!!

だた、最後にこれだけは言わせてもらうからナ!! 
言葉遣いが荒っぽくて御無礼お許しください。(ペコリッ
015075とか02/03/05 07:08ID:???
ありがとうございます!こちらこそご無礼をお許しください!
大変勉強になりました。訂正前に比べて、非常に美しい形になりました。
まだ、ちょっと意味不明なところもありますが、調べればすぐわかりそうな位
簡潔ですね!!
0151nobodyさん02/03/05 07:15ID:???
でもさあ、チョット とほほ っぽいコードだと思うけどあの人、意外と
Perl苦手みたいネ!!
かなり無駄な部分が見うけられるからもっとスッキリしたコードに
なるはずです。
015275とか02/03/05 07:17ID:???
実はこの掲示板、秘密のモードが結構自信作なんです。
完成したら是非見に来て欲しいので、よろしければメールください。
さっきのソースの最後のメールアドレス、残ってるかな?
まあいいや。気が向いたらよろしくお願いします。
本当にありがとうございました!

これから仕事に出かけます..(鬱)。
015375とか02/03/05 07:23ID:???
そうなんですか。Perlってなんか文法いっぱいありすぎてややこしいですよね。
とほほさんのばっか参考にさせてもらってたので、他の人のソースはかえってムズカシイっす。
本一冊買おうかな。

では、お出かけします。あー眠い。
0154nobodyさん02/03/05 07:29ID:???
>>152

裏技を非常に凝ったためにメインがおざなりになる罠。
0155nobodyさん02/03/05 09:11ID:???
>>154
他人にみやすく、時間がたった後の自分にみやすく、メンテや機能追加のしやすいコーディングをするっていう方針は間違ってるかなあ?
0156nobodyさん02/03/05 11:47ID:???
以上、壮大な自作自演でした。
0157nobodyさん02/03/05 12:08ID:???
>>156
ワロタ
0158プリクラ02/03/05 21:46ID:zRZgn879
掲示板スクリプトのデコード過程のタグ処理部分で
if ($tagkey) { $value =~ s/<>/<>/g; }
else {
$value =~ s/\&/&/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
}
となってるんですけど、どうしてこれが機能するかわからんです。
正規表現の置換って s/★/☆/g で★が☆に変換されるってことじゃないのです?
だとするとなんで$value =~ s/<>/<>/g;でタグが許可されるのか
わかんないよ。
0159nobodyさん02/03/05 21:51ID:???
>158
else以下だとタグを全て&;lt;などに変換している。
$value =~ s/<>/&;lt;&;gt;/g;では<>がセットになっているときだけしか変換をしない。
つまり、<b>の場合、<>の間にbが入っているからマッチングしない。
0160nobodyさん02/03/05 21:53ID:???
>>158
下2行は無駄。あ、HTMLにしたから&ltが<に化けてるのか。

<を&ltに変えればそれはHTMLタグではなくなる。

<html>

<html&rt -ブラウザでは-> <html>と見える。
016175とか02/03/05 22:06ID:???
自作自演じゃないYAI!>>151さん今日は居ないのKA!
おかげさまでYO!ソースはかなり見栄えよくなって、秘密モードも対応できたんだけどYO!
肝心の文字化けは全く解決しなかったPPE!!!
でYO!携帯携帯とか言ってパケット料金無駄づかいしてテストしてたKEDO!
携帯ページにIEで行って(sjisフォームで)書き込んでも文字BAKEdaZEYO!
フリダシに戻ったっPE!!気づいたらレスくれYO!!!
0162nobodyさん02/03/05 22:21ID:???
>>161 正直そろそろウザイ
0163nobodyさん02/03/05 22:29ID:uMIlDzWP
$encode_pass = crypt $pass_temp,ab;

って何か間違ってる?
0164nobodyさん02/03/05 22:35ID:???
>>163
>ab;

これは何か詳しく聞かせてくれるか?
0165nobodyさん02/03/05 22:58ID:???
きっとこんなのがあとの方にあるに違いない
sub ab { "ab" }
0166nobodyさん02/03/05 23:03ID:???
>>165
後にある場合はvarsかsub;で先行宣言しておかないと。
0167nobodyさん02/03/05 23:07ID:???
そっか宣言しないとエラー出るね。ありがと>>166
0168お腹さん@名無しいっぱい。02/03/05 23:27ID:???
>161
呼んだ?
016975とか02/03/05 23:43ID:???
おおお!昨日はどうもでした!
>>161のとおりなんだけども!ウザいとか言われてへこむから、
なんか端的な解決策あったらお願いしますYO!!!!!!
0170お腹さん@名無しいっぱい。02/03/06 00:11ID:???
>169
そうさネー。もっとスクリプトを整理することサネー。
チョット仕様がわかりかねる部分があるケド、MODEがcomment,light,cellular の
3つがあってcommentモードは print "Location: "; exit; で終わってるのはどう
いう処理?
017175とか02/03/06 00:19ID:???
コメントモードは終わったら表示を更新するだけです。そうか言われてみれば
もっと簡潔な処理できますね。
でも、どうやらもっと別の要因の気がします。
今、フォームデコードする直前あたりからEUCに変換するまでをバイナリで
丹念に調べてます。
0172お腹さん@名無しいっぱい。02/03/06 00:25ID:???
>171
Location: でパラメータを渡さずにこのCGIを呼ぶならどれも実行されないような
気もするケド。。。最終的にLocation: http://xxxxxxx の指定を書くというこTO?
017375とか02/03/06 00:29ID:???
ああ、そうか。いや、実は秘密モードってのが実は通常モードで
引数なければそっちに行くんです。だから、Locationで飛ばさなくていいんですよね。
なんでそんなことしてたんだろう。
0174お腹さん@名無しいっぱい。02/03/06 00:32ID:???
パラメータチェックおよびエラー画面表示等が1つもないケド、必要ないの?
017575とか02/03/06 00:57ID:???
パ、パラメータチェック..うーん、いまいちよくわからんす。

昨日教わったフォームデータを受けてるところ、調べてみたら
同じアという文字をEUCとsjisで送信すると
EUCでは%8E%B1を受け取ってデコード直後から最後まで8Dになってます。
sjisでは%B1を受け取って最後までB1のまま。
&jcode'convert(*value, "euc",$form_code,"z");
とか
&jcode'h2z_sjis(*value);
って文法間違ってないですよね??
0176お腹さん@名無しいっぱい。02/03/06 00:59ID:???
;# URLデコード処理実行

if ($in{'mode'} eq "comment" && $in{'message'} ){
  commentモード処理;
  exit;
}

if ($in{'mode'} eq "light"){
  ligntモード処理;
  exit;
}

if ($in{'mode'} eq "cellular"){
  ligntモード処理;
  exit;
}

※ 現在、大まかに上の処理の流れになっているのでif文がそれぞれ独立していて、
  それぞれのブロックが終了したら exit; で処理が終了してしまう。つまり、
  2つのifブロックを実行することはありえないし、パラメータによってはどの
  ifブロックも実行しないでなにも返さないCGIになってしまい、スクリプトエラー
  になると思う。したがって、大枠としては以下のように書き替えたほうがいいの
  では?
;# URLデコード処理実行

if ($in{'mode'} eq "comment" && $in{'message'} ){
  commentモード処理;
}
elsif ($in{'mode'} eq "light"){
  ligntモード処理;
}
elsif ($in{'mode'} eq "cellular"){
  ligntモード処理;
}
else { デフォルト処理;}
017775とか02/03/06 01:02ID:???
なるほど。全く持ってそのとおりです。
0178お腹さん@名無しいっぱい。02/03/06 01:07ID:???
とりあえず、半角の全角変換はいまの時点でこだわる必要はないと思うし、
別に半角のままでも化けないかもわからないので、まず処理構造をスッキリ
スマートにさせたほうが分かり易くなると思う。
少し読み進めてみると、ファイルロックはしないようにしたみたいダケド、ロックファイル
の後始末(アンロック)などが残っているのでこれは削除したラ?
0179お腹さん@名無しいっぱい。02/03/06 01:10ID:???
あと、携帯には詳しくないが、たしかドコモあたりではヘッダに Content-length: を
付加しないと動かないとかとほほに書いてあったようなきがするケドドウ?
018075とか02/03/06 01:15ID:???
あ、ファイルロックしてます。昨日、ソースお見せするのに
関係なさそうだったのでカットしただけです。
デフォルト処理はif文無しなので、変なパラメータならデフォルトが実行されます。
これ、とほほさんのラウンジの構造そのものなんですが(笑)。
でも全部elsifで繋いだほうが後始末何度も書かなくて済むのでより簡潔ですね。
変更します。
018175とか02/03/06 01:17ID:???
>>179
おっとそれは未確認です。が、僕、学生でも家族でもないのにAUなんです。
追々ドコモでチェックしてみます。
0182お腹さん@名無しいっぱい。02/03/06 01:21ID:???
最初の行あたりの以下の部分って使ってなさそうだケド、もしかしてそのファイルロック
部分かなんかで使ってる?使ってなければ削除したりーナ!

$ENV{'TZ'} = "JST-9"; # Set timezone
@wdays = ( "sun", "mon", "tue", "wed", "thu", "fri", "sat", "sun" ); # Constant variables
018375とか02/03/06 01:27ID:???
あーファイルロックで使ってます。
全部elsifで繋ごうと思ったんですが、commentモードは終了後に掲示板に
戻らないとならないので別個のif文にしてその中でモードを変更するか
locationで飛ばさないとダメですよね??
0184お腹さん@名無しいっぱい。02/03/06 01:52ID:???
commentモード後に必ずLocation: で飛ばす仕様なら「デフォルト処理」に書くほうが
いいと思うケド、どのモードでもない場合(仕様がどうなのかわからないが)やcommonモード
でメッセージが空の場合などの対処も同時に「デフォルト処理」部分でしておく必要はあるネー。

;# URLデコード処理実行
;# ファイルロック実行
if ($in{'mode'} eq "comment" && $in{'message'} ){
  commentモード処理;
}
elsif ($in{'mode'} eq "light"){
  ligntモード処理;
}
elsif ($in{'mode'} eq "cellular"){
  ligntモード処理;
}

;# デフォルト処理;
018575とか02/03/06 02:03ID:???
結局、>>183の前者の方に変更しました。
表示部は必ず実行する、コメントするならしてから表示部を実行する。という感じ。
0186お腹さん@名無しいっぱい。02/03/06 02:14ID:???
だいたい ifブロック構造はまとまってきた?
018775とか02/03/06 02:18ID:???
はい。おかげさまで見やすくなりました。
0188お腹さん@名無しいっぱい。02/03/06 02:21ID:???
次は、URLデコード部分でR!
なぜか知らんがPOSTおよびGET送信を分けて書いてあるのでアル。
018975とか02/03/06 02:23ID:???
はい。だめですか
0190お腹さん@名無しいっぱい。02/03/06 02:26ID:???
分けて書く特別な意味があるならそうすべきだし、特に意味がなければまとめて
書くほうがよりコンパクトで分かりやすいソースにあるってなもんだ!!
019175とか02/03/06 02:37ID:???
どうやったら一つにできるのか考え中です..
0192お腹さん@名無しいっぱい。02/03/06 02:39ID:???
以下の1行でPOSTだろうがGETだろうが 変数 $_ にぶち込んだことになると思うが。

read(STDIN, $_, $ENV{'CONTENT_LENGTH'}) unless $_= $ENV{'QUERY_STRING'};
019375とか02/03/06 02:44ID:???
つまり、$QUERY{'〜'}と$FORM{'〜'}の二つに分けないで、
一つの配列に両方入れるということですか?
0194お腹さん@名無しいっぱい。02/03/06 02:46ID:???
ああ、それってわけてたんだァ。わけないとまずいことでも?
019575とか02/03/06 02:50ID:???
いえ、配列の添え字も重複してないんで、分けなくていいっちゃーいいかも、です。
ところで、192は意味がわかりません。unless、それ以外は..。
0196お腹さん@名無しいっぱい。02/03/06 02:51ID:???
POST送信の場合、$ENV{'QUERY_STRING'} に値がセットされることは
ないと思うが、これって思い違いカナ?
0197お腹さん@名無しいっぱい。02/03/06 02:56ID:???
192 で変数 $_ に「aaa=%a0%2e&bbb=esc」みたいなのが取得できたからつぎは&
で分割したそれぞれを更に=で分割してデコードをぶちかますから大枠は以下の
ようになるハズでアール。(チョット文字コード変換は置いといて)

for ( split('&') ){
nbsp; nbsp;($name, $_)= split('=');
nbsp; nbsp;tr/+/ /; s/%(..)/chr(hex($1))/eg; # URLデコード
nbsp; nbsp;$in{$name}= $_; # 値のセット
}
019875とか02/03/06 02:56ID:???
別ページからのリンクや、BBS内での過去レスへのリンクのURLに?mode=light&page=3
とかって入るんです。
0199お腹さん@名無しいっぱい。02/03/06 02:58ID:???
197はチョットインデントミス

for ( split('&') ){
   ($name, $_)= split('=');
   tr/+/ /; s/%(..)/chr(hex($1))/eg; # URLデコード
   $in{$name}= $_; # 値のセット
}
0200nobodyさん02/03/06 03:00ID:???
>196
<form action="hoge.cgi?foo" method="POST">
とかすると同時に送れたと思う。
0201お腹さん@名無しいっぱい。02/03/06 03:02ID:???
>200
なるホードネー! それじゃー新たな必殺技を考えるからしばしお待ちを...
0202お腹さん@名無しいっぱい。02/03/06 03:07ID:???
これでPOSTおよびGETの値を取得できるかナ!

read(STDIN, $_, $ENV{'CONTENT_LENGTH'});
$_.= "&$ENV{'QUERY_STRING'}";
020375とか02/03/06 03:08ID:???
おお、なるほど!それなら意味がわかりました!
0204お腹さん@名無しいっぱい。02/03/06 03:10ID:???
どうYO!これで1つのハッシュにまとめられそうな予感?
020575とか02/03/06 03:22ID:???
んー今のところうまく行ってないっす..
0206お腹さん@名無しいっぱい。02/03/06 03:27ID:???
わたしは日本語EUC文字コードでしかHTMLフォーム送信をしたことがないから
わからんケド、経験上EUCで送信したHTMLフォームから入力された値はEUCの
URLエンコードで返ってくるのでSJIS送信の場合は必ずSJISのURLエンコード
で返ってくるのかチョットまだ試したことがないから取得パラメータの文字コードの解析
は必要なのかどうか迷うところネー。
020775とか02/03/06 03:36ID:???
んーその前にEUC送信でつまづいてマス..
0208お腹さん@名無しいっぱい。02/03/06 03:39ID:???
URLデコードはできた?
この際、内部処理はすべてEUCで、HTML出力はすべてSJISにしては?
なにかできない理由あったッケ?
020975とか02/03/06 03:47ID:???
できました!!とりあえず、URLデコードとやらを簡潔にすることはできました。
全部SJISですか..。それが一番いいんですかね??文字化けしにくいですよね。
どっかの解説で、日本語使うならEUCだ!という知識を身に付けたので出力までEUCにしてただけです。
0210お腹さん@名無しいっぱい。02/03/06 03:50ID:???
確かにEUCを愛用しているわたしとしてはEUCがいちばん使いやすいし、
経験上文字化けしたことがないし、文字コード変換のプロセスも必要なくなるし、
いいことづくめだとは思っています。
021175とか02/03/06 03:58ID:???
そうですかー。僕の掲示板やたらと重いんで、sjis変換するの躊躇するんですが、
文字化けよりはいいかな。
ていうかEUCって文字化けしないんですか?
0212お腹さん@名無しいっぱい。02/03/06 04:02ID:???
EUC送信部分ってlightモードDA・YO・NE?
021375とか02/03/06 04:03ID:???
おっと、また問題発生!
さっきモードうんぬんを変更したせいで、
書き込み後のURLが?mode=commentのままになっている..
やっぱりLocationで飛ばしたほうがいいのかなあ。
021475とか02/03/06 04:04ID:???
lightモードとHeavyモードです(笑)
0215nobodyさん02/03/06 04:06ID:???
すみません。
foreach $line(@hoge_lines){
@超hoge=split(/<>/,$line);
&普通にhoge;
}
こういうのがありまして、
&普通にhogeというサブルーチンは
sub 普通にhoge{
名前:超hoge[0]
題名:超hoge[1]
}
となっているとします。
このルーチン内に別のログファイルの内容を読み込んでうまく組み込むにはどうすればよいのでしょうか?
0216お腹さん@名無しいっぱい。02/03/06 04:09ID:???
>213
GET送信ならURLに?name=value&.... がくっつく(Location: 等で飛ばさない限り)

>214
Heavyモードってファイルには無いネー。これが隠し?
021775とか02/03/06 04:14ID:???
>213はちょっと検討中です。
heavyが隠し(笑)。こっちは重いだけでいまのところ問題なしです。
0218nobodyさん02/03/06 04:18ID:???
>215
@hoge_linesとログファイルの書式,
読み込んで組み込む時の上手い下手の定義とかを書いて。
0219お腹さん@名無しいっぱい。02/03/06 04:19ID:???
>215
ネタかと思ったが...
0220nobodyさん02/03/06 04:24ID:???
この板,最近煽りが多いからたまにはマジレスもしとかんと(w
0221お腹さん@名無しいっぱい。02/03/06 04:34ID:???
>220
そうダネ。この板、最近ムネオが多いネ!
022275とか02/03/06 04:38ID:???
結局、Locationで飛ばしました。
なんか、mode=commentとか全部postで送ったら、URLは簡潔だけど挙動がおかしいんです。
書き込み後、更新ボタンを押すと、重複して書き込まれてしまいます。
022321502/03/06 04:45ID:???
>>218
@hoge_linesは
$name,$title
で
ログファイルの書式は
名前<>題名<>
こんな風です。

上手いはとにかくできでどんな形でも組み込めればおいしい。
下手は組み込みを失敗している状態のことでSU!


0224お腹さん@名無しいっぱい。02/03/06 04:49ID:???
いい忘れてたケド、昨日のjoin関数で繋げる部分は以下のように変えテーナ!

print OUT join($SEPA,"$yy年$mm月$dd日","$jj時$ff分$bb秒",$in{'from'},
&nbps;       $in{'message'}),"\n";
0225お腹さん@名無しいっぱい。02/03/06 04:51ID:???
また、インデントしくじったーゼ!
224の &nbps; 部分はインデントミスさー
022675とか02/03/06 04:55ID:???
あーはいはい。すでにそのような感じに変えてありまっす。
あと、splitのほう、^Kは\^Kと書かないとだめでした。
ちなみに、なぜ^Kなんでしょう??
takakura^kenさんからの書き込みあったらマズイ!
0227お腹さん@名無しいっぱい。02/03/06 04:57ID:???
これもまた説明不足だったーネ。
これはコントロール文字のつもりだったので以下のように書き換えてみて、

$SEPA= "\x0b"; # セパレート文字(コントロール文字^K)
0228nobodyさん02/03/06 05:06ID:???
>>223
sub 普通にhoge{
 名前:超hoge[0]
 題名:超hoge[1]
 特別なhuga;
}
sub 特別なhuga{
 open LOGFILE, "logfile.dat";
 while (<LOGFILE>) {
  push @LOG, sub { {name=>$_[0],title=>$_[1]} }->(split /<>/);
 }
 close LOGFILE;
}
#$LOG[0]->{name}
022975とか02/03/06 05:09ID:???
なるほど、そうでしたか。なんか特殊なものなんだろうなあと思って調べたんですが、
^Kという文字列は僕のしょぼい検索に引っかかりませんでした..。
無知でお恥ずかしいです..
0230お腹さん@名無しいっぱい。02/03/06 05:12ID:???
まあ、フリーのCGIなどではセパレート文字に <> などというものを使って
る人がおおいけど、これだと2バイトになってしまうから、敢えて1バイトの
コントロール文字を使うという心意気みたいなもので、テキストデータを処理
する際の手筋ダーネ!
023175とか02/03/06 05:19ID:???
なるほどです。
ところで、昨日教わったやり方だとデータファイルに<br>が入ってましたが、
これを例にならって^Rという勝手な区切り文字に変えてしまったんですが、
\x0bと同時に使って区別できる区切り文字ってありますか?
0232お腹さん@名無しいっぱい。02/03/06 05:22ID:???
そうネー。\x1b なんかはお手ごろかと。
\x1b ESC文字(コントロール文字^[)
023375とか02/03/06 05:31ID:???
あ、それは\eのことですよね!僕のしょぼい検索にもひっかかりました。
ありがとうございます。

さて、そろそろ寝ます..最近、仕事中にしか寝てないんです(!)
2夜に渡って大変お世話になりました。どうもありがとうございました。
とりあえず明日全部sjis変換を試してみます..。
023422302/03/06 05:48ID:???
ちょっと形を変えて組み込めたんですが、
logfile.datの方から読み込んだ名前の数をカウントして
もう一つの方から読み込んだ名前の横に表示しようとすると、
1に対する文句の数 2
2に対する文句の数 3
3に対する文句の数 5
と1に対する文句の数にそのまま+されていってしまいます。

これはどうやれば解決できるのでしょうか?


023522302/03/06 05:50ID:???
と1に対する文句の数にそのまま+されていってしまいます。×
と1に対する文句の数にそのまま+されていってしまいます。文句の数がね○
0236nobodyさん02/03/06 05:57ID:???
>234
sub 特別なhuga{
 @LOG = ();
〜以下略〜
0237nobodyさん02/03/06 07:01ID:CkyOD57T
>>236
もっと詳しく書いてやれYO!
0238nobodyさん02/03/06 10:32ID:CkyOD57T
早くしろよ。
0239ぷうすけ02/03/06 11:05ID:qVBo2uea
mkdirに関する質問です。よろしくお願いします。

  $ret=mkdir($fname,0777);

 perlのcgiプログラム内にて、ディレクトリを上記の方法で作成して、その
中にデータファイルを作成する、というようなことをやろうとしています。
Webブラウザからのアクセスにより、上記の文は実行され、ディレクトリは作
成されます。$retには成功の1が返っていますが、実際のパーミッションは
755となっています。これは、サーバの設定のせいなのでしょうか?または、
なにかプログラム的に対策が取れますか?なお、cgiの置いてあるディレクト
リのパーミッションは777になっています。
0240nobodyさん02/03/06 13:41ID:???
>>239
多分サーバーの設定だろう。
詳しくは俺もよく知らんが、perldoc -f umask が参考になるかもしれない。

等と適当な事を逝ってみる。
0241nobodyさん02/03/06 14:34ID:???
タブ区切りテキストの read.txt を読み、
ユーザーの入力を格納した %hoge と %foo で5,6列目を上書きし、
write.txtに保存したいです。
以下のように配列 @temp を一時利用したコードを書いたところ、
\tでjoinしたにも関わらず、タブ文字でなく「\t」を区切り文字に連結されました。
つまり、
print "@temp[0]\\t@temp[1]\\t@temp[2]\\t 〜 @temp[8]\\t\\n";
を実行した時と同じ結果になりました。
望む結果を得るにはどうしたらいいのでしょうか?

$counter=0;
open READ, "read.txt";
open WRITE, "+>write.txt";
while ($input = <READ>){
$counter++;
@temp = split (/\t/,$input);
@temp[5] = $hoge{$counter};
@temp[6] = $foo{$counter};
print WRITE join('\t',@temp) ;
}
close READ;
close WRITE;
0242nobodyさん02/03/06 14:42ID:???
>241
'\t'
"\t"
この二つの違いはわかるかい?
024324202/03/06 14:50ID:???
いや、わかんないです。
てかそれだけヒントをもらえれば自分で調べます。
0244nobodyさん02/03/06 14:56ID:???
>243
君は241だろ。(w
まぁ、がんばれ。
頑張って無理だったらここを見ろ。
ttp://tohoho.wakusei.ne.jp/wwwperl1.htm#String
ttp://tohoho.wakusei.ne.jp/wwwperl1.htm#Esc
024524302/03/06 18:46ID:???
はぅん。こりゃ失敬。&さんくす。
024675とか02/03/07 00:36ID:???
YO-YOのお方、今日もいるかな?文字化けの件、解決しました!!
&jcode::convert(\$value,"euc","","z");
これが動作してませんでした。第3引数がダメなようですが、何故でしょう??
それから、sjis用対策をいろいろ教わりましたが、例えば、発言者名が全部半角カナだと
getcodeの返り値がundefなので文字化け対策の部分は全部素通りしてたのでした。
実際携帯から書き込む人は何故か名前を全部半角カナで書く人が多いし、
本文も全部半角カナで書かれても困るので、フォームから漢字一文字をこっそり送って
その漢字コードに全部合わせることにしました。
若干不明な点を残しつつも文字化けにおびえる日々からは開放されました..。
0247nobodyさん02/03/07 06:17ID:WTUe3Qf1
age
0248ぷうすけ02/03/07 17:26ID:+Mtxnc4D
  <form action='./hoge.cgi' method='GET'>
  <input type=password name='pass' size=8 maxlength=8>
  <input type=submit name='button' value='認証'>
  <input type=hidden name='data' value='hoge'>
  </form>

perlのCGIにて、このようなHTMLを出力して、パスワードを
入力させようとしています。テストはWin2000 + IE5.5です。
パスワード用のテキストボックスにパスワードを入力して、
「認証」ボタンをマウスでクリックすると、正しく3つの要素が
QUERYとして送信されます。しかし、キーボードでEnterを押したり、
スペースバーでボタンを押したような場合、
name='button' value='認証'
の情報が、まったく送信されません。どうしてこのようなことに
なるのでしょうか?

最後に、ありがとうございました。>240さん
助かりました。

0249nobodyさん02/03/07 17:31ID:???
>248
認証を押してないから。
0250ぷうすけ02/03/07 18:08ID:+Mtxnc4D
>249
押したYO!!
0251nobodyさん02/03/07 18:19ID:???
マウスボタンから指紋を検出してます。
0252nobodyさん02/03/07 20:08ID:???
>248
submitタイプにname属性はありません。
つーか、パスワードをGETで送るな。
0253nobodyさん02/03/07 20:33ID:???
>>252
あるが?
0254nobodyさん02/03/07 20:35ID:???
>>252
>submitタイプにname属性はありません。
付けちゃいかんって事は無かったと思うが。
0255nobodyさん02/03/07 20:48ID:???
>248
俺はWin2k+IE5.5SP2でちゃんと送れる。
マウスクリック、スペースキー、エンターキー全て正常に送れた。
0256nobodyさん02/03/07 21:01ID:???
なんかこの板、おそろしく人いないんですけど。
0257nobodyさん02/03/07 23:26ID:???
んな、いまさら・・・・
0258nobodyさん02/03/07 23:51ID:???
>>248
やってみたらテキストフィールドでのEnterだけ入らなかった。
スペースでもEnterでも、ボタンを押せば送られる、という事かな。
ついでに、<input type="button" name="button" value="認証"> だと何やっても送られなかった。
仕様なのかな。
025925802/03/07 23:53ID:???
<input type="button" name="button" value="認証" onClick="forms[0].submit()">
でした。
0260nobodyさん02/03/08 00:57ID:???
普通に鯖においてあるcgiの中身は何とかして見れないもんですかね?
0261nobodyさん02/03/08 01:13ID:???
>260
板違い
0262nobodyさん02/03/08 09:05ID:???
フォームから読み込んだ"文字列"を”%95%B6%8E%9A%97%F1”のように変換するにはどうすればいいのでしょうか?
0263nobodyさん02/03/08 09:20ID:???
>>262
受け取った時点で既にそうなってないか???
0264相撲車02/03/08 09:39ID:ol/NmE/5
telnetで自分のプロバの自分のいつも使ってるメール鯖にアクセスしてメール送る
CGIをperlで書いて、実験には成功したけど、これ設置したら不正アクセス禁止法に
触れますか?
取り合えず、プロバの契約内容には言及してなかったんだけど。
0265nobodyさん02/03/08 09:43ID:???
>>264
法律勉強しな。

一応それはsendmailで第三者中継させるのと大して変わらないね。

後、一般に自分のSMTPのアカウント晒して大丈夫なのか?と。
0266相撲車02/03/08 09:44ID:ol/NmE/5
↑のような方法をとったのは、自宅鯖だけどDNSがMXレコード登録できないやつ
だったため。大目に見て欲しいのですが、どうなんでしょうか…。
0267nobodyさん02/03/08 09:46ID:???
>>266
BIND使ってください。
026826202/03/08 09:47ID:???
なんかよくわからんが
~ s/(\W)/'%' . unpack('H2', $1)/eg;
ってやったらうまくいきました
0269相撲車02/03/08 09:53ID:???
>>265さん
即レスありがとうございます。

法律の概要には目を通してみましたが、サービスの範囲内の利用と思えた
ので使用してみました。法律本文を見ないとダメなんですかね?

mail from:プロバの自分のメアド

と書いておけばいいんでしょうか?
ちなみに、smtpサーバはなぜか認証要りませんでした。そして、メールは
自鯖へアクセスしてきた人がメンバー登録したときのパスワード送信用と
いう利用目的なので、設置したとしても利用者は内容を編集できないです。
そんなのでも危ないでしょうか?
0270相撲車02/03/08 10:01ID:???
>>267
BINDっていうものの存在を知らなかったので、調べてみます!
やっぱり相談してみるもんですね〜。ありがとうございます。(T_T)
0271nobodyさん02/03/08 10:56ID:inegq+pM
ファイル全体を@LINESに格納したて、こねくり回した場合、
現在の@LINESに格納されている文字列全体が何バイトなのかを
知る方法ってないものでしょうか?
0272nobodyさん02/03/08 11:08ID:???
>271
好きな方法を使えや。
1.
$size = length join "", @LINE;

2.
$size = 0;
$size += length for @LINE;
0273相撲車02/03/08 19:39ID:ol/NmE/5
BINDの設定のし方がよくわからんです…。一応webmin使ってるんですが、言葉の
意味がわからず、ネット中を転々…。
どこか有効な解説サイトご存知の方、教えてはくださらぬか?
DNSの役割はわかるけど、細かい用語が意味不明という程度の知識です。無いに
等しいです。
0274nobodyさん02/03/08 20:50ID:JBnFAxe6
Basic認証を1000人単位で行いたいので、一件ずつ登録するわけには
いかないのですが、UserIDとPassをcsv or tabで管理するので、
それを一括で登録するだけのcgiってありますか?
0275nobodyさん02/03/08 22:39ID:???
>>273
はぁ、吉外に葉物だな。
そういうことはインターネットの仕組みを仕組みを理解してからやれ。
0276相撲車02/03/08 23:39ID:XJfzC2SF
>>275
忠告どうもです。
でも、仕組み理解っていってもキリが無いと思うのですが、どの程度把握しておけ
ばいいのですか?普段全く使っていない頭をどうにか使いたいのですが。

昨晩から、ずっと悩んでいた問題は結局MXレコード記録してくれないDNSに登録して
いてもAレコード参照してくれるということで解決したっぽいです。そして現在Postfis
が動かないという問題に直面。
まぁ、オレみたいな厨は家庭内LANで実験でもしてからWANに繋げろ、ということで。
0277相撲車02/03/08 23:42ID:???
sageるべきでした。sorr...
0278nobodyさん02/03/09 14:09ID:qqwIDSpw
perlパスのはじめの「#!」は消していいんですか?
0279nobodyさん02/03/09 15:22ID:???
>>278
何を根拠に?

WindowsNTとか#!を解釈しないサーバならいいけどさ。
0280 ◆VJMxnfn. 02/03/09 17:36ID:???
これからPerlを勉強したいと思うのですが初心者にお勧めの書籍を教えて下さい。
配布しているCGIのデザインを変えたり、とかはあるんですが最初から作ったことが無いのです。
とりあえず掲示板やアクセスカウンタなどを作りたいのですが・・

KENTと作ろうPerlでCGI はどうでしょうか?
0281nobodyさん02/03/09 17:56ID:???
>>280
アンチKENTなので不許可。
すぐわかるPerl
0282    02/03/09 19:02ID:???
>>280 本なんか買わないで、ここで学びなはれ。
0283nobodyさん02/03/09 19:03ID:???
>>282
いいえ、本は基本の宝庫です。
0284初心者02/03/09 19:43ID:q9DQVSy0
Perlの質問です。
HTMLのinput type="text"
name="data0","data1","data2",..."dataX"までの入力データを
ループで処理したいのですが
$iがループするとして

$ran = "data$i";
$length = (length($in{"$ran"}));

$lengthが文字数をとってくれないのですが、おかしいところありますか。
0285nobodyさん02/03/09 20:11ID:???
>>284
$length = length($in{"$ran"});


ところで、$ranの内容は?
当然それくらいデバッグしてんだろ?
0286nobodyさん02/03/09 23:36ID:???
HTML から CGI を呼び出す際に <a href="./cgi-bin/bbs.cgi">BBS</a>
とかファイル名に ./ を付けた形で呼び出しますよね?これは必須ですか?

あと、その呼ばれた CGI が内部で呼び出すデータファイル等にも時々 ./ が
ついてたりしますが、環境 (httpd 等) によっては無いと不味いんでしょうか?

いや、unix 系で安全の為にカレントは PATH に含めて居ないのは知っていますし
その場合の実行方法が PATH を含めなきゃいけないのも知っています。
もしかして RFC の規定とかでしょうか?
0287nobodyさん02/03/09 23:38ID:???
>>286
カレントを示すだけだから無くても動くね。
0288nobodyさん02/03/09 23:40ID:???
>>287
CGIはURLと言う文字列によって場所が一意に決まる。
httpdはURLとファイルシステムをマッピングし、実行する。
URLにはPATHと言う概念がないため、誤実行の恐れはない。
028928602/03/10 00:05ID:???
>>287-288
やっぱそうですよねぇ。
web 上のサイトで (本は持ってないので) よく見かけるんですが、
あれは一体どういう理由で付けてるんでしょうねぇ。
まぁ本人に聞かないとわからないのかもしれませんが、みんな一様に
あの記述方でしたのでずっと気になっていますた。

結論: ./ は要らない。
0290nobodyさん02/03/10 00:07ID:???
>>289
無くても良い、だな。
029128902/03/10 00:09ID:???
>>290
「あっても動く」ではなくて?
ということは本来 (の企画?) は要るって事でしょうか?
0292nobodyさん02/03/10 00:13ID:???
あっても間違いでは無いじゃん。
呼び出し元のファイルの場所がカレントになるんだから./は冗長ではあるが間違いではない。
使える以上否定するのは得策ではない。
0293nobodyさん02/03/10 00:19ID:???
俺も「無くても動く」が正解だと思う。
029429102/03/10 00:19ID:???
ああ、そういう事ですか、わかりました。ありがとうございます。
私の頭が少し unix shell 寄りだったという事ですね (苦笑
0295初心者02/03/10 00:50ID:nlk31vWZ
>>285
レスありがとうございます。
追加して状態の説明です。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−

ループ内に
 $ran = "data$i";

 print "RAN2:$in{$ran}<br>";
  ↑を組み込むと、ちゃんと$in{$ran}を出してくれます。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−

$i=1のとき

$in{"data1"}の内容は日本語文字であったり英語半角であったあり色々ですが、

$length = (length($in{'data1'}));
print "$length";
print "$in{data1}";
では両方とも正常に値を出すのですが、
{}内に変数を入れるとうまく動きません。

$length = (length($in{$ran})); →何の数字も出しません。
$length = (length($in{"$ran"})); →何の数字も出しません。
$length = (length($in{'$ran'})); →$ranを変数として認識しません。
0296nobodyさん02/03/10 00:53ID:???
だからさっさとその気持ち悪いかっこをはずせ。
リストと勘違いされても文句は言えん。
0297nobodyさん02/03/10 02:03ID:???
>>294
話終わったみたいだけれど ./が無いと動かないshellあるべさ?
./にPATH通ってないの。
unixよりとか云々じゃなくPATHを理解してないんじゃ?
0298nobodyさん02/03/10 02:19ID:???
>>297

>>286
>unix 系で安全の為にカレントは PATH に含めて居ないのは知っています

の事でわ???
0299nobodyさん02/03/10 04:03ID:OHdoISBH
CGIの改造を依頼したいんだけど、
一昼夜くらいで早く作ってくれる所あるでしょうか。
難しい改造ではないので、わかる人にはちょちょいだと
思うのですが。
0300nobodyさん02/03/10 04:16ID:???
>>299
キチンと説明出来るなら、やってくれる人居るかもね。
スクリプト改造工房 Part4
http://pc.2ch.net/test/read.cgi/php/1012839651/l50
0301nobodyさん02/03/10 05:33ID:8R88bCKC
日記CGI探してるんだけど、条件としては
シンプル。観覧者による一行レス可能。
画像UPロード(これはタグで回避できるからいいとして)
みたいなのないですかね?
探してみたものの、一応あったんだけど、レス生成欄がでかすぎたりとか…。
ゴミゴミしてるとか。カレンダー形式とか。
要望に会わないのばかりで困ってます;-;
とにかくシンプルでタグ可能観覧者による一行レス可能。
な日記CGIないでしょうか?
知ってる方いましたら教えてくれると嬉しいです。
0302Name_Not_Found 02/03/10 05:56ID:???
ちょっと勉強して改良しちゃうってのはどう。
0303nobodyさん02/03/10 05:59ID:???
>301
スレ違い。
0304nobodyさん02/03/10 06:18ID:???
まあ、そうだけど
>>301
>レス生成欄がでかすぎたりとか…。
見た目なんてHTMLなんだから適当にいじっちゃえ
0305nobodyさん02/03/10 06:40ID:???
あぁ><
探してますスレッドありました><
すいませんでしたー。
向こうで聞いてミマス!
0306 ◆a/globe2 02/03/11 03:22ID:WZhG/BNp
うpろだを作ったんですが
Macからだと拡張子を取れないようです
どうすればいいんでしょうか
0307nobodyさん02/03/11 03:40ID:???
>306
環境変数にコンテントタイプが出てるかもしれない。
投稿者にファイルの種類も投稿してもらえば手間がないけど,信頼度は低い。
ファイルのヘッダ調べるのが確実だけど,手間がかかるためほとんど使われない。
0308 ◆a/globe2 02/03/11 03:44ID:WZhG/BNp
>>307
コンテントタイプの振り分けを細かくすればいいんですかね、、、。
一応拡張子を入力してもらう欄を設置するとか(Macの場合のみ表示で)
0309nobodyさん02/03/11 04:35ID:???
>306
ファイルヘッダ読むのは難しいですか?
できそうなら↓とかが参考になりますよ
http://www.wotsit.org/default.asp
0310A Patch02/03/11 06:35ID:7j09hA/V
Apache を使ってローカルで CGI のテストをしたいのですが
AnHttpd のように Perl.exe のパスを決め打ちできないでしょうか?
プロバイダにアップする CGI で #!local/usr/bin などと書いておきたいので
#!C:/Perl だと困るんです。アップするたびに書き換えるのも面倒だし
それがために Perl を C:\local\bin にインストールなんて馬鹿げたことも
したくないです(複数のサーバを持っていてそれぞれ Perl のパスが
違ったら終わりじゃない?)。

出来ないのであれば素直にあきらめますが何か設定があれば
あるいは何らかの方法があれば教えていただきたいです。
0311nobodyさん02/03/11 14:25ID:???
>>310
バッチファイルを作る。

@echo off
perl a.pl


で、それを実行。
0312nobodyさん02/03/11 19:44ID:???
kentと作ろうperlでCGIのことなんですけど
うちの近所の本屋はCGI関連の本が少ないんですよ。
だからkentと作ろう〜の内容もよく知らないんです。

そこで聞きたいのですが、kentと作ろうperlでCGIには
Windows98にperl本体をインストールするところや
if文などの関数についても解説してるでしょうか?
0313nobodyさん02/03/11 20:08ID:???
>312
ttp://tohoho.wakusei.ne.jp/
ここの方がよっぽど親切。
0314 ◆a/globe2 02/03/11 21:00ID:1vbRZmtL
うpろだでもう1つ質問があるのですが
指定した投稿できるファイルの最大容量
よりファイルサイズがちっさいのにエラーになります
インターナルサーバーエラなのでCGIだしてるエラーではないようです
cgi-lib.plのReadナントカっていうサブルーチンを取り込んでるんですが
それが問題かなともいます
imgboradなどではそのようなエラーは出ないようなので
どういうことなのかなと思っております
わかる人がいらっしゃれば教えてください
0315nobodyさん02/03/11 21:09ID:???
>>314
ローカルでコマンドラインで試せ。いきなりWeb鯖で動かすなボケ。
0316nobodyさん02/03/11 22:24ID:???
>>314
>インターナルサーバーエラなのでCGIだしてるエラーではないようです
99.9%以上CGIが出しています。
0317nobodyさん02/03/11 23:37ID:???
>>314
取りあえず鯖のエラーログ見れ。
031831002/03/12 00:40ID:???
>311
すみません、意味がわかりませんでした。
0319nobodyさん02/03/12 01:15ID:???
広告をWEBに掲載してるんですが、クリック数を調べて欲しいと言われました。
SSIで一括表示してるんですが、リンク先のURLを変えずクリック数をカウントするにはどうしたらいいでしょうか
0320nobodyさん02/03/12 01:27ID:???
>319
リンク先にアクセス解析を入れてもらう。
0321nobodyさん02/03/12 02:10ID:???
>>319
CGIを経由して、クリックをカウントした後、Locationで飛ばす。
0322sage02/03/12 03:08ID:XpAJ+W0c
>319
>リンク先のURLを変えず
って部分が引っかかるのだけど・・・
結果的に表示されるページが変わらなかったらいいって事?
それとも<a href="http://www.hoge.com">という
タグ自体が変わったらまずいって事?
通常は321さんの方法を使うけど、これだとタグ自体が変わるしね。
0323ぷうすけ02/03/12 07:00ID:al7KKwB3
あるURIのhtmlを、CGIから取得することは、可能でしょうか?
言語はperlです。
0324nobodyさん02/03/12 09:29ID:???
>>323
可能です。
0325ぷうすけ02/03/12 10:10ID:NiSfFmxx
>324さん
すんません、書き方悪かったです。
わかる方、方法を教えてください。私は何処へいくべきでしょうか?
0326nobodyさん02/03/12 10:17ID:???
>325
googleに行って「LWP」や「socket」を「perl」と組み合わせて検索。
0327nobodyさん02/03/12 14:20ID:???
文字コードを UTF-8 にした CGI を作成しようとして躓いてます。
CGIを UTF-8 で保存して実行してみたら、一行目でエラーが出ました。

> perl -v
This is perl, version 5.005_03 built for i386-freebsd
>perl utf8.cgi
Unrecognized character \357 at utf8.cgi line 1.

テキストエディタで見るとちゃんと先頭は #!/usr/bin/perl で始まっていて、
改行も LF になってるのですが、バイナリエディタで見ると、
# の前に EF BB BF というなぞのコードがくっついており、
これのせいでエラーが出ているようです。
これを動くようにするにはどうしたらいいんでしょう。

作成に使ったのは Windows 用の Dana というテキストエディタなのですが、
バイナリエディタで先頭3文字削除しても、
また Dana で編集するとその3文字がくっつくし…。

つか、CGI を UTF-8 に改造するってページ検索したけど、
こんな問題どこにもなかったし。秀丸とかだといいのかなあ。

…長文スマソ。入り口以前のところでつっかかってて泣きそうです。
0328nobodyさん02/03/12 15:13ID:???
>>327
utf8に対応しているのはperl5.6以降です。新しいperlを入れましょう。
それとutf8プラグマ使った方が良いでしょう。use utf8;
Perlのユニコードの対応は万全とはいえないので、・・・(以下略)
0329nobodyさん02/03/12 15:58ID:???
>>328
アドバイスありがとうございます。
たしかにWin用のActive Perl(5.6.1)では動きました。
そこで、perl5.6 が入っている biglobe にアップして
実験してみたのですが、500エラーになります。

さっきとは違うエラー内容なのですが、やはり
#!/usr/bin/perlの行でひっかかってます。
エラーログには utf8.cgi: Exec format error としかないのですが、
まったく同じ内容のスクリプトを SJIS で保存してうpすると
こっちは問題なくうごきます。

ちなみに、テストスクリプトは
#!/usr/local/bin/perl
print <<__EOD__
Content-type: text/html;


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;">
<title>UTF-8 で出力するCGI のテスト</title>
</head><body>
<h1>UTF-8 マンセー( ´∀`)</h1>
</body></html>
__EOD__
こんな感じです。
0330nobodyさん02/03/12 16:03ID:???
>>329
print <<__EOD__;
;は付いてるか?
0331nobodyさん02/03/12 16:04ID:???
それとuse utf8;を使ったほうがええやろ。
0332nobodyさん02/03/12 16:39ID:???
>>330
げ!
まあ、2行目のprint 以下になんもないので、見逃してください。

>>331
telnet でシェルに入って実行した時のエラー
>./utf8.cgi
./utf8.cgi: 鏤殖!/usr/local/bin/perl: not found
use: not found
: not found
print: not found
>
( ゚д゚)…ミンナハドウヤッテクリアシテルノカワカラナイヨ

あきらめて SJIS で HTML4.01 Strict な CGI にします・゚・(つД`)・゚・。
0333327=329=33202/03/12 16:43ID:???
最後の文、意味不明だ。無視してください。
0334nobodyさん02/03/12 17:00ID:???
>>332
#!/usr/local/bin/perl
↑これはあっているの?
#!/usr/local/bin/perl5 とかだったりしない?
033533202/03/12 17:14ID:???
>>334
同じソースをSJISでうpすると動くんですぅ。

SJIS で動作している CGI をそっくりそのまま UTF-8 に変換して
エラーが出てるんです。
UTF-8 に変換したのがローカルで perl utf8.cgi で動いてるのも確認してるし、
use utf8; もいれたし、
FFFTP でアスキー送信のボタンがへっこんでるの確認して送信してるし、
うpされたファイルのバイト数が減ってる(CRの分)確認してるし。

他にどこを確認したらいいでしょうか。
0336nobodyさん02/03/12 17:49ID:???
うpと書くのを止める
0337nobodyさん02/03/12 17:53ID:???
>>335
>作成に使ったのは Windows 用の Dana というテキストエディタなのですが、
>バイナリエディタで先頭3文字削除しても、
>また Dana で編集するとその3文字がくっつくし…。
これが原因でperlのパスがおかしくなってると思う。
>>332のエラーは実行するプログラムが見つからないってことでしょ。
普通のテキストエディタ使おうよ。
033833202/03/12 17:53ID:???
自己レス
utf8.cgi を

#!/usr/local/bin/perl
use utf8;
require "utf8.pl";

にして、ascii で保存。
utf8.pl を

print <<__EOD__;
Content-type: text/html;


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;">
<title>UTF-8 で出力するCGI のテスト</title>
</head><body>
<h1>UTF-8 マンセー( ´∀`)</h1>
</body>
</html>
__EOD__
1;

にして、UTF-8 で保存。サーバーにうpして動きました。
よその人がどうやってるのかわからんけど、
今後はこの方法で作成します。みなさんありがとう。
033933202/03/12 17:55ID:???
>>337
普通のテキストエディタってどんなのかわからないんですが、
xyzzy も terapad も同じように先頭3文字くっつきやがりました。
疲れました。
0340nobodyさん02/03/12 18:18ID:???
>>339
秀丸はEF,BB,BF=BOM(Byte Order Mark)付いてないみたい。
ほとんど秀丸しか使ってないからそういうものだと思いこんでしまった。ゴメン。
EmEditorは付けるか付けないか選べた。notepadは付いてた。
とにかく#!をシェルに読ませないことには動かないでしょう。BOMは邪魔だね。
0341nobodyさん02/03/12 18:32ID:???
>>339
xyzzyだとM-x change-fileio-encodingでutf8nするとはじめの3バイトつかないよ。
utf8だと付く。
ってことでがんばれー。
0342nobodyさん02/03/12 18:36ID:ip/rxryK
perl 5.6.1使用。
use File::Basename; で宣言してbasenameを使いたいんだけどうまくいかないです。
$filename = 'C:\tmp\mona.jpg';
$basename = basename($filename,"");
だけど$basenameには全く処理のされないまま$filenameと同じモノが…
何が悪いのかな?
034333902/03/12 18:36ID:???
>>340-341
なるほど。先頭につけないエディタもあるんですね。
xyzzy に utf8 と utf8n と2つあるのはそういう意味だったんですか。
とりあえず、メインエディタを Dana から xyzzy に移行することにします。
ありがとう。
0344nobodyさん02/03/12 18:45ID:???
>>342
こんなんでどう?
use File::Basename;
fileparse_set_fstype(MSDOS);
$filename = 'C:\tmp\mona.jpg';
$basename = basename($filename,"");
print $basename;
034534202/03/12 18:55ID:???
>>344 うわっ、うまく行きましたがな!ありがとうです。
fileparse_set_fstype(MSDOS); ってのが多分ミソなんでしょーけど
これを自動判定させる方法って無いもんでしょうか?
敵はUNIXもMacも想定せなアカンので…
0346nobodyさん02/03/12 19:08ID:???
fileparse_set_fstype(MSDOS) if $^O eq 'MSWin32'
0347nobodyさん02/03/12 19:15ID:YNqS+HR0
LWP::Simple;
って、タイムアウトを設定できますか?
0348nobodyさん02/03/12 19:17ID:???
>>347
がたがた言うならsocket bind acceptでも使えば?
0349nobodyさん02/03/12 19:26ID:YNqS+HR0
わかった、素直にLWP::UserAgent使うよ。。
0350ぼくフェロー02/03/12 19:54ID:/5Jn0bAA
質問します.

ある変数 $a に入っている文字列が数値を表すか否か
判断するにはいかなる手段がありますでしょうか?

たとえば,次のように判別したいのですが.

$a = 100 ==> 数値
$a = -1.0 ==> 数値
$a = 1e-100 ==> 数値
$a = 'abc' ==> 数値ではない.
035134202/03/12 19:58ID:???
>>346 おにーたん、$^O をどこで使ったらいいのかわからないよ(´Д`;
$FORM = new CGI;
$filename = $FORM->param('img');
fileparse_set_fstype(MSDOS) if $^O eq 'MSWin32';
if ($filename) {
 だらだら処理
}
反応してくれないよ…
035234602/03/12 20:38ID:???
ちょっとまった。
「敵はUNIXもMacも〜」って、CGIを動かすブラウザがUNIXかMacかわからんってこと?
UNIXかMacかわからないサーバで動かせるスクリプトを組もうとしているのかと。

$basename =~ ($filename =~ /[\/\\:]([^\/\\:]+)$/)[0];

でいい?
\とか:とか/が入ってるファイル名は上手く取れないが、一応Win/unix/Mac対応。
035334602/03/12 20:39ID:???
× $basename =~ ($filename =~ /[\/\\:]([^\/\\:]+)$/)[0];
○ $basename = ($filename =~ /[\/\\:]([^\/\\:]+)$/)[0];
スマソ。
0354nobodyさん02/03/12 23:18ID:???
素直にFile::Spec使えや
0355nobodyさん02/03/12 23:20ID:???
パッケージ厨 VS システムコール厨

とかってスレッド立ててください!
0356nobodyさん02/03/12 23:52ID:OrWEi2X1
このスクリプトで新着スレッドを横に並べる、新規投稿、返信フォームを2ちゃんねる
と同じように同一ページに持っていきたいです。識者の方、教えてください。

http://uho.s7.xrea.com/cgi-bin/yy2ch/
0357識者02/03/12 23:55ID:???
教えません。
0358nobodyさん02/03/12 23:55ID:???
>356
新着スレ表示するところで<BR>を書かない。
ページにフォームを書き出す。
0359名無しさん02/03/13 00:48ID:???
HNS使いたいんだけど、設定がイマイチ(というかサパーリ)わからん。
・・・というのはここで相談してOK?
0360nobodyさん02/03/13 01:37ID:???
説明書を読んだ証拠と自分で頑張った形跡を見せればややOK
0361名無しさん02/03/13 01:59ID:???
>>360
うむ、もう一日粘ってみる。
0362nobodyさん02/03/13 06:41ID:P3iVCwDD
yy2chですが、<BR>ではなく<OL>と<LI>削除でいけました。
0363nobodyさん02/03/13 06:44ID:???
>362 よくやった!
0364nobodyさん02/03/13 22:30ID:0MaZQ+xJ
ASPを勉強したいのですが、いい参考書ないですか?
0365nobodyさん02/03/13 22:35ID:12II/YOS
Cで作る、CGIの本でなんかイイ参考書あったら教えてください、おねがいしマッスル
0366nobodyさん02/03/13 22:41ID:???
ttp://pc.2ch.net/test/read.cgi/php/988809842/
↑このスレッドで聞いた方がいいのでは?
Perl,CGIってなってるから、Perl限定じゃないでしょ。
0367nobodyさん02/03/13 22:43ID:???
>>365
月宮あゆのPerl教室 Part.4
http://pc.2ch.net/test/read.cgi/php/1014096840/l50

君と同じ質問してた人がいる。
後、いい答えも出てる。
0368nobodyさん02/03/13 22:53ID:12II/YOS
>>366-367
助かりました、どうもです!
0369nobodyさん02/03/14 11:58ID:zKtt7BTb
CGIの中からWinSockって使えるの?
たとえばVC++でCGI作って、特定のIPとデータ交換するとか。
ボケボケの質問でスマソ。
0370nobodyさん02/03/14 12:34ID:???
>369
なんでVC++?
普通にperlで組んでクライアント側にHTTP処理するコード書けば良いだけでは?
037136902/03/14 13:24ID:jSrpksxZ
>>370
ユーザの要求なもんでどうにも・・・。
あと、サーバーごと納めるんで、コードとか見せられないんですよ。
0372nobodyさん02/03/14 13:33ID:???
>>369さん
もちろん出来ますが、CGIでやる意味が分かりません。
クライアントの要求が来てから、データ交換にいそしんで、
長い間応答しないのは問題があると思います。
なぜデータ交換をCGIでやらないといけないの?
037336902/03/14 15:07ID:OQoEp2Bk
>>372さん。どもです。
データ量そのものはたいしたものではないのですが、
とある機器(WEBサーバーLAN内にある)を、インターネット経由で
ブラウサから制御しようとしているんです。
その辺の知識がまだ乏しいので、今のところCGIでできるかな?
と思っているのです。もっといい方法があるのでしょうが
今の私には思いつきません(あせ
0374nobodyさん02/03/14 18:47ID:???
>>373
それ、トロイの木馬という気がしてきた・・・。
セキュリティホールになる可能性大ですぞ。

外部の馬の骨−CGI(80番はファイアウォールで許可)−内部からしかアクセス出来ない機器

0375perlでgzipされたhtmlファイルの作成02/03/14 20:06ID:gUGqkp2C
perlでhtmlページを作成したいですが、
gzipで圧縮した、htmlファイルを作成する方法を教えてください。
0376nobodyさん02/03/14 20:17ID:???
>>375
apacheの設定。
0377nobodyさん02/03/14 23:41ID:yfgde3s4
>>374
ドキッ!!
ちょっとまだ良く理解できてないですが、なんかまずそう?!
そういう構成のシステムそのものに問題があると言うことですか?
0378nobodyさん02/03/14 23:50ID:???
実質ファイアウォールが無効化。

例を挙げると、ブラウザから打ち込んだコマンドを実行し、結果を返すだけのCGIがある。
CGIはサーバサイドで動くので、CGIの実行権限の範囲でCGIの使用者は何でも出来ることになる。
(CGI設置者であったりnobodyであったり。)

そのCGIに認証が必要ないとすれば、誰でも使えるシェルが公開されているに等しい。

ファイアウォールでいくら外部からのアクセスを拒否したとしても、そんなCGIがあれば
簡単に外部からの侵入を許すことになる。

いくら対外的なセキュリティを強化しても、外部の人間の言いなりになる産業スパイが自社にいてはまったく意味がない。
みたいな。
0379nobodyさん02/03/15 00:28ID:jooXMX1O
>>378
わかるようなわからないような。うう・・・。
認証と言うことは、たとえばパスワードのようなもので
ログインみたいなことをさせるとか、同時にそのCGIを使えるのは
一人のみに制限するとか(できるのかしら?(あせ))
CGIの持っている機能そのものは、当然コードに埋め込まれているものだけですが、
その存在だけで、第3者がサーバーに侵入できてしまうと理解して良いんですよね。
インターネット経由での遠隔操作でそういう制御をやってる人って
どうやって実現しているんだろう。
インターネットは使わないほうが良いって事なのかしら?
ふ〜、この世界って奥が深いのですね。どーしよ。
0380名無し ◆Rr5/ytdE 02/03/15 00:36ID:YznOuxlh
ttp://dream.lib.net/room/cgi/e_upboard.html
このBBSをhttp://netfirms.com/の
無料鯖に置くにはどうしたらいいですか?
cgi-binに画像ファイルが置けないのでこれでファイルをアップしても
保存できないのです。他の場合でもどう対処したらよいでしょうか?
お願いします。
0381名無し#02/03/15 01:37ID:???
age
0382nobodyさん02/03/15 07:16ID:???
>>380=381

  ミミ彡ミミミ彡彡ミミミミ
,,彡彡彡ミミミ彡彡彡彡彡彡
ミミ彡彡゙゙゙゙゙""""""""ヾ彡彡彡
ミミ彡゙         ミミ彡彡
ミミ彡゙ _    _   ミミミ彡
ミミ彡 '´ ̄ヽ  '´ ̄` ,|ミミ彡
ミミ彡  ゚̄ ̄' 〈 ゚̄ ̄ .|ミミ彡
 彡|     |       |ミ彡
 彡|   ´-し`)  /|ミ|ミ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ゞ|     、,!     |ソ  <  そんなに急ぐなよ道は長い
   ヽ '´ ̄ ̄ ̄`ノ /     \________
    ,.|\、    ' /|、
 ̄ ̄| `\.`──'´/ | ̄ ̄`
    \ ~\,,/~  /
     \/▽\/
0383perlでgzipされたhtmlファイルの作成02/03/15 11:26ID:2gjP1S/1
>>375-376
gzipが/bin/gzipにあります。
CGIでページをgzip化して表示できるので、このデータをそのままHTMLに書き出せたらと思ったのですが。
0384nobodyさん02/03/15 11:30ID:???
>>380
cgi-binに画像が置けないのなら別のディレクトリに置けばいいだけの話。
初期設定で画像のおき場所をフルパスで指定すれば良し。
ex:$datafileurl = 'http;//www.2ch.net/imgdir/';
リンク先を見てないのでうまくいかないかも。
0385 ◆AnfivKvE 02/03/15 11:54ID:???
KENT-WEBさんの掲示板に、
トリップ機能を搭載したいと思っています。

過去ログを見たけどわかりませんでした。
>>4-5にある「スクリプト改造工房」はdat逝きでした…

できれば、2ちゃんと同じトリップが使えたらいいなと思っています。
当方スキルは、一応Perlを初心者向けリファレンス本を読んでいる程度です。

トリップを搭載したいのは、プチ★ボード(petit.cgi)です。

どなたか、コレを実現された方、もしくは実現方法をご存じの方、
教えて下さい。よろしくお願いします。

KENT-WEBさんのサイト
ttp://www.kent-web.com/

プチ★ボード配布コーナー
ttp://www.kent-web.com/bbs/petit.html
0386nobodyさん02/03/15 12:54ID:???
$in{'name'} =~ s/\x23(.+)$/substr(crypt($1,$1), 2,10)/e;

書き込み処理のちょっと前くらいに入れておくべし。
あと、スレ違い。
http://pc.2ch.net/test/read.cgi/php/1012839651/
0387 ◆AnfivKvE 02/03/15 13:35ID:???
>>386
スレ違い申し訳ありませんでした。

ありがとうございました。
こんな感じに実装させて頂きました。

#トリップ機能
if ($in{'name'} =~/◆/){
$in{'name'} =~ s/◆/◇/g;
}
if ($in{'name'} =~/#/){
$in{'name'}=~ s/\x23(.+)$/ "◆".substr(crypt($1, substr($1, 1)), -8)/e;
}
0388nobodyさん02/03/15 14:11ID:???
>>387
騙されてるって・・・
↓こうしなさい。

$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;

sub trip {
my $key = shift;

my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x20\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;

return substr(crypt($key, $salt), -8);
}
0389nobodyさん02/03/15 15:11ID:???
ローカルでCGIをブラウザで見れないんですけど何か方法ないですか?
0390nobodyさん02/03/15 15:12ID:???
>>368
何故わざわざ"\x23"?"#"じゃダメな理由でもあるの?

>389
HTTPD入れれ
0391nobodyさん02/03/15 15:19ID:???
>>389

Apacheインストールしなきゃ動かんバカ
0392 ◆AnfivKvE 02/03/15 15:28ID:???
>>388
エ━━(゚Д゚lll;)━━ッ!?

騙されてたんですか?
0393 ◆AnfivKvE 02/03/15 15:30ID:???
>>392補足

petit.cgiじゃないんですけど、
一応動いてるみたいなんですけど…

http://www.pweb.ne.jp/~fpm2/wtalk/
(ほのぼの板用チャット)

あっ、でも元のキーに「~=」とかが含まれてると
動作しませんでした。
0394nobodyさん02/03/15 15:31ID:???
>>390
>何故わざわざ"\x23"?"#"じゃダメな理由でもあるの?
そのほうがかっこいいから。
それと>>387みたくtr演算子を使う時に#じゃ困る。
0395nobodyさん02/03/15 15:36ID:???
>>394
俺はエディタの表示が#以降がコメントの色になるから\x23使ってる。変かな?
0396 ◆AnfivKvE 02/03/15 15:37ID:???
>>388サンの方法、ちょっと試してみます
0397 ◆4tC6xcI. 02/03/15 15:52ID:???
◆AnfivKvE です。

>>388ので設置してみました。m(_ _)m

#aa~=aa

見たいなトリップはやっぱり認識されないですね…
試しに、「#aa~=aa」でここに書き込んでみます。
むこうでは、◆4tC6xcI.になってしまいました。

それ以外のトリップは全て大丈夫でした!(´-`♪
0398 ◆NAOKmK0E 02/03/15 15:54ID:???
ありゃ・・・同じですね・・・

#c+~=y:Arは、◆SLjREV3gになってしまいました
0399nobodyさん02/03/15 15:58ID:???
>>397
「#aa~=aa」でも問題なく◆4tC6xcI.になったが・・・
基本的にどんな文字でもOKなはず。日本語でも、制御文字でも。
#$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
コメントアウトして、入力がおかしくないか確認したら?
040039902/03/15 16:00ID:???
ごめん間違ってた。
0401テスト ◆NAOKmK0E 02/03/15 16:04ID:???
>>399
レスありがとうございます。◆AnfivKvE です。
試してみましたので報告致します。 m(_ _)m

コメントアウトしてテスト#c+~=y:Arという名前で入ってみました。
結果→テスト#c+~=y:Ar

元に戻してテスト#c+~=y:Arで入室
結果→テスト◆SLjREV3g

2ちゃんねるで、テスト#c+~=y:Arで発言
結果↑

トリップと名前は全てコピペしました。
040238802/03/15 16:50ID:???
>>401
これでどうかな。
sub trip {
my $key = shift;

my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x21\x23-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;

return substr(crypt($key, $salt), -8);
}
0403テスト ◆NAOKmK0E 02/03/15 17:05ID:???
>>402
トライしました!完璧でした!

テスト#c+~=y:Ar → テスト◆NAOKmK0E

ありがとうございます! ヽ(`Д´)ノ ウワァァン

コレから先に見る方が居るかもしれないので、
成功したヤツを書いておきます!
本当にありがとうございました!

ここからソース
書き込み処理直前、cookie発行後。

#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;


ここから、トリップ作成サブルーチン

#----------------#
# トリップ生成 #
#----------------#
sub trip {
my $key = shift;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x21\x23-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
040438802/03/15 18:29ID:???
>>403
全然完璧じゃなかった・・・
また出直してきます。
0405 ◆AnfivKvE 02/03/15 18:31ID:???
>>404=383
いやいやいやいや
お陰様で設置できました
本当にありがとうございました
m(_ _)m
040638802/03/15 18:42ID:???
>>405
そうじゃなくて、まだ間違っているので注意。
「#"」ってダメじゃない?
0407 ◆AnfivKvE 02/03/15 18:43ID:???
>>406
マジですか・・・?ちょっと試してみます。
040838802/03/15 18:45ID:???
&quot;になってるだけだった・・・
本格的に鬱だ・・・
0409 ◆AnfivKvE 02/03/15 18:46ID:???
2ちゃんねる #"aaaa→◆TVWmrXp6
Perlスクリプト #"aaaa→◆RlscB8VU

確かにダメでした…
0410 ◆AnfivKvE 02/03/15 18:46ID:???
>>408
?? ̄∇ ̄??
041138802/03/15 18:46ID:???
HTMLエスケープを先に処理しないとダメみたいね。思わぬ落とし穴。
041238802/03/15 19:00ID:???
たぶんこれで大丈夫だと思う・・・
sub trip {
my $key = shift;

$key =~ s/"/&quot;/g;
$key =~ s/</&lt;/g;
$key =~ s/>/&gt;/g;

my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;

return substr(crypt($key, $salt), -8);
}
0413 ◆AnfivKvE 02/03/15 19:04ID:???
>>412
早速やってみます!
041438602/03/15 19:12ID:???
お、いつのまにかすごい数のレスが。
>>388ごめん、騙したつもりはなかったんだけど。
確かにsubstrの使い方とかよく覚えてなかったし、テストもしてないけどさ。
ところで、s/&/&amp;/g; もしたほうがいいんでは?
0415 ◆AnfivKvE 02/03/15 19:15ID:???
結果報告です!

#"aaaa
2ちゃんねる→◆TVWmrXp6
Perlスクリプト→◆TVWmrXp6

#<aaaa
2ちゃんねる→◆DdwRIQ4Q
Perlスクリプト→◆DdwRIQ4Q

#>aaaa
2ちゃんねる→◆nxB5V1NE
Perlスクリプト→◆nxB5V1NE

今度こそ完璧です!できました!
他の普通のトリップも全部変換できました!
ありがとうございました!
他に見る方が居るかもしれないので、>>413に
ソースを書いておきます!

お世話になりました。m(_ _)m
041638802/03/15 19:16ID:???
>>414
2ちゃんの名前欄は&はエスケープしないかな?よくわからんけど。
0417 ◆AnfivKvE 02/03/15 19:16ID:???
>>414さんのもふまえまして…

書き込み処理直前、クッキー発行後
<ここから>
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
</ここまで>

#----------------#
# トリップ生成 #
#----------------#
sub trip {

my $key = shift;

$key =~ s/"/"/g;
$key =~ s/</</g;
$key =~ s/>/>/g;
$key =~ s/&/&/g;

my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;

return substr(crypt($key, $salt), -8);
}
041838802/03/15 19:18ID:???
>>417
ふっふっふ、&quot;とかをそのまま入力してはダメなのだ。
&についてはそのままで大丈夫そうな気がする。
0419 ◆AnfivKvE 02/03/15 19:22ID:???
&は変換しない方がいいみたいでした

#&aaaa

$key =~ s/&/&amp;/g;
2ちゃんねる → ◆QQXkbDVs
Perlスクリプト → ◆JwJPq806

#$key =~ s/&/&amp;/g;
2ちゃんねる → ◆QQXkbDVs
Perlスクリプト → ◆QQXkbDVs


>>417
つーかここにちゃんと表示されてないですねw
0420 ◆AnfivKvE 02/03/15 19:24ID:???
>>418
いやぁ… (´ー`ゞ

というわけで書き直します。
トリップ生成ルーチン

書き込み処理直前、クッキー発行後
<ここから>
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
</ここまで>


#----------------#
# トリップ生成 #
#----------------#
sub trip {

my $key = shift;

$key =~ s/"/&quot;/g;
$key =~ s/</&lt;/g;
$key =~ s/>/&gt;/g;

my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;

return substr(crypt($key, $salt), -8);
}
0421 ◆AnfivKvE 02/03/15 19:39ID:???
ありがとうございました
お世話になりましたm(_ _)m
0422 ◆0z.4Is5E 02/03/16 08:16ID:???
すいません。便乗質問になっちゃうんですけど、
YY-BBSにこのトリップ機能をつけるにはどこにこのコードを
付け足せばいいんでしょうか?

### --- ログ書き込み処理 --- ###
sub regist {

  |
  略
  |

#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;

}

### --- トリップ生成ルーチン --- ###
sub trip {

my $key = shift;

$key =~ s/"/"/g;
$key =~ s/</</g;
$key =~ s/>/>/g;

my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;

return substr(crypt($key, $salt), -8);
}

こんな感じにしてみたんですが書き込みのときに名前を「名無しさん#aaaa」
でやったんですがそのまま「名無しさん#aaaa」と表示されてしまいます・・
どこを直せばいいんでしょうか?
0423 ◆AnfivKvE 02/03/16 08:29ID:???
>>422
機能、スレ違いを指摘されたので続きは

スクリプト改造工房
http://pc.2ch.net/test/read.cgi/php/1012839651/

でやりましょうか♪
俺に出来ることなら手伝いますんで。
0424 ◆0z.4Is5E 02/03/16 09:12ID:???
>>423

ありがとございます。では移動します。
0425nobodyさん02/03/16 09:30ID:???
>>422
ファイルにデータを書き込む直前。
0426nobodyさん02/03/16 19:29ID:SKQhp2KR
プロの方に質問です、
CGIのスクリプトを書くにあたって、
処理ごとにファイルを分けるのと、ひとつのファイルにすべての
処理をさせてしまうのとどちらがどう違うのでしょうか。
それぞれ利点欠点などはあるのですか?
0427nobodyさん02/03/16 19:34ID:???
>>426
コンポーネント化しやすい。
0428QQQQQQQ02/03/16 22:36ID:???
perlCGIにアクセスがあったときに、該当HTMLファイルに飛ばしたいのですが、
このHTMLファイルはログの増加にあたり移動したりするので、
ブラウザのアドレスバーにこのURLを表示したくありません。
かといって全行perlに読まして書くのは処理が重くていやなのです。

location: を使ってみましたがURLがかわってしまいました。
どうかご教授ください。
0429親切な人02/03/16 22:40ID:???

ヤフーオークションで、凄い人気商品、発見!!!

「高性能ビデオスタビライザー」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
0430nobodyさん02/03/16 22:41ID:???
>>428
いまいち意味不明だが、シンボリックリンクじゃだめなのか。
0431nobodyさん02/03/16 23:25ID:???
>>428
ブラウザのアドレスバーに表示させない。だけならば、フレームに隠すのがお手軽。
0432nobodyさん02/03/17 00:22ID:???
>>428
もしかしてこれで処理が重くなるほどすごいhtmlなの?
open F, "go_this_page.html";
while (<F>){ print; }
close F;
0433QQQQQQQ02/03/17 00:41ID:???
なぜか書き込み失敗してるみたいのような??
>>430
シンボリックリンクはHTMLファイルにするのでしょうか。理解できませんでした?
>>431
フレームは確かにできそうですね。ありがとうございます。でもフレーム未使用の方法はないのかに。
>>432
別に1件1件はたいして重くないですが、それでもHTMLに飛ばすよりはだいぶ重いように思います。
0434nobodyさん02/03/17 01:31ID:4IUULEh/
RedHat7.2JでCGIサーバとして動作させようと思っています。
ルート直下の/cgi-binでCGIを動かそうと思っているんですが、
その際CGI動作確認とかFTP転送とかするためにCGIのアカ
ウントを作成するのがいいかなあと思うんですが、みなさんは
どうしていますか?
0435nobodyさん02/03/17 07:57ID:???
>434
板違い
http://pc.2ch.net/linux/
0436nobodyさん02/03/17 07:58ID:???
リンクミス・・・
http://pc.2ch.net/test/read.cgi/linux/1014651391/
0437nobodyさん02/03/17 09:32ID:???
サンクス
向こういってみます
0438nobodyさん02/03/17 16:02ID:???
sendmail 使って大量のメールを送信するときのことなんだけど。
1.サーバの負荷をおさえつつ送信するなんかイイアイデア。
2.途中で逝っちゃった場合の状況の知り方と対処。
なんつーのが知りたいっす。Webで検索かけまくったけどコレって
いうのがナイと思う。
0439nobodyさん02/03/17 16:32ID:???
まずなんで大量のメールを送りたいのかを小一時間(略
0440nobodyさん02/03/17 16:36ID:???
>>439
ああ、メールマガジンのCGI作ってるんですわ。
0441nobodyさん02/03/17 17:01ID:???
>>440
物は言いよう。
通常、それはCGIの範疇ではないぞ。
0442nobodyさん02/03/17 17:18ID:???
>>441
物は言いようって何かひかかるが、ようはスパムかなんかのCGI作ろう
とかしてんだろって言いたいのかな? そんな事はしてないが・・・。

ま、それはそれとして、例えば 5 件 send したらちょっと休むとか、キュー
を介すのとそうじゃないのでどうなのかとか、そういう事が聞きたいんだけ
ど、CGIの範疇じゃない? 今のところ、ループでぐるぐる回して送信してい
るだけなんでサーバの負荷の大きいのかなあと思った次第。
板違いならスマソ。。。
0443nobodyさん02/03/17 20:50ID:???
上のキャップなんだけど
my $salt = substr("${key}H.", 1, 2);
ってどういう意味(ここ ${key}H.)
あと
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
って何を何に?
0444nobodyさん02/03/17 20:52ID:???
8桁作るのに、cryptとmd5、どっちがどの程度重いの?
0445nobodyさん02/03/17 21:12ID:???
>443
perldoc -f tr
perldoc perlop

>444
perldoc Benchmark
0446nobodyさん02/03/18 02:50ID:e/HSAhdE
perlでアクセスカウンタを作ってうまく動いたんですが、フレームを使ったページに
組み込むとエラーが出ます。SSIのincludeでアクセスカウンタcgiを呼び出して使って
たんですが。通常のページとフレームを使ったページ内に入れるのとでは何が違うの
でしょうか?
0447nobodyさん02/03/18 03:07ID:???
>446
答え飽きました≒過去ログ読めやがれ
0448nobodyさん02/03/18 03:22ID:???
>>443
キーが短い時も種を生成できるようにしてあるんでないのかな。
044944602/03/18 03:23ID:e/HSAhdE
>>447
フレーム アクセスカウンタで2ch発言検索はしたけどHITしなかったんだよ〜
0450nobodyさん02/03/18 08:26ID:???
>>446
   ____                      l
         \              ―┼―ヽ  \
           |   ―――――    /   |    ゝ
          _/              /    |
                        /    _」
                l               /    || ヽ   ―┼―       l
    ヽ ┌―┐   ―┼―    ┌―――┐ / ̄ ̄ ̄7| | ――  ―┴―     _|__/
   _  .| ┌┤ ――┼――   |     |      |    ― 「 ̄ ̄ ̄ ̄|  / | / ̄\
    | | ̄ ̄ ̄|   /     |     |      /     ―   | |   /   |/     |
    人| □ 」 /   \   |     |      /    ┌‐┐   | |    |  /|      /
   ノ  ヽ―――  ̄ ̄ ̄ ̄ヽ  ├―――┤    /     ├‐┤ ノ  |_」 ヽ/  ヽ    _/

      _____    ────
     | __        ┌───┐
     | ┌┐ ─┼   ├───┘
      ./ └┘   |    / ─┼─
    /  l /  ヽ |   ノ   /─┐
    /  ──    」      /   」


   |    ||            /
| ̄ ̄ ̄ ̄ ̄| ||____|_   /
|       |        /|   / ̄ ̄ ̄ ̄| ̄ ̄
        |       / |          |
        /     /   .|           |
      /          _|          /
   ̄ ̄ ̄                 ___/
0451nobodyさん02/03/18 08:50ID:???
ヴォケってなんですか?
0452nobodyさん02/03/18 08:53ID:???
夢の中へ行ってみたいと思いませんか?
0453nobodyさん02/03/18 08:55ID:???
>>452
ふふっふ〜さ〜ぁ〜
0454nobodyさん02/03/18 09:09ID:???
いやーん 男とデュエットしたことなかったのに。
0455nobodyさん02/03/18 22:00ID:???
php と同じようなコマンドセットを perlで使用できるモジュールとかありませんか?
0456nobodyさん02/03/18 23:37ID:???
>>455
php使えばいいだろ
0457nobodyさん02/03/19 00:32ID:???
うっさい ぼけーーー
もともとperlとPHPが似ているので、
使用状況に応じて簡単に変換できたらよさそうじゃんか。
0458nobodyさん02/03/19 00:37ID:???
>>457
で?言いたいことはそれだけかい?知ったかくん。
0459nobodyさん02/03/19 03:54ID:rsFIfwz6
既存のデータファイルのデータからHTMLファイルを作り出すスクリプトを作ったのですが、
ローカルでは動作するのにサーバーに転送すると必ずInternal Server Errorになります。

エラーログを見てみるとPremature end of script headers:だけ書かれていました。
またエラー箇所を探したのですが、起動のたびにエラーになるlineが移動して1箇所には定まりません。

これはメモリ不足によるプロセスの強制終了の可能性と考えたほうがいいのでしょうか?
よろしくお願いしたします。
0460nobodyさん02/03/19 04:39ID:???
@
0461nobodyさん02/03/19 05:19ID:???
>>459
headerが出力されてません。ってエラーなわけで、
ローカルでは動いてるということは…

スクリプトで使ってるモジュールがサーバには無い、とか予想してみる。
0462nobodyさん02/03/19 09:05ID:???
>>458
あなたの言いたいことはそれだけ?無駄にレスをする方。
0463じゃ代弁しとくよ02/03/19 09:48ID:???
言いたいことは「礼儀を知らんガキがでかい口を聞くな」
0464nobodyさん02/03/19 10:20ID:???
知らない人のことをわかっているかのようにそれも「ガキ言葉」で代弁しているあなたこそガキじゃん。
でも正直なところはいいね。
ガキ流れは、
「php使えばいいだろ」のあたりからなってしまいました。オレもガキじゃん。
046545902/03/19 12:54ID:mcTfQ2cd
>>461
ありがとうございます。
特にモジュールは使用していません。ごく基本的な関数のみで作ってあります。

何より不可思議なのは、どこの時点でエラーになるのかがCGIを動かす度に
変わるということです。例えば...
ループA{
 ループB{
  サブルーチン
 }
}
となっていて、
1回目はループAの47回目、ループBの71回目ではエラーがすでに発生
2回目はループAの47回目、ループBの70回目ではエラーがすでに発生
3回目はループAを37回目、ループBを69回目ではエラーはなし
4回目はループAを37回目、ループBを70回目ではエラーはなし
5回目はループAを37回目、ループBを71回目ではエラーはなし
という具合に、いつまで経ってもエラー箇所が一箇所に定まらないのです。
ただループAが37回目のどこかで発生するのは確かなんですけど。
0466nobodyさん02/03/19 13:08ID:???
>465
ソース見せれ。
0467 02/03/19 14:31ID:ZgA62M2H
2ちゃんねるのクッキーをまねしようとしてるんですが
クッキー読むスクリプトはみつかるのですが
保存するところがみつかりません、もしかしてCGIのほうでやってるんでしょうか?
0468nobodyさん02/03/19 15:02ID:???
なにいってるのかわかりません
0469nobodyさん02/03/19 15:24ID:???
>>467
訳がわかりません。
047045902/03/19 19:30ID:LM+0/bSK
>>461 >>466
サーバー会社へ出していた同様の質問の回答がやっと帰ってきました。
------------------------------------------------------------
確認いたしましたところ、お客様がご利用のCGIは XXX共有サーバーの
CPU Time の制限にかかり、サーバーエラーとなっていました。

XXX共有サーバー は、共用のサーバーですので、高負荷状態に
陥ることを防ぐためにこちらの制限を行っております。
-------------------------------------------------------
ということでした。すみません、解決しました。
またよろしくお願いします!
047112302/03/19 21:45ID:???
cgiとかでよく使われている、Locationってどんな働きをするんですか?
0472nobodyさん02/03/19 21:49ID:???
>>471
俺は「使っているのを見て知った」んで、どうやってLocationを知ったのか謎だ。
後学のために教えてくれ。
ところでGoogleって知ってるか?
0473nobodyさん02/03/19 22:04ID:???
http://pc.2ch.net/test/read.cgi/php/988890976/175-
0474nobodyさん02/03/20 23:54ID:Hs1uL44x
CGIを使用してフレーム全解除属性(target="_top")を
付けた時のようにページを転送することは可能ですか?
0475nobodyさん02/03/20 23:56ID:Hs1uL44x
えーと
print "<a href=\"http://hogehoge.nu\" target=\"_top\">転送</a>";
とかではなくてLocationで飛ばすような感じです。
0476nobodyさん02/03/21 05:04ID:???
>474-475
CGIは基本的にブラウザの挙動をいじれないので,不可能と思われ。
フォームでターゲット指定したり,JavaScript系を使ったりすれば可能。
0477nobodyさん02/03/21 06:52ID:???
>>474-475
普通は
<form action="hoge.cgi "target="_top">
のようにCGIを呼び出してLocationで飛ばすけど、
それじゃ不満かい?
0478nobodyさん02/03/21 08:45ID:???
Locationが使えないサーバって存在するん?
0479nobodyさん02/03/21 09:09ID:???
うちのサーバlocation使えへん…
0480nobodyさん02/03/21 11:12ID:???
>>478
トクトクが使えない
0481nobodyさん02/03/21 15:27ID:SSRvR1vK
KENTの掲示板でも半角を使用したいのですが、
&jcode'convert(*value,'sjis');
↑部分を取り除くと使用できるようになるのはわかるんですが、
EUCなどの対策になにかいい方法はないでしょうか?
0482nobodyさん02/03/21 15:27ID:SSRvR1vK
すみません。
KENT×
KENT氏○
0483nobodyさん02/03/21 15:35ID:???
     ((        ) ))
    (( (     )   ) )
   ( (  (    )  )   ) 
  ’ ((          ) ) )
     ( (( | |  ) )
  ‘     (( | | ) )  ‘
     ’    | |                    春ですね。
   ○イザベラ! | |  ’ ξ○ξ スミス・・・
 −+−    | |      V ,
   |     | |     |  
  /\    /  \    /\
0484hanamogera02/03/21 15:37ID:c8Atj9bt
下のソースでフォームデコードすると、$commentの中身だけなんだか数字になっちゃうんです。
何ででしょうか?

sub decode {
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
$buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value, "sjis", "", "z");
$value =~ s/&/&\;/g;
$value =~ s/</\<\;/g;
$value =~ s/>/\>\;/g;
$value =~ s/\"/\"\;/g;
$value =~ s/<>/\<\;\>\;/g;
$value =~ s/<!--(.|\n)*-->//g;
$FORM{$name} = $value;
}
$name = $FORM{'name'};
$title = $FORM{'title'};
$comment = $FORM{'comment'};
$comment = ~ s/\r\n|\r|\n/$br/g;
$mode = $FORM{'mode'};
}
0485nobodyさん02/03/21 15:38ID:???
>481
大崎さんのやりかたを参考にして,きっちり判定するとか。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Code
0486nobodyさん02/03/21 15:52ID:???
>>483
アッソ。デ?
0487nobodyさん02/03/21 21:53ID:zzUVZQ93
一定時間ごとにCGIを自動起動させたいんですがどのような方法あるでしょう?
アクセスカウンタが20いくごとに起動、とかの方法はわかるんですが、
一定の時間ごとに起動させるというのは何を使えば良いでしょうか?
0488nobodyさん02/03/21 22:08ID:???
>>487
cron。
定期的に出てくる質問だなぁ・・・。
0489nobodyおっさん02/03/21 22:11ID:???
クーロンタブをつかうか、
あなたが一定時間ごとにアクセスしてこのときに実行させるか
あなたならどっち?
0490nobodyさん02/03/21 22:12ID:???
cronって権限無いとほいほい使えないよね。
0491nobodyさん02/03/21 23:01ID:rmv2GYdP
>>487
ある一定の時間を指定して、CGIの呼び出しがあったときにチェックして、
その時間が過ぎていたら処理を行い、次に処理する時間もそのときに指定する
チェックルーチンを入れれば、cron使えなくても擬似的に出来るよ。
0492487です02/03/21 23:39ID:zzUVZQ93
>>488-491
ありがとうございます。cronですね、使えるかなぁ・・・
491さんの方法もよさげだけどやり方わかんないす。
0493nobodyさん02/03/22 00:01ID:???
参考にならんと思うが、漏れは昔こんなプログラムを動かしていてプロバイダから警告がきた。
これは止めておいた方がいいぞ。
while(1){
# ここにコード
sleep(60*60);
}
0494nobodyさん02/03/22 00:14ID:p0uEX1fS
使う必要がないもんだから俺は知らないけど、確か、
年月日時分秒をシリアルな数値で獲得できるだろ?
処理後にあれを一日だったら1日分足して置けばいいんだよ。
いろいろやり方ありそうだよな。ほかにも。
どっちにしてもそんなに難しい処理じゃないと思うよ。

一日単位だったら、単純に日にちがカワったら処理をして、新しい日にちに
書き換えたらいいんだし。
0495487です02/03/22 01:24ID:esA90bh2
cronを使わない(使えない)場合に定期的にcgiを自動実行させるためには
アクセスカウントUP時に何回かに1度の割合で実行させる、という方法以外に
実行させる方法あるのですかね?
>493の方法は常にpgを動かしておきsleepが切れたときに本実行させる
ものだと思いますが止めたほうが良いとのこと。
>494のようにどっかに日時を持っておくとして、それを起動させる方法はどんなのですか?
0496nobodyさん02/03/22 01:46ID:???
正直、487がこれほど馬鹿だとは思わなかった。
0497nobodyさん02/03/22 01:48ID:???
>>495
要するに、ヒントじゃなくてソースそのものが欲しいって事?
いくら出すの?
0498nobodyさん02/03/22 03:33ID:???
>>497
基地外
いくら出すのはいいすぎ。
>>487
君は馬鹿。
0499厨房02/03/22 15:53ID:3P7KS9SJ
アップローダー作れる人いますか?
http://zurubon.strange-x.com/uploader/
を色々見てみたんですけど、CG�Tが初めてなので
全く分かりません。
何かヒントまたは代わりに作って下さる方いらっしゃらないでしょうか?
050050002/03/22 16:06ID:???
ヒントも作るのも無理。
CGIが初めての奴に対しての"ヒント"ってなんになると思う?
数行のスクリプトならまだしらまだしも
アップローダーを作れか?あほ。


0501nobodyさん02/03/22 16:08ID:???
まだしらまだしも×
まだしも○
スマソ
050249902/03/22 16:20ID:3P7KS9SJ
御免なさい
0503nobodyさん02/03/22 16:35ID:???
#!/usr/bin/perl
print <<"__FORM__";
Content-type: text/html

<FORM ACTION="$ENV{SCRIPT_NAME}" ENCTYPE="multipart/form-data" METHOD=POST>
<INPUT TYPE="FILE" NAME="file">
</FORM>
__FORM__
print <STDIN>;

ブラウザが送るデータを観察してデコードする方法でも考えればぁ?(゚Д゚)
0504nobodyさん02/03/22 17:01ID:KCkKfXvI
質問です。
メールフォームでメールを送ろうとしたのですが送信ボタンを押して待てど暮らせど
出るはずの確認画面が出ません。
これは送信されてないものと考えていいのでしょうか。
重複送信になるのが怖くて再送信することができずにいます。
0505nobodyさん02/03/22 17:02ID:qjFFNAMI
おまえの回線状況なんぞ知るか!
050650402/03/22 17:50ID:???
回線状況は正常だと思うんですけどね。
っていうか再送信して大丈夫か否かってのが訊きたいんですけどダメですか?
直接相手に問い合わせしようにも他の連絡手段が無いんですよね
(イベントの特設ページみたいなサイトだし)
0507nobodyさん02/03/22 18:53ID:fazmqrAM
>>506
( ´_ゝ`)フーン
0508nobodyさん02/03/22 21:43ID:tj2D5lJW
Computer Graphic Interface?
0509nobodyさん02/03/22 22:02ID:???
>>508
Common Gateway Interface

マジレスした方が>>508は恥ずかしい。
0510nobodyさん02/03/23 00:43ID:???
お邪魔いたしまする。CGIぷろぐらまーの方々
息抜きにコンビニのラーメンでもいかがでしょうか
http://wakaz.lolipop.jp/index.html
0511nobodyさん02/03/23 02:39ID:???
春だね♪
0512nobodyさん02/03/24 02:20ID:Gb9vu2Wc
掲示板などで認証つきの管理者モードを作る場合で、
かつ管理者モードが複数ページに渡る場合、
最初のページで一度認証済ませれば次のページへは認証なしで入れる、
というようにするにはどうすればいいですか?
最初の認証でパスワードをpost送信させると2ページ目では取得できないし、
どこかにフラグを立てて置くと、ログアウトさせないとフラグが残ってしまうし、
HTTP_REFEREを調べるとしても、どうしても不正にアクセスできてしまいます。
やり方が悪いのでしょうが、うまい方法が思いつきません。
普通はどういう方法で認証しますか?
0513nobodyさん02/03/24 02:22ID:???
>>512
<input type="hidden" name="pwd" value="$FORM{pwd}">
051451202/03/24 02:29ID:Gb9vu2Wc
え?え?
なんだか、見慣れない手法で、ちょっと混乱。考え中。
とりあえず、ありがとうございます。
0515nobodyさん02/03/24 02:35ID:???
>>512
Basic認証使えとか言っちゃうのは反則ですか?
051651202/03/24 02:49ID:Gb9vu2Wc
>>513
すみません。もうちょこっとヒントいただけませんか?
>>515
反則です(笑)。今のところ動作環境がBASIC認証とやらを使えるかどうか
わからないのです。ちなみにBasic認証を使うとどの時点まで
アクセスの権限が持続するんでしょう?後学のために..。
0517nobodyさん02/03/24 03:04ID:???
>>516
確か一度IDとパス入れれば、
ブラウザ閉じるまでブラウザがIDとパスを保持して
自動的に認証してくれるはず。
051851202/03/24 03:15ID:Gb9vu2Wc
>>517
なるほど!そいつは便利ですね。いづれ使うことになると思います。
ありがとうございます。
>>513
これ、いくら考えても意味がわからないんですが、
誰か解説してもらえませんか?
0519nobodyさん02/03/24 03:19ID:???
hiddenでパスワードを持ち歩くちゅう意味でしょ
0520nobodyさん02/03/24 03:21ID:KxmQdHuE
起きてるか?
0521nobodyさん02/03/24 03:26ID:???
・Basic認証のREMOTE_USERを利用
・CookieにセッションIDでセッション利用
・Cookieのみ
・HIDDENで持ち歩く

一応安全だと思う順
他にも方法ある?
052251202/03/24 03:29ID:Gb9vu2Wc
ああ、なーんだ。>>513をCGIで書き出すということですか。
てっきりフォームから変数名を送って巧妙に2ページ目にパスワードを
引き継ぐ方法があるのかと思ってました。
ソース見たらパスワードばれちゃいますけど、普通そんなもんですかね。
basic認証とやらが使えなければ、この方法でやります。
ありがとうございました。
052351202/03/24 03:31ID:???
あ、遅レスでした。
>>521さんありがとう!
参考にさせていただきます。
0524nobodyさん02/03/24 14:09ID:???
ソース見たらパスワードがバレるって、
入力した本人しか見れないんだからいいんじゃないの?
0525nobodyさん02/03/24 17:42ID:???
>>524
あ、、
俺も>>512と同じように
passwdばれるよなぁ
って思ってた。。。w
納得。
052651202/03/24 20:32ID:Gb9vu2Wc
>>524
そうなんですけど、じゃあ、>>521でクッキーのみより安全性下になってるのは
どういう訳なんでしょう。ピュアな質問です。
0527よくわからんけど02/03/24 20:47ID:???
串のキャッシュに残る事があるとか?
052851202/03/24 20:47ID:???
プロキシとか関係あるのかな。全然わかんないや。
セキュリティスレ発見したので、そっち読んでます。
052951202/03/24 20:48ID:???
おお!また遅レスでした。やっぱそんな感じでしたか。ありがとうございます
053052102/03/24 21:03ID:???
hiddenは偽装が容易だからcookieのが安全かなと
使わないとは思うけどGETしたら見えちゃうし、
万が一その状態でリンクで飛んだ先にアクセス解析ついていたら
パスワードがログに取られてしまう。
0531nobodyさん02/03/24 21:10ID:???
>531
偽装について説明きぼん。
053251202/03/24 21:11ID:???
ほほう。なるほど。ところで、質問ばかりで恐縮ですが、
GETしたら〜というのはどういう状況ですか?
こちとらPOSTのフォーム書き出してるのにGETしてしまう状況とは?
053351202/03/24 21:13ID:???
>>531
なんらかの手段で不正にパスを知った人が自分でフォーム書いて
ログインできるってことじゃないですかね。それがクッキーより容易ということ?
0534nobodyさん02/03/24 21:14ID:???
>533
>なんらかの手段で不正にパスを知った人が
その時点でセキュリティ終わってる。
053551202/03/24 21:19ID:???
>>532
自己レス、>>530で使わないとは思うけど〜ってありましたね。失礼。
>>534
セキュリティは終わってるけど、521が言ってるのはそういう意味じゃないですかね。
まあ、終わってることは終わってる。
0536nobodyさん02/03/24 21:25ID:???
>535
パスワードがわかった時点で改造フォームを作る必要がないと気付いてくれよ。
堂々と正門からパスワード入力して入っていけばいいんだから。
053751202/03/24 21:27ID:???
あはは。そりゃそうだ。
失礼!頭悪くてすみません!
0538nobodyさん02/03/24 22:31ID:???
今使ってる掲示板がF5押すと再試行して2重投稿しちゃうんですけど、
防ぐ方法ありますよね。たぶん初歩的なことですけど、書いてあるページ教えてちょ。
0539nobodyさん02/03/24 22:46ID:Gb9vu2Wc
http://pc.2ch.net/test/read.cgi/php/988727833/363-
これかなあ。
0540nobodyさん02/03/24 22:47ID:???
>>538
F5を押さない。以上。
0541nobodyさん02/03/24 22:53ID:???
>>539
ようは書き込み後に違うページにジャンプさせるんでしょ。
そのやり方が分からんのですが・・・・
0542nobodyさん02/03/24 22:59ID:???
>>541
Locationって書いてるじゃん。何が分からんのよ。
Location+二重投稿で調べれば直ぐ出るだろ?
0543nobodyさん02/03/24 23:09ID:???
>>542
print 'http://'.$ENV{'HTTP_HOST'}.$ENV{'SCRIPT_NAME'}."\n\n";
これですか?
0544nobodyさん02/03/24 23:13ID:???
http://pc.2ch.net/test/read.cgi/php/988890976/175-
http://pc.2ch.net/test/read.cgi/php/988890976/175-
http://pc.2ch.net/test/read.cgi/php/988890976/175-
0545nobodyさん02/03/24 23:28ID:???
# [ログ書きこみ処理]
#
sub wri_ {
if ($FORM{'name'} eq "") { &er_("名前が未入力!"); }
if ($FORM{'comment'} eq "") { &er_("コメントが未入力!"); }
if (length($delkey) > 8) { &er_("削除キー は8文字以内!"); }
if ($locks == 1) { &lock_; }
open(LOG,"$log") || &er_("Can't open $log");
@lines = <LOG>;
close(LOG);
if($bup){&backup_;}
($knum,$kd,$kname,$kem,$ksub,$kcom) = split(/<>/,$lines[0]);
if ($name eq $kname && $comment eq $kcom) { &er_("二重投稿は禁止です!"); }

この { &er_("二重投稿は禁止です!"); }ってとこにlocationとやらを入れるんですか?
0546nobodyさん02/03/24 23:37ID:???
>545
違う。
1回目の書き込みが終わった時点で飛ばすの。
0547nobodyさん02/03/24 23:51ID:???
>>545
ネタか?ネタじゃないのならWebProg板に来るレベルじゃないな。
0548nobodyさん02/03/25 00:06ID:???
<td colspan=2><input type=submit value="送信する"$fm>
<input type=reset value="リセット"$fm></td></tr></table></form><hr>
_KEY_
}
$total=@NEW;
$page_=int(($total-1)/$a_max);
if ($FORM{'page'} eq '') { $page = 0; }
else { $page = $FORM{'page'}; }

$end_data = @NEW - 1;
$page_end = $page + ($a_max - 1);
if ($page_end >= $end_data) { $page_end = $end_data; }
foreach ($page .. $page_end) {
($namber,$date,$name,$email,$d_may,$comment,$url,$font,$ico,$type) = split(/<>/,$NEW[$_]);
if($email ne ""){ $name="<a href=\"mailto:$email\">$name</a>"; }
if($d_may eq ""){ $d_may="No Title"; }
if($link_i == 1){
if ($url ne "") {
$url="<a href=\"http://$url\" target=\"_top\"><img src=\"$i_dir/$l_img\" border=0 width=\"$h_wid\" height=\"$h_hei\"></a>";
}
} elsif ($link_i == 0){
if($url ne ""){$url="<a href=\"http://$url\" target=\"_top\">http://$url<;/a>"; }
}
print <<"_HTML_";
この辺ですかね?
0549nobodyさん02/03/25 00:12ID:???
>>548
あのさー、中学生?
言葉使いとかなんかおかしくない?
なんでそんなスキルで
この辺ですかね?
とかなの?
あっ気が付いた!だから馬鹿なんだ!
0550nobodyさん02/03/25 00:13ID:oozWjwB1
発言直後は、通常HTML書き出ししている部分には行かずに
いったん処理を終了させ、自動的にそのcgiを再実行。
そのためにlocationで自分自身に飛ばす。使い方は検索すれば出てくる。
0551nobodyさん02/03/25 00:13ID:???
>>549
バカだからこのスレ来てるんだけど?
0552nobodyさん02/03/25 00:18ID:???
>>551
( ´_ゝ`)フーン
0553nobodyさん02/03/25 00:21ID:???
__,,..、、- - - .、、...,,___
       ,,、‐''"~ ̄            ̄``''‐、、
     /                      \
    /                         ヽ
   /                           ヽ
   /  / ~~` '' ‐- 、、 ,,__   __ ,,..、、 -‐ '' "~~\  ヽ
   |  /    __           ̄       __   ヽ  |
  .|  {  ´   ‐- ....__    __... -‐   `   } .|
  .|  〉,,・^'' - .,,      ~  i ~    __,,.- ^`・、.〈  |
./ ̄|  /,/~ヽ、  `'' ‐--‐ ,.| 、‐-‐'' "~   _ノ~\,ヽ | ̄ヽ
| (` | / ヽ,,_____`‐-、_、..,,___ノ八ヽ___,,.._-‐_'"´___,, ノ ヽ .|'´) |
| }.| ./'   \二二・二../ ヽ  / ヽ、二・二二/  'ヽ | { |
.| //| .|          / |  |. \         | |ヽヽ|
.| .| | .|        /    |  |.    \       | | | .|
|ヽ.| |      /     .|  |.     ヽ      .| .|./ .|
 |  .| |     /      |  |        ヽ     |  | /   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ヽ .| |    /       .|  |       ヽ    |  | /  | >ここでしょうか? 
  .ヽ.| |    /     '二〈___〉二`       ヽ   |  |./  <   馬鹿な548がいるのは。
    | |          `-;-′         |  |     |    
     iヽ|.      ,,... -‐"`‐"`'‐- 、、     |/i       \_________
     |  ヽ     /...---‐‐‐‐‐----.ヽ    /  .|
     |   ヽ.    ,, -‐ ''"~ ~"'' ‐- 、    /   |
    .|    ヽ         !          ./   .|
    ,,|     ヽ.         |        ./     |、
    |\.     ヽ            /     /.|
   .|.  \.      ヽ、____   ___/    /   .|
   '     `            ̄ ̄       ´     '
0554nobodyさん02/03/25 00:23ID:???
それにしても548はスキルも無い癖に
口の利き方が悪いな。
0555nobodyさん02/03/25 00:27ID:???
>551
利口になる気のない馬鹿は一生馬鹿だよ。
馬鹿が利口になるためには利口になろうと努力しないといけない。
0556nobodyさん02/03/25 00:35ID:???
>>538-555
自作自演に3000ムネオ
0557nobodyさん02/03/25 00:42ID:oozWjwB1
クッキーに初挑戦してまして、先ほどCGIでクッキー書き込み成功したんですが、
そのクッキーファイルを削除してもう一度実行したら書き込めなくなってしまいました。
その間、ちょこっとCGI自体書き換えたんですが、
print "Set-Cookie: ore_site_id=ore; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
print "Content-type: text/html\n\n";
こんな感じで書き出してます。perlです。
何が原因だかさっぱりわからないので、ひょっとしたらスレ違い、
板違いになるかも知れないんですが、
何か原因思い当たる方いらっしゃいませんでしょうか。
宜しくお願いします。
055855702/03/25 01:12ID:???
自己レスです。なんだか激しく板違いだったようですが、ブラウザ再起動したら書き込めました。
0559hanamogera02/03/25 16:29ID:WG0pi2qc
http://www.sgmt.local/cgi-bin/develop/develop2.cgi
↑携帯用の掲示板スクリプト作ったんですが、
ログがある程度たまるとWAP2.0端末からアクセスできなくなるんです・・・
『接続できません。しばらくたってからリトライしてください。』って出るんです。
でも、Apacheのログにはエラーはありません。
WAP2.0端末はXHTMLを読むということだったので、XHTMLで記述してます。
Another HTML-link gatewayでチェックしてみたら、95点でした。
いったい何がおかしいんでしょうか?C5001Tで動作確認してます。
0560nobodyさん02/03/25 16:47ID:???
Perlで作るCGIを解説してるページで人気のページを教えてください。
0561nobodyさん02/03/25 16:49ID:PUm89G3u
Linux、Redhatでcrontabを使ってcgiを起動させたいんですが質問です。
cgi-binの中にproc.cgiというファイルを置いて、それをcrontabで動かしたいんですが
ファイル書き込みだけが出来ないみたいです。cgiの中身は
open(SDATA, "<sdata.dat")|| die "File 'sdata' Open Error.";
@a_sdata = <SDATA>;
close(SDATA);
この間で@a_sdataの中身を編集してます。
open(WDATA, ">kdata.dat")|| die "File 'kdata' Open Error.";
print WDATA @a_sdata;
close(WDATA);
print "@a_sdata\n";
こんな感じでファイルを読み込んで、編集して、別ファイルに書き込むというcgiなのですが、
ブラウザにアドレスを打って直接アクセスで起動するとファイルの書き込みは正常に終わり、
編集したデータが表示されます。
ですがcrontabから起動すると、編集したデータはメールになって送られてくるんですが、
ファイルへの書き込みがなされません。データファイルのパーミションは600でしたが
666に変更しても試してみました。cgiのパーミションは700と755で試してみました。
いずれもcrontabからではメールは届くので動いてはいるらしいんですがデータファイルが
更新されないんです。更新日時も変わってないです。
crontabからの起動では何か対策が必要なんでしょうかね?
ちなみにcrontabの記述は*/30 * * * * perl /cgi-bin/proc.cgiです
0562質問野郎02/03/25 16:49ID:???
ちょっと質問なのですが、ある企業のサイトのホームページの制作等をうけている
のですが、フォームCGIに不適切な動きが起きていて、大元のプロバイというか
サーバー屋に問い合わせてもちょっとわからないっていう返事なのですが……。
CMでもやっている有名なところです。

その部分が
<input type="hidden" name="ML_ADDRESS" value="送信先メールアドレス">
<input type="hidden name="Subject" value="Subject(タイトル)">
<input type="hidden name="ML_FROM" value="送り元メールアドレス">
ていうことなのですが、そのサーバー屋さんに問い合わせたところ、
ML_FROMの行のvalueを送り先メールアドレスと同じにしてください。といわれたらしい
んですが(私は間接的に聞いただけ。)
あと、その仕事をうけている企業はそのフォームが自分とこにメールがきたら
それを返信しようとすると、送り先が自分とこになるっていっているのですが
もちろん送り先と送り元のメールアドレスを同じにしたらそういうことが
起きると思うのです。ML_FROMは不特定多数であって
ここは変数か何かになって、CGI側で送り元をGetか何かで取得するもんだと
思っているのですがいかがですか?そのCGIは基本的にさわらせてもらえません。というか
そのサーバー独自のCGIです。よろしくお願いします。
0563nobodyさん02/03/25 16:55ID:???
>>562
悪文過ぎて意味不明。放置。
0564nobodyさん02/03/25 17:31ID:???
>560
ttp://tohoho.wakusei.ne.jp/
とりあえずここかな?

>561
メール送信処理の前に書き込み処理を入れて試してみたら?
書き込みの時点で失敗しているならそこでdieされるよな。
そこでメールを送るなら、メールの中にエラーメッセージを入れて確認するとか。

>562
もう少しわかりやすく。
0565562です。02/03/25 17:57ID:???
すいません。書き直します。
ある企業からホームページの制作をうけているものです。
その中にフォームメールを使うページがあってメール自体は
動くのですが、メールをうけている企業さんの話によると
その受けたメールを返信しようとすると宛先には
自分のメールアドレスになるんです。
Aさんが[email protected]ていうアドレスでフォームCGIを介して
その企業さんの[email protected]に送ったら
その企業さんはAさんに返信するときに
宛先が[email protected]になるところが、[email protected]になる
ていうことなのです。

この企業がアップしているサーバーの担当者に問い合わせてもわからないとのことです。
(このCGIはサーバーで提供されているCGIです。)

フォームメールCGIのCGIに変数を渡しているかと思われる部分は
渡されたマニュアルとサーバーの担当者の説明によると
<input type="hidden" name="ML_ADDRESS" value="送信先メールアドレス">
<input type="hidden name="Subject" value="Subject(タイトル)">
<input type="hidden name="ML_FROM" value="送り元メールアドレス"> で
ML_ADDRESSの行のvalueとML_FROMの行のvalueを同じにしてください。と
言われているのですが、それでいくと宛先がその企業さんとこになると思います。


ML_ADDRESSの行の送信先メールアドレスはこれでいくとその企業さんのメールアドレスで
検証してもあってるんですが、ML_FROMのvalueの部分はたぶん変数か何かになると思われるのですがいかがでしょう?

とこのような説明でよろしいでしょうか?

間接的に聞いてるというか間にひとつ会社がはさまってて直接ん、その企業さんの話を聞いている
わけでもなくサーバーにアクセスしてもそのCGIは当然見えないわけですが……。

もしかしたらこの説明でもやはりおわかりにならないかもしれません。
よろしくお願いします。
0566nobodyさん02/03/25 18:07ID:???
>>565
それSo-Netじゃないの?
書き方間違ってない?
そんだけ。

自作させたら?
0567562-565です。02/03/25 18:11ID:fNWLtbGz
So-Netじゃないです。
たぶんML-FROMの部分の行はエラーが起こった時に使うのかなぁ?と思われるのですが…

書き方はあってます。
056856102/03/25 18:23ID:PUm89G3u
>>564 どうも。メールの送信はcronがcgiで出力されたものを送ってくるだけ
なので最後の行のprint "@a_sdata\n";の内容がそのまま送信されます。
とくにsendmailとかはcgiの中には記述してないんです。
その@a_sdataの内容はちゃんとしてるにもかかわらずファイルの書き込みが
全然されないのはcrontabからの実行の場合だけなんです。
ファイル書き込みじにdieされてるとしたらprintされないと思うんですが
出力結果のメールは届くんです。
CGI直接起動ではうまくいくのにcrontabからだとうまくいかない、というのが
理解できないんです。何か対策方法ないでしょうかね?
056956002/03/25 18:51ID:???
>>564
ありがとうございます。
作ってる人は、とほほさんですね。
行ってきます。ありがとう。
0570nobodyさん02/03/25 19:13ID:???
>568
頭を柔らかくしろ。
俺は問題の修正方法を教えてるんじゃなくて、その原因究明の方法をいってるの。
ファイルのオープンが失敗したって、@a_sdataの内容が消えるわけじゃないでしょ?
だったらそれがそのままメールで送られてくる事に不思議はない。

そんな事よりも、メールの内容に$!を入れて何が起こってるかをまず把握しろ、と。
対策方法を考えるにはまず原因究明。
デバッグの基本。

対策方法の結果聞きたいだけなら、ソース公開しな。
0571nobodyさん02/03/25 19:30ID:???
CGIさん、最近モテなくなった?
PHPとかいうやつに、彼女取られてたね。
Cくんは、相変わらずさわやかで、もててるけどね。
057256102/03/25 19:36ID:PUm89G3u
>>570 どうも。
なるほど原因がわからないのに対策とってもその場しのぎでしかないすものね。
いろいろと試してみます。
0573nobodyさん02/03/25 19:44ID:???
>>571
でもCくん、臨機応変とか変幻自在とか、そういうわけにいかない魯鈍君だよね。
0574nobodyさん02/03/25 19:47ID:???
皆さん会社の上司に怒ったりしたことあります?
0575nobodyさん02/03/25 19:47ID:???
>571
CGIとPerlの違いわかってる?
0576nobodyさん02/03/25 21:01ID:???
>575
彼にとってPHPはCGIじゃないんだよきっと・・・
0577nobodyさん02/03/25 21:19ID:???
>>576
?
PHP=CGI?
0578nobodyさん02/03/25 22:34ID:???
>>577 多分コマンドライン版のPHPで作ったCGIなんだよ。
ApacheモジュールのPHPはCGIとは言わんもんな。
0579nobodyさん02/03/25 22:45ID:???
>>578
ありがとう。ひとつ勉強になった。
0580nobodyさん02/03/25 23:25ID:???
nph な仕事を貰いました。
200 OK とか,403 Forbidden とかまでも自前で出力するですな。
そこで問題なんスけど,お客様曰く「403 を出力するなら
apache のアクセスログに残るようにして欲しい」とのこと。
ンな事は可能なんでしょうか?
0581nobodyさん02/03/25 23:29ID:???
>>580
apachのerrordocumentは?
0582nobodyさん02/03/25 23:40ID:???
http://red.tomato.nu/desperado/software/
ここのYYBBS2iってありますよね。
説明が「KENT さん作の各種掲示板と連携のとれる i-mode 用掲示板」って書いてあるんですけど、
連携が取れるってどういう意味でなんでしょうか?ログの共有って意味なんでしょうか?
FAQも掲示板もないんで、サッパリ分かりません。どなたか知ってる方お願いします。
0583nobodyさん02/03/26 00:40ID:???
>>582
板違い
0584nobodyさん02/03/26 05:29ID:7ingtp1l
検索CGI作ってまして、質問なんですが、urlに検索文字列を
〜.cgi?value=アクション
と日本語を含めると挙動がおかしくなってしまいます。
ブラウザに直接入力すると上記の例の場合ちゃんと「アクション」と認識してくれるんですが、
CGIで書き出したhtml中のアンカータグからCGIを実行すると、上記の例だと
「ン」が化けてしまいます。
cgi内部もブラウザ表示もすべてEUCでやってるんですが、
何故このようなことが起こるのでしょうか?

それから、一般的な検索エンジンだと検索結果のurlには
エンコードした文字列がくっ付いてますが、このエンコードっていったいいつやってるのでしょう??
いったん検索文字列をCGIで受け取ってエンコードして、locationで飛ばしてるんでしょうか。
わざわざそんなことするのは上記の文字化けと関係あるんでしょうか。
宜しくお願いします。
058558402/03/26 05:50ID:7ingtp1l
一般的な検索エンジンうんぬんというのは勘違いでした。
あれはフォームだから僕の状況とは関係ありませんでした。
宜しくお願いします。
058658402/03/26 06:01ID:???
解決しました。urlに引数持たせる場合には自分でエンコードしないとならないんですね。
普通に解説サイトに書いてました。どうもすみません。てか、誰も見てないか..
0587nobodyさん02/03/26 06:56ID:???
sub text_read;
open(LOG,"<$logfile");
@log=<LOG>;
close(LOG);

foreach $line (@lines) {
の、
foreach $line (@lines) {はどういう意味なんですか?
配列として読み取った奴を$lineに何をしようとしてるのでしょうか?
0588nobodyさん02/03/26 07:28ID:7ingtp1l
@lineのすべての要素に対して処理をする>foreach
その後には$lineに対する処理が続くはずだけど、
それはつまり@lineの各要素に対して処理をしてることになる。
058958002/03/26 07:58ID:???
>>581
あっ (´ー`) どうもです
ErrorDocument は HTML や CGI が本当に 403 や 404 な場合に
自前の HTML が出力できて便利っすね。
ただ今回は NPH でいわば「嘘の」403 ステータスを出力して
且つ apache のログにも書き出したいということで・・・
むむ,一筋縄ではいかなさそうです・・・
0590オラなんも知らんけど02/03/26 08:58ID:???
Apache::Logは?
0591nobodyさん02/03/26 09:15ID:???
>>580
アクセスログじゃないけど、STDERR はエラーログ
に向かってない?
0592nobodyさん02/03/26 09:46ID:z9GSG5oT
log書き込みときに\nつけてるんだけど
そのlogをOPENしたときに\nもついてきてる。

OPENのときに\nを抹殺するにはどーすればいい?
0593nobodyさん02/03/26 10:11ID:???
chomp or tr/\015\012//d
059458002/03/26 10:27ID:???
>>589
>>590
どもです (´ー`)

Apache::Log 見てみたっす。なんか核心に迫ったような気が。

STDERR って CGI の場合はてっきり捨てられてるのかと思ってたけど
なんか apache の error.log に書き込まれるらしいっすね。
ttp://www.tt.rim.or.jp/~canada/comp/cgi/faq/
これが最適解なのかな?

いろいろ試してみます。ありがとうです。
0595nobodyさん02/03/26 10:33ID:F9zkDX+C
LocationがなぜかUPするとPrintになっちゃってます。。どうしたらいい?
0596nobodyさん02/03/26 10:55ID:???
>595
Content-typeを書いて、その後に空行を入れてからLocation書いてたりしない?
059759202/03/26 11:25ID:???
>>593

できました。 THX

これで吐き出すソースが少し綺麗になった〜
059858002/03/26 12:52ID:???
わかっちゃった!!
print "Status: 403\r\n";
print "Content-type: text/html\r\n";
(以下略)
これだけでちゃんと httpd.log にステータスが記載されるですな。
それに STDERR 出力を組み合わせれば error.log にも書き出されるんで最強。
NPH としてステータス吐かなくても良かったんですね。
考えてみれば無茶苦茶基本的なことでした。失礼しましたー。。。
059900000002/03/26 13:00ID:???
CGIでsendmailを使用しauの@Mailで受け取ると9時間遅れてるのですが、これどうしたら回避できるのでしょうか。
ご存知の方些細な点でもよろしいので教えてください。
よろしくお願いします。

因みにサーバー側の時間は確認済みです。
また、複数のsendmail使用のスクリプトで同じように遅れます。
さらに、PC上で受信した場合、Outlook Expressでは「受信時刻」はちゃんと正確な時間を表しています。
0600nobodyさん02/03/26 13:12ID:???
auに文句をいうのが一番いい案か?
まー、普通にDateヘッダの部分を書き換えるんだろうが。
0601599さん、ヘッダを見せてくれよ02/03/26 13:26ID:???
Date:     Tue, 26 Mar 2002 13:17:38 +0900
0602nobodyさん02/03/26 13:41ID:???
__END__ ←これって別に書かなくてもいいんだよね?
0603<DATA>使わないなら書かなくてもいいよ02/03/26 13:44ID:???
0604ななすぅい02/03/26 15:10ID:???
ある階層にあるディレクトリの名前を全部表示させたいんですけど、
どうしたらいいの?オシエテ。
0605nobodyさん02/03/26 15:22ID:???
$d = '.';
opendir(DIR, $d);
@dir = readdir(DIR);
close(DIR);

foreach (@dir) {
print "$_\n" if -d "$d/$_";
}
0606nobodyさん02/03/26 15:22ID:???
>604
opendirしてreaddirしてその中身からディレクトリだけ表示してclosedir。
0607ななすぅい02/03/26 15:39ID:???
>>605
>>606
ありがとうございます。
-dオプションがまだうまくいきません。
if -d "$d/$_";の部分です。
0608nobodyさん02/03/26 15:59ID:???
Jぽん位置情報扱えるcgiないですか?
0609ななすぅい02/03/26 16:44ID:???
うまくいきました。さすがです。
あとひとつおしえてください。
シンボリックリンクかどうかアレですが、「.」と「..」が入ってしまいます。
これを取り除きたいのですが、どうすればいいの?
0610nobodyさん02/03/26 16:54ID:???
>609
if
0611ななすぅい 02/03/26 17:18ID:???
if?
0612ななすぅい02/03/26 17:25ID:???
パターンマッチで解決しました。どうもでした。
061358702/03/26 20:43ID:???
>>588
ありがとうございました。
0614nobodyさん02/03/27 00:34ID:???
perlで掲示板スクリプトを作っています。
HTMLヘッダはsub headというルーチンをつくり

print "Content-type: text/html\n\n";
print <<EOM;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS">
<title>$main_title</title>
</head>
EOM

という中身です。
メイン画面、書き込み画面、エラー画面などHTML出力をするたびにこのヘッダを呼び出しています。
IEでは問題なく閲覧できるのですが、NN4.73がプレーンテキストとして出力を解釈しやがるのです。
すべてプレーンで解釈しやがるならContent-typeの指定ミスなのですが、メイン画面はHTMLとして、エラー画面はテキストとして読みやがります。

兄貴。NNの野郎にHTMLを叩きつけるにはどのような点を修正してスクリプティングすればいいのでしょうか。
0615nobodyさん02/03/27 00:43ID:???
>614
ttp://pc.2ch.net/test/read.cgi/php/1014556702/953-962n
0616nobodyさん02/03/27 00:49ID:???
>614
オマエのその価値のないソースを見ないとなんともいえないダロ!!
さっさとソースを見せろこのボケ!!
061761402/03/27 00:54ID:???
>>615
兄貴! さすがっす!
おとこ惚れっす! 穴貸すから思う存分使って欲しいっす!
0618nobodyさん02/03/27 03:51ID:???
>616
いつもその口調だねー
0619名無しさん02/03/27 05:40ID:J486qV1r
スレ違いならスマソ

現在、レンタルサーバーにhns-liteを入れようと格闘中。
/root
|
+--/htdocs <--- URI : http://www.****/
|
+--/cgi-bin <--- URI : http://www.****/cgi-bin/
|
+--/diary
|
+--/hns-lite
|
+--/lib
|

hns-lite/index.cgi
を実行するとエラーが出る

Can't locate CGI/QueryString.pm in @INC
(@INC contains: lib /usr/local/lib/perl5/i386-bsdos/5.00403
/usr/local/lib/perl5 /usr/local/lib/perl5/site_perl/i386-bsdos
/usr/local/lib/perl5/site_perl .)
at /usr/local/etc/httpd/vhosts/********/cgi-bin/hns-lite/index.cgi line 31.

つづく・・・
062061902/03/27 05:40ID:J486qV1r
続き

で、index.cgiのline31付近はこんな感じ

#!/usr/bin/perl
(中略)
use strict;
use lib qw(lib);
use CGI::QueryString; <-- line 31
use DateTime::Format;
use SimpleDB::Scalar;
....

で、肝腎のモジュールは全て
hns-lite/lib
以下に存在しているので、@INCにそれが入っていないと考えられたのだが・・・・

use lib qw(./lib)
use lib qw(./lib ./lib/CGI)
use lib qw(/usr/local/etc/httpd/vhosts/********/cgi-bin/hns-lite/lib/)
と色々変えてみたが変化無く、
push(@INC, )
unshift(@INC, )
もダメだった。

結局
require "./lib/CGI/QueryString.pm";
とするしかなかった。
でもこれだとHNS全体をこうする必要があり不可能。

いったいなにがわるいのでせうか?
062161902/03/27 05:44ID:J486qV1r
あんぎゃあ、ゾヌで書き込んだせいか、ツリー構造が崩れている(ToT

えっと、書きたかったのは、/cgi-bin 以下に diary と hns-lite があって、
hns-lite の中に lib があるということです。
062273602/03/27 10:17ID:???
qmailでDateの設定しない場合の仕様でした。
CGIスクリプトレベルでのよくわからないのであきらめます。
すいませんでした。
0623nobodyさん02/03/27 11:24ID:vf3Wej2o
なる。
0624nobodyさん02/03/27 12:24ID:W6jS6K5R
悩んでおります。
英語版のサイトを作ろうと思い、もともと日本語版サイトで使っていたプロバイダ
さん提供のアンケートフォーム用CGIをサーバーからもってきて、日本語で
表示が出る部分だけ英語に書き換えました。
(書き換えの時はDreamweaverで。シンプルテキストだと文字化けしたので)
それをftpでアップして、アンケートフォームとリンクさせたところ、正常に
可動しません。
そもそも、もとのCGIをそのまま別名保存してもういちどアップしてもうまくいきません。
CGIは何か特別なソフトで開いたほうがいいのでしょうか・・・。
それともMACの環境だからでしょうか...。
0625nobodyさん02/03/27 12:26ID:???
文字コード
0626nobodyさん02/03/27 12:33ID:W6jS6K5R
文字コードは、アンケートそのものはISOの英語コードにしています。
CGIのほうはもとがJcodeだったのでそのままです。
その不一致?

でも、英語アンケートフォームと今までの日本語版CGIを両方
使った場合、送信メールを受け取ることはできたんです。
(ただし送信確認画面で、日本語表記がでちゃう。送信ボタンなども
「送信」とでてしまうので、海外からだと正常に読めない)
0627nobodyさん02/03/27 12:35ID:GD/Jk18+
にょろ。
0628nobodyさん02/03/27 12:37ID:W6jS6K5R
そもそも、CGIってみなさん何で書いてるのでしょうか?
0629nobodyさん02/03/27 13:56ID:???
CGIを書く?コモンゲートウェイインターフェイスの仕様書?
そりゃテキストエディタじゃねーの?知らんけど。
0630nobodyさん02/03/27 14:21ID:???
Perlで。
という返答で正しいのか?
0631nobodyさん02/03/27 15:24ID:???
そもそもJcodeって何?
0632nobodyさん02/03/27 15:56ID:DnWVHvAA
数百件の検索にindexで検索するとスピードが遅くなるんでしょうか?
パターンマッチ使ったほうが良い?
0633nobodyさん02/03/27 16:00ID:Uk2UqleO
すみません。質問です。参考書に載っていたサンプルです。
年齢別リストを作るコードです。

@list = ( 20,25,24,32,28,20,28,24,20 );

foreach $fld ( @list ) {
$syukei{$fld}++;  #年齢をキーとして集計していく
}

print "<table border=1>\n";
print "<tr><th>年齢</th><th>人数</th></tr>\n";

foreach $key (reverse( sort( keys(%syukei) ) ) ) {
$cnt = $syukei{$key};
print "<tr><th>${key}才</th><th>${cnt}人</th></tr>\n";
}

上の3行目、$syukei{$fld}++; は、
$syukei{$fld} = $syukei{$fld} + 1 ですよね。この場合、
右辺の$syukei{$fld}には何が入っているのでしょうか。

お願いします。
0634nobodyさん02/03/27 16:15ID:???
>>632
perldoc Benchmark を見よ。

>633
質問の意味がわからん。
063563302/03/27 16:34ID:Uk2UqleO
すいません。ええとですね、
これはハッシュの勉強のところなんです。
値のグループ化というもので、社員の年齢ごとの
人数を集計するプログラムです。で3行目ですが、
$syukei{20} = $syukei{20} + 1 ですよね。
20をキーとしてそれに対応する値が右辺だということは
わかるのですが、右辺の$syukei{20}がわかりません。
これは何になるのでしょう。
0636nobodyさん02/03/27 17:00ID:???
print $syukei{20};
で表示されたものが何かを考えればぁ?(゚Д゚)
063763302/03/27 17:35ID:Uk2UqleO
すみません。何回も。
サンプルなので、$syukei{20}が3で、$syukei{25}が1というのは
わかっているのですが、それだと一番最初の右辺$syukei{20}が0で
ないといけないですよね。つまり、
$syukei{20} = 0 + 1 ですよね。これで20のvalueが1になりました。
二回目からは$syukei{20} = 1 + 1 というのも分かります。
で最終的に$syukei = 2 + 1 で3になります。
僕が分らないのは、最初の右辺$syukei{20}が0というのが腑に落ちない
のです。うまくいえないですけど助けてください。
0638nobodyさん02/03/27 17:49ID:???
$syukei{20} がはじめて出てきたときに 0 を勝手に入れてくれるんだよ。perlって便利だね。

と言うことでいかが?
# ほんとはちょっと違うけど。
0639nobodyさん02/03/27 17:55ID:???
>637
Perlでは初期化されてない変数は空文字になる。
数式で使うと0として扱われる。
064063302/03/27 18:28ID:Uk2UqleO
みなさん、ありがとうございます。
自分も変数の初期値が0というのは知っているのですが、
こに場合はハッシュだから、どうなのかなと思っていました。
いわゆるハッシュ変数という奴なのですね。オライリーの
初めてのPERLを読んで何となくわかりました。これは今読んでる
初級本をクリアしてから読もうと思っていたのですが、けっこう
いいですね。
0641nobodyさん02/03/28 02:54ID:9oC7jnq/
すみませんがご教授下さい。
rand関数がありますが、
たとえば $x = rand(6); $y = rand(6);
とした場合に僕の希望としては
それぞれに異なる結果を出したいのですが、
実際には $x,$y 共に同じ値になってしまって困っています。
サイコロで言えば二つを何度振っても
同じ数字が出続けるような物です。
何卒アドバイスを宜しくお願いします
0642>>64102/03/28 03:05ID:???
同じになりませんが何か?
0643>>64102/03/28 03:21ID:???
srandを複数回呼び出すような馬鹿なことはしてないだろうねぇ。
0644Dream ★02/03/28 05:23ID:???
>>643
じゃなくて、srand必要なバージョンのPerlなのに呼んでいないんじゃないの?
0645nobodyさん02/03/28 10:10ID:KXdiu3Az
パーミッション設定
666−606 755−705とかで何か変わりますか?
以上にスレッドが重たいので困っております。何か良い方法ないでしょうか?
0646nobodyさん02/03/28 10:13ID:???
>>645
あなたと同じグループの人が読めなくなる書けなくなる実行できなくなる。
0647nobodyさん02/03/28 10:30ID:KXdiu3Az
>>646
ありがとうございます。CGIのスレッド設置したのですが
凄く重たいのですが何か良い方法ないのですかね。
改善できることはしたいのですか・・
0648nobodyさん02/03/28 10:47ID:???
>>647
意味のわからんことをさっきから。
Web制作にCGI設置用のスレがある。ここはお前のようなコンシューマーの来るところではない。帰れ。
0649nobodyさん02/03/28 13:11ID:???
>>647
そんな事もわからないスキルの人間に
教えた所でできないんじゃない?
0650nobodyさん02/03/30 22:08ID:???
>>647
ソースの中に nph- という文字列があれば、ファイル名の先頭に
nph- と付け加えてみる、というか、サーバーを替えたらどうですか?

それか、同じ団体のアカでも新しくもう一つ取れば、もしかすると
空いてるホストにあたるかも知れません・・・が、余りオススメしませんね。
しかし、軽い CGI に替えるのが一番効果的でしょう。
0651nobodyさん02/03/30 22:18ID:???
>647
共用サーバーは重いです。
専用サーバーを借りましょう。
ちゃんと保守までしてくれるところを。
そうすれば軽くなります。
0652nobodyさん02/03/31 07:56ID:???
権限がnobodyのファイルやフォルダを、一覧で選択して消せる
スクリプトを配布してるサイトがあれば教えて頂けませんか。
0653nobodyさん02/03/31 08:51ID:???
>>652
作れば?
0654厨房ですよ02/04/01 00:33ID:???
大変厨房な質問申し訳ありません
ActivPerl+win2kで-cwチェックに通ったPerlのCGIをサーバーにあげたところ500エラーが出ました。

何が問題なのかと、hKCatchをつかってみると
[hogehoge.cgi:2:die] (eval 1) has too many errors. > use KCatch qw( source execdata );__DATA__
という箇所でdieしていました。他はwarnだけでdaiはありません。

has too many errorsをgoogleってみたところ2chの別スレで「perl4じゃ?」という発言を見つけました。しかしuseを使えているということはperl4ではないはず。
何が問題なのでしょうか。
0655nobodyさん02/04/01 00:47ID:???
>has too many errorsをgoogleってみたところ
ワラタ

とりあえずどんな処理をさせるコードなのか書かないと
どんな関数を使ってるのかすら想像できないのでお答えできません
0656厨房ですよ02/04/01 00:59ID:???
藁われた……うう、さすがに中学英語はわかります。たぶん……。

設定情報のあるsetup.cgiファイルを読み込み、それ自体を書き換えるcgiです。
使ってる関数は超基本関数だけです。

ローカルでは動いているのになぁ……。
パーミッションも#!行もrequireも間違ってないっぽいです。
謎……。
0657nobodyさん02/04/01 07:41ID:???
>>656
使ってる関数は超基本関数だけです。
0658nobodyさん02/04/01 13:04ID:???
こんなCGIを動かしてみる。

#!/bin/sh
echo "Content-type: text/plain"
echo ""
/usr/local/bin/perl -wc hogehoge.cgi
0659nobodyさん02/04/01 19:31ID:???
>>658
エラーは標準エラー出力に出るんじゃないの?
0660nobodyさん02/04/01 20:21ID:22Bwn0qt
PATH_INFOって、?以下の文字列って無視されますか?
0661nobodyさん02/04/01 20:29ID:???
>>660
うん。
0662nobodyさん02/04/01 20:31ID:???
>>661
やっぱりそうですか。
http://ime.nu/ってどうやってんだろ。
0663nobodyさん02/04/01 20:39ID:bVnVGhV3
cgiから掲示板などに書き込むスクリプトを書きたいんですが、
全然分からないです・・・。
cgiからcgiにPOSTするにはどのようにすればいいんでしょうか?
よろしくお願いします。
0664nobodyさん02/04/01 20:44ID:???
>>663
use Socket必死になって習得。
0665nobodyさん02/04/01 21:18ID:b9jzIHib
なんか全然レスつかないと思っていたら,間違えてWeb制作板にポストしていたので,ここに投げなおします.


cgiなどウェブ系のプログラムを独学で作ってきていますが、
何でも、「仕様書」なる者を書いて設計をきちんとしないと破綻するらしいとわかりました。
確かに、昔書いた掲示板のスクリプトとかシンプルなものでも、ちょっと変更を加えようとしても訳わかりませんで、
結局新しいのをつくったりします。

グーぐるで探したら、河村かつまという人のサイトで仕様書の作り方を開設していたのですが、すごくわかりにくい文章で、
挫折してしまいました。やっぱり文章は本職の人が書かないとだめですね。
http://www.st.rim.or.jp/~k-kazuma/SD/SD.html

というわけで、仕様書の書き方をわかりやすく開設してあるおすすめのサイト、書籍を教えてください。

よろしくおながいします。
0666nobodyさん02/04/01 21:20ID:???
>>665
/*
グーぐるで探したら、河村かつまという人のサイトで仕様書の作り方を開設していたのですが、すごくわかりにくい文章で、
挫折してしまいました。やっぱり文章は本職の人が書かないとだめですね。
http://www.st.rim.or.jp/~k-kazuma/SD/SD.html
*/

何もしない奴が何かやっている奴を批評する権利はない。
帰れ。
0667nobodyさん02/04/01 21:28ID:gjG2j3IK
CGIの掲示板を書いているのですが、記事削除システムの構造が理解できません( ̄− ̄;
レス機能のない掲示板です。どなたか、記事削除システムを、どのようにすれば作れるか、教えてください。
0668nobodyさん02/04/01 21:29ID:???
>>667
削除対象のログ消すか対象ログにマークを付けて表示時に無視させればいい。
当然といえば当然の話。
0669WebBeginer02/04/01 21:39ID:FPTql6Ah
携帯両用の掲示板を開設しているのですが、PCでもiモードの絵文字が見たいので、ログファイル(@lines)を読み込んだ後に、

foreach(@lines){
$_ =~ s/♪/<img src=pic_i\/onpu.gif width=12 height=12>/ig;
}
foreach(@lines){
$_ =~ s/!/<img src=pic_i\/bikkuri.gif width=12 height=12>/ig;
}
           ・
           ・
           ・

※「♪」「!」は実際はiモードの絵文字を直接入力してます。

としているのですが、この構文をiモードの絵文字の数、つまり百数十回繰り返すと、サーバに負担がかかりすぎるため、エラーとなってしまいます。
何回かやった結果、この構文10個くらいが限界のようです。
なんとかサーバに負担をかけずに全ての絵文字を変換するスクリプトってできますか?
0670nobodyさん02/04/01 21:41ID:???
>>669
foreach(@lines){
$_ =~ s/♪/<img src=pic_i\/onpu.gif width=12 height=12>/ig;
$_ =~ s/!/<img src=pic_i\/bikkuri.gif width=12 height=12>/ig;
・
・
・

こういう発想が普通のような気もしますが。

length(@lines)とlength(@lines)^2じゃ全然処理量が違います。
ループはできるだけ少なく。これが基本。
0671nobodyさん02/04/01 21:44ID:???
>>669
とりあえずiオプションは必要ないのでやめなさい。
絵文字に詳しくないのでなんとも言えんが、たぶんもっと簡単になると思う
0672nobodyさん02/04/01 21:47ID:???
ってゆうか、↓このあたりが参考にならないか?
http://specters.net/cgipon/labo/dt_emoji.html
あとは自分でやってくれ。
0673WebBeginer02/04/01 21:53ID:FPTql6Ah
>>670 & >>671
即レスありがとうございます。
この構文自体、他の掲示板CGIから引用したもので、自分でも理解しきれていないのですが、

length(@lines)とlength(@lines)^2じゃ全然処理量が違います。

自分の構文の場合だと具体的にどうすれば・・・
自分でも669の構文の繰り返しは幼稚だとは思うのですがなにぶん知識が浅くて改良できませんでした。

あと、iオプションってなんですか?
0674nobodyさん02/04/01 21:54ID:vgH2l50K
お勧めのCGIリファレンスページを教えてください。
杜甫々さんの所以外で・・
0675nobodyさん02/04/01 21:57ID:???
>>673
>>670のコードが思いっきり答えじゃん。
0676nobodyさん02/04/01 21:58ID:???
>673
>670さんがきっちり教えてくれてるだろ。
読んでないのか?

iは大文字小文字を区別しないって事。

>674
とほほがダメな理由を言え。
そうでないと紹介できん。
0677WebBeginer02/04/01 22:05ID:FPTql6Ah
>>676
すいません、つい669の時の構文とおなじものだと勘違いしてました。
670さんのやりかたも前に試したのですが、百数十回だとやはりエラーがでてしまうんですよね・・・
0678nobodyさん02/04/01 22:08ID:???
>>673
ハッシュの変換テーブルを使うべし。
具体的にはCGIrescueでやってるから見てみれ。
0679nobodyさん02/04/01 22:15ID:???
>>677
ところでエラー内容は?

>>678
ああ、

s/.*?(.*?).*?(適当)/$data{$1}/g

みたいな?
0680WebBeginer02/04/01 22:20ID:FPTql6Ah
>>679
internal server errorですよ。

>>678
わかりました。早速見てみます。
0681nobodyさん02/04/01 22:26ID:???
>>680
>internal server errorですよ。

私はなめられているのでしょうか?
0682WebBeginer02/04/01 22:32ID:FPTql6Ah
>>680
いや、そういう意味で書いたのでは・・・
失礼でしたら申し訳ないです。サーバーエラーが複数あることを知りませんでした。
ただ、繰り返しを10回以内にするとエラーが起こらないのでやはりサーバに負担をかけたからエラーになったのかな、と。
0683nobodyさん02/04/01 22:33ID:???
>681さん
まあまあ落ち着いて
ごめん、わらてしまたよ
0684nobodyさん02/04/01 22:59ID:???
>682
埒あかん。
ソース丸ごとアップしろ。
多分説明してもお前には理解できないし、こっちが求めている情報をお前が選別して掲示できる事もない。
0685nobodyさん02/04/02 01:46ID:???
>>665
そうかなぁ?俺もそこは2年ぐらい前から知っているけど
よく書けていると思ったよ。
きみ基礎知識がないんじゃないの?
0686nobodyさん02/04/02 01:46ID:???
>>668
削除マーク付ける方が、データに不整合起こしにくくておすすめだよね。
0687nobodyさん02/04/02 01:48ID:???
>>679-683
の流れが秀逸すぎる(笑)
ワラタ。
0688nobodyさん02/04/02 10:06ID:???
>687
なにかにつけ、「ワラタ」ということばを連発したいがためにむりくり
さがすやつ! さびしいのネ!

0689nobodyさん02/04/02 20:33ID:???
サイト閉鎖されてるんやけど、どこかにある?
imgboard v1.22 R6のスクリプト
http://www.big.or.jp/~talk/t-club/soft/index.html
0690nobodyさん02/04/02 20:56ID:???
>>689
おまえのプロバのdnsがいかれてるだけ
0691nobodyさん02/04/02 21:13ID:???
>>688
むりくりって何!?( ̄□ ̄;)
0692nobodyさん02/04/02 22:24ID:???
>>689
マルチポスト死ね。
0693nobodyさん02/04/03 02:20ID:2Lh4+kxY
どこで質問するべきか迷いましたがここで質問します
%17%ea%17%e8%17%ec%17%a8%17%dd%17%e8%17%d3%17%e3%17%b8%17%d1%17%f7%17%de%17%a8%17%fa%17%d2%18i%06%b5%18j
これの解読方法ありますか?
ネスケでテキスト表示させてもできなかった
ちなみに文字化けメールじゃありません
とあるチャットのデータファイルで内緒話の部分だけがそうなるんです

ちなみにそのチャットはこれ
http://www.teachat.org/download.php
0694nobodyさん02/04/03 02:29ID:???
はじあやで同じ事聞いてたな。氏ね。

>>693はマルチポストです
お手を触れぬようお願いします
0695nobodyさん02/04/03 03:56ID:???
%17ばっかだね?
0696nobodyさん02/04/03 10:35ID:WrEAhQK7
my($date)
my $tmp

このmyってなんすか・・・
0697Dream ★02/04/03 10:41ID:???
便乗なんだけど、my宣言って、パフォーマンスやメモリ使用量に
好結果があるのかなぁ?

たとえば、複数人で同じソース使っていて、各自の担当部分の
変数を漏らさないようにする目的、とかだったら十分効果あるし
理解できるけど、素人程度の(要するに俺程度の)書くスクリプトでも、
充分、何らかの効果があるものなんですかね?
0698nobodyさん02/04/03 11:16ID:???
メモリやパフォーマンスの為にmy使ってるやつなんていないだろ。
無きゃ困るから使う。それだけ。
0699nobodyさん02/04/03 12:17ID:???
アプロダ掲示板作りたいんですけど
perlとphpどちらが宜しいですかね?
各々メリットデメリット教えて。
0700nobodyさん02/04/03 14:46ID:YEM9HsOO
#! /usr/local/bin/perl -w
の、「-w」オプションて、どういう場合に必要なんでしょう?
0701nobodyさん02/04/03 16:33ID:???
 -w       enable many useful warnings (RECOMMENDED)
0702解読できないよー02/04/03 16:48ID:???
実はわたしもどうしても解読できないものがありまして、それが693さんの書かれた
ものとなんとなく形式が似ているのです。どなたかわかるかたがおられましたら教えて
いただけないでしょうか? 以下に書いたものがそれなんですが...

%83l%83^%82%be%82%e6%83o%81[%83J!+%83I%83}%83G%82%cd%82%a2%82%a2%83J%83%82%82%c9%82%c8%82%ea%82%e9%82%ba!+by+%89%f0%93%c7%82%c5%82%ab%82%c8%82%a2%82%e6%81[
0703nobodyさん02/04/03 16:51ID:???
CGIへの直リンク禁止処理を追加する
ということをやろうと思いましてやってみたのですが、
許可をしたアドレスからもはじかれてしまいます。
どこかが間違っているのでしょうか?
お願いします。

##特定したURL以外アクセス禁止(1ならする、0ならしない)
$badurl = '1';
##上記で1にした場合そのURL指定(CGIを設置するページ)
#リンク許可ページのURL (正確に記入。複数指定可)
$url[1] = 'http://';
$url[2] = 'http://';
$url[3] = '';
$url[4] = '';

if($badurl) {
$url[0] = $script;
$ENV{'HTTP_REFERER'}=~ s/%(..)/pack("C",hex($1))/eg;
if($ENV{'HTTP_REFERER'}){
for(@url){
if($_ && $ENV{'HTTP_REFERER'} =~ /^\Q$_\E/){
$flag = 1;
last;
}
}
}
if($badurl && $flag != 1) { &error("CGIへの直リンクは禁止です"); }
}
0704nobodyさん02/04/03 17:12ID:???
>703
パーソナルファイヤーウォールを導入されてるとREFFERERを返さない事もある。
ソフトによって隠されるから。
0705nobodyさん02/04/03 17:29ID:???
>703
オマエはアホだろ? とんだイカレ野郎だな!
0706nobodyさん02/04/03 17:49ID:???
>if($_ && $ENV{'HTTP_REFERER'} =~ /^\Q$_\E/){

if($_ && ($ENV{'HTTP_REFERER'} =~ /^\Q$_\E/)){

0707nobodyさん02/04/03 19:38ID:???
>>702
http://www.google.co.jp/search?q=%83l%83%5E%82%BE%82%E6%83o%81%5B%83J!+%83I%83%7D%83G%82%CD%82%A2%82%A2%83J%83%82%82%C9%82%C8%82%EA%82%E9%82%BA!+by+%89%F0%93%C7%82%C5%82%AB%82%C8%82%A2%82%E6&hl=ja&sa=N&tab=dw
0708nobodyさん02/04/03 20:03ID:YEM9HsOO
>>701
ありがとうございます。必須というわけではないのですね。
私のローカル環境(Win32Apach+ActivePerl)ではつけてもつけなくても警告文に変化が見られないようですが、
そういうものなんでしょうか。
0709nobodyさん02/04/03 20:33ID:???
>708
-wcで構文チェックでもしてください。
071070302/04/03 22:15ID:???
>>704
FWが原因だったようです。
切ったら行けました。ありがとうございました。
0711nobodyさん02/04/03 23:34ID:???
>>709
つまんない質問にきちんとレスありがとうございました。
おかげで理解できました。
0712nobodyさん02/04/04 09:51ID:daqR1eJx
自分のホームページにつけたいのでファイルアップローダーcgiが欲しいんですが、
どこで入手できますか?yahoo!の検索ではどうにも行き詰まりまして・・・
0713nobodyさん02/04/04 09:54ID:???
>>712
そら、2ちゃんねるもまともに使いこなせない奴には無理だろうな。

こんなCGI探してますスレッド Ver.5
http://pc.2ch.net/test/read.cgi/php/1013282469/l50

ここはプログラマの板だ。コンシューマは消えてくれ。
0714nobodyさん02/04/04 10:10ID:daqR1eJx
失礼しますた
0715nobodyさん02/04/04 12:02ID:1G0Zf8mT
くだらない質問ですが

$ENV{'TZ'} = "JST-9";
$time = time;
($sec,$min,$hour,$mday,$mon,$year,$wday,$dmy) = localtime($time);

@week = ();
$date = sprintf("%04d/%02d/%02d",
$year+1900,$mon+1,$mday,$week[$wday],$hour,$min);

で$timeをlogに書き込むと12桁の数字になるのですが
なんででしょうか?
0716nobodyさん02/04/04 12:11ID:???
そりゃ$timeが12桁の数字だから。
せっかくだから$dateを書き込めって。
0717nobodyさん02/04/04 12:14ID:???
>>715
($sec,$min,$hour,$mday,$mon,$year,$wday,$dmy) = localtime($time);

@week = ();
$date = sprintf("%04d/%02d/%02d",
$year+1900,$mon+1,$mday,$week[$wday],$hour,$min);

までしてなぜ$timeを保存する・・・。

timeは1870年だったっけ?の1/1からの秒数です。
0718nobodyさん02/04/04 12:16ID:???
>715
timeで帰ってくる数字は1970年1/1 0:00からの秒数。
localtimeとかはそれを年月日の配列に変えてくれるもの。
大まかに言えばこんな感じ。
0719nobodyさん02/04/04 12:23ID:???
>>717
1970年1月1日0時0分0秒(GMT)だぉ。
072071502/04/04 12:36ID:???
理解しました。

皆さんありがとうございます。m(__)m
0721nobodyさん02/04/04 12:43ID:???
ちなみに1970年はUNIXのキゲンね。
0722nobodyさん02/04/04 12:47ID:???
>>721
死ぬほど勉強になった。なるほど。
0723nobodyさん02/04/04 21:50ID:U+Q0+BV/
えーと、
最近になってオペラが結構来てるんですけど。
表示が乱れてくるんです。
で、IE6とかに合わせてから、NN6とかみると微妙に違ってたりして、
そこでなおすとこんどはオペラが変で、
それをなおすとIEが変でいったいどうすれば、、、。
0724nobodyさん02/04/04 22:03ID:???
>>723
それはCGIとはほそろしいほど無関係。
Web製作板に行きなされ。

まぁあれだ。コレを期にCSSやStrict HTMLを覚えなさいってこった。
0725Q02/04/04 23:07ID:2wyFXP2l
Accessで作ったデータベースファイルをFTPでプロバイダのサーバにアップロードしてそのデータベースにPerlで記述したCGIからアクセスできますか?
AccessでできなかったらなにかCGIでアクセスできるようなデータベースはないでしょうか?
セキュリティが大事なことはやらなく、ただ単にFTPでアップロードしたデータベースファイルを扱いだけなんです。
0726nobodyさん02/04/04 23:23ID:???
>>725
サーバーにその「Accessで作ったデータベースファイル」を解析する何らかのブツが入ってりゃ余裕で出来るだろうよ。
0727Q02/04/04 23:35ID:2wyFXP2l
解析するブツですか・・想像もつきません。
CGIにSQL文を埋めこめられるのか、とかそんなことを想像してました。
0728nobodyさん02/04/05 00:05ID:9OfkLjEm
CGI_Lite.pmで複数のファイルを一度にアップできるかな?
<form action=upload.cgi enctype=multipart/form-data method=post>
<input type=file name=file1>
<input type=file name=file2>
・・・・
てな感じで。

0729nobodyさん02/04/05 01:38ID:???
>>728
1個のファイルのアップロードCGIが作れるなら、
同じ要領で2個出来るか試せば良いだろ。
なんでもかんでも聞くなよ。
0730nobodyさん02/04/05 01:52ID:???
>729
1個のファイルのアップロードCGIが作れるなら、
同じ要領で2個出来るか試せば良いことぐらい言うまでもないだろ。
なんでもかんでも答えるなよ。
0731nobodyさん02/04/05 03:41ID:???
>729
1個のファイルのアップロードCGIが作れるなら、
同じ要領で2個出来るか試せば良いことぐらい言うまでもない事はいくらおまえでもわかるだろ。
なんでもかんでも答えるなよ。
0732nobodyさん02/04/05 06:59ID:???
>>730-731 アフォ発見
0733nobodyさん02/04/05 10:20ID:???
>728
くれぐれもローカルで試してくれな。
0734nobodyさん02/04/05 17:53ID:???
Perlを使ってCGIを書いています。
親ウインドウから子ウインドウを開き、子ウインドウに入力された値をsubmitで親ウインドウに飛ばしています。
親ウインドウに値が渡った1回目はいいのですが、その画面でリフレッシュすると値がなくなってしまいます。
どのようにすれば、リフレッシュ時でも値を保持していれるのでしょうか?
0735nobodyさん02/04/05 18:44ID:???
>>734
cookieかね?
0736nobodyさん02/04/05 18:59ID:???
>>734
<input type=hidden>で持ち回る。
0737 02/04/06 01:52ID:twEq+RYw
i-modeで使える動作軽めのDLカウンタが欲しいのですが・・・
0738nobodyさん02/04/06 02:15ID:???
>>737
こんなCGI探してますスレッド Ver.5
http://pc.2ch.net/test/read.cgi/php/1013282469/
0739nobodyさん02/04/06 02:30ID:wejSs/vG
$text = "2ch2ちゃんねる";
と宣言した変数の初めの数文字だけを表示させる方法を教えてください。
$text には、半角文字と全角文字が混同しているという仮定です。
例えば、初めの4文字とすると、
「2ch2」としたいです。
0740nobodyさん02/04/06 05:21ID:???
>739
宣言と定義の違いもわかってなければ環境の文字コードも書いてないから
答えようがないネ! ネタか?
0741nobodyさん02/04/06 10:12ID:???
ついでに使用言語も書いてないし。
0742nobodyさん02/04/06 11:33ID:H1m5OFT0
perlで、実行しているcgiの絶対パスの取得方法を教えてください。
0743nobodyさん02/04/06 12:16ID:???
>>742
$ENV{'SERVER_NAME'}
$ENV{'SCRIPT_NAME'}
0744nobodyさん02/04/06 12:17ID:???
use FindBin;
$FindBin::Bin;
0745nobodyさん02/04/06 13:17ID:???
>>744
use FindBin;
$FindBin::Bin->radin;;
0746nobodyさん02/04/06 16:11ID:+jTWd3mh
>>739
すみません。説明不足でした。
文字コードは、Shift-JISです。
使用言語は、Parlです。
よろしくお願いします。
0747(-_-)02/04/06 16:16ID:Pfw6jEuQ
【コピペ1周年】4月7日同時多発オーダーIN吉野家【祭り】
(1)馴れ合い禁止。(一人で来る事。同伴禁止:いても知らぬ顔)
(2)「大盛りねぎだくギョク」を頼むこと。(並盛りねぎだくギョクも可)
(3)各会場ごとに指定時間厳守で現地集合。
(4)食ったら即帰る。
注)吉野家は家に帰るまでが吉野家です。

本スレ
http://ex.2ch.net/test/read.cgi/entrance/1017935504/l50
スレよりぬき等
http://www2.mnx.jp/carvancle/yoshigyu/
お祭り板
http://live.2ch.net/test/read.cgi/festival/1014549688/l50
0748(・∀・) ◆g183fDaI 02/04/06 16:27ID:???
http://elainfeene.vr9.com/
http://emupro.dk3.com/ pass:忍耐
http://isweb32.infoseek.co.jp//play/kyabema/urakai.html
http://noize2002.hypermart.net/
http://www.geocities.com/syamuneko1234/index.123.html
http://noir.dk3.com/
http://ryusei224.port5.com/index3.html
http://book-i.net/rboard/
http://isweb42.infoseek.co.jp/sports/snake2jp/
http://www.geocities.co.jp/Technopolis-Mars/7064/
http://geocities.com/pileekwd/accs/main.html
http://angelfire.lycos.com/ab7/cosmos2000/emyu.htm
http://wind.prohosting.com/theepage/thee.html
http://uniten.vr9.com/gate.cgi ID:defultuser PASS:0938
http://rainx.undonet.com/rain112165.html
0749 02/04/06 17:28ID:nd67Ze2k
レンタルサーバを借りていますがで dbmを使ったcgiがうまく動きません。
普通のCGIは動いているのですが、dbmが入っていないということはありえますか?
普通は、使えると聞いたのですが、使えないサーバもけっこうあるんでしょうか?

ちなみに本に↓のプログラムをためせば入ってるdbmが分かるといわれましたが
「表示すべきページがありません」になりました。

#! /usr/bin/perl

use Config;
print "Content-type: text/plain\n\n";
print "Result = ", $Config{extensions},"\n";
exit;
0750nobodyさん02/04/06 21:46ID:???
>>749
$Config{extensions}を調べてわかるのはデフォルトのエクステンションモジュールのみ。
システム(つか管理人)によっては他のブツも入れてるから、必ずしも正確ではない。
更に言うと、標準モジュールが存在しない環境ではConfigを調べる事すら失敗する。

このコードにしてみれ。

#!/usr/bin/perl

print "Content-Type: text/plain\n\n";
print eval{ require AnyDBM_File } ? "ok" : "not ok ($@)";


0751CGI初心者No.109502/04/06 22:53ID:???
今、UICの掲示板を借りています>もっと書き込み隊
複数設置してるんですが、どうも重い・・・。
そこで、エクスリアに自分で同じような掲示板を作ろうと思うんですがレンタルと
自作で表示速度とかって変わるものなんですか?
0752nobodyさん02/04/06 22:54ID:???
>>751
置くな。頼むから。
0753nobodyさん02/04/06 23:19ID:???
>751
Cで組め。
さもなくばカエレ
0754nobodyさん02/04/06 23:23ID:???
>>751
共用で置くな。頼むから。
075574002/04/07 01:17ID:???
>739==746
どうやらネタではなくほんとの初心者のようですね。これからはParlではなくPerlと書きましょう。
以下に処理例を書いておきます。

$len = 4;     # 抜き出したい文字数設定
$text= "2ch2ちゃんねる";

;# 印字するなら
print $text=~ /^((?:[\201-\237\340-\374][\100-\176\200-\374]|[\241-\337][\336\337]?|.|\n){$len})/o;

;# 代入するなら
($get)= $text=~ /^((?:[\201-\237\340-\374][\100-\176\200-\374]|[\241-\337][\336\337]?|.|\n){$len})/o;
0756nobodyさん02/04/07 02:32ID:GbMi0GS6
>>755
すみません。
PerlをParlと書いていました・・・。(鬱

参考になりました。
ありがとうございました。
0757nobodyさん02/04/07 05:50ID:???
>>751
そんなことも知らずに自作を考えている君はすごいよ。
0758川上02/04/07 17:12ID:adMQ+yzY
ご教授頂きたく宜しくお願い致します。

UNIXサーバーからNTサーバーへCGI(Perl)の
移転に伴いエラーが発生し原因が究明できず困っております。
プログラムとしてはCSV形式でデータを保存するデータベースです。
UNIXサーバーでは問題なく稼動しておりました。
状況としてはデータベースの検索処理を行っている部分では
データファイル($logfile)の読み込みは[open(IN,"$logfile")]で
処理しており問題なく動作しています。
しかし、新規書込みにおいて、[open(OUT,">>$logfile")]
また、修正において、[open(OUT,">>$logfile")]で処理したところ
ファイルが開けないというエラーが発生しております。

これは何が原因で起きているのか解らない為 どこをどう調べれば
いいのか困っております。
情報の至らぬ質問かと思いますが是非
考えられうる原因をご意見を拝聴致したく
何卒 宜しくお願い致します。
0759nobodyさん02/04/07 17:17ID:???
>>758
ソースとエラーメッセージを正確に提示していただければお力になれるかと思います。
0760川上02/04/07 17:52ID:adMQ+yzY
>>759さま
ありがとうございます。まず エラーメッセージですが
The specified CGI application misbehaved by not returning a complete set of HTTP headers.
The headers it did return are:

と表示されreturn are:以降にエラー箇所の表示が出ておりません。
open(OUT,">>$logfile1") || &error("Write Error : データファイル1");で
ファイルが開けなかった時にエラー画面を出すようにしておりまして
そのエラー画面が表示されおります。
本件には関係ないと思いますが
当初 移転設定時にjcode.plの設定エラー時にはreturn are:以降にプログラム内での
require './jcode.pl';のラインをエラーとして表示してくれました。
0761川上02/04/07 17:52ID:adMQ+yzY
ソースにつきましては
まず新規書込処理としてはフォームから受取ったデータを下記にて書込みをさせています。
----データの書込処理----
# ログを読み込み
open(IN,"$logfile1") || &error("Open Error : データファイル1");
@lines = <IN>;
close(IN);
# 1つ前の記事を取得し分解
($bno,$bp1,$bp2,$bq1,$bq2,$bq3,$bq4) = split(/<>/, $lines[$#lines]);
# 登録Noを取得
$no = $bno + 1;
# ログ更新処理
open(OUT,">>$logfile1") || &error("Write Error : データファイル1");
print OUT "$no<>$p1<>$in{'P2'}<>$in{'q1'}<>$in{'q2'}<>$in{'q3'}<>$in{'q4'}<>\n";
close(OUT);

----データの受取処理----

if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else { $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# 文字コード変換
&jcode'convert(*value,'sjis');
# 禁止文字変換
$value =~ s/<>/<>/g;
# 削除情報
if ($name eq 'del') { push(@DEL,$value); }
$FORM{$name} = $value;
$no = $FORM{'no'};
$DEL = $FORM{'del'};
$in{$name} = $value;
}
--------
0762川上02/04/07 17:53ID:adMQ+yzY
私が至らないために情報が不足しているかと思いますが、
他にどのような情報をご提示させて頂けばいいか
わからないために とりあえず こちらを書き込ませて
頂きました。 ご教授 宜しくお願い致します。
0763nobodyさん02/04/07 18:22ID:???
>>760
指定されたCGIアプリケーションは、HTTPヘッダーの完全なセットを返さないことにより
無作法に振る舞いました。それが返したヘッダーは次のとおりです:
0764nobodyさん02/04/07 18:25ID:???
>>763
Content-typeなどなどが変と。
0765川上02/04/07 18:41ID:???
>>763さま
早速 ご教授頂きありがとうございます。

情報としてヘッダー部分の表示が抜けておりました。
申し訳ございません。
ヘッダーのソースは
print "Content-type: text/html\n\n";
print "<html>\n<head>\n";
print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=Shift_JIS\">\n";
print "<title>タイトル</title></head>\n";
print "<body>\n";
としております。
エラーが発生した際に エラー画面を表示させておりますが
表示されたソースをみると出力されるべきソースが途中で終わっておりました。
今回のエラーとは関係ないかもしれませんが追記させて頂きました。
UNIX環境では問題なく動きNT環境ではデータファイルに書込みが出来ないのは
どういったときに発生するものなのでしょうか。
ご教授 宜しくお願い致します。
0766nobodyさん02/04/07 18:42ID:???
print "Content-type: text/html\r\n\r\n";
にしてみて。どっちでもいいんだけどこっちが正式。
0767nobodyさん02/04/07 20:49ID:???
スクリプトの冒頭で

use CGI::Carp qw(fatalsToBrowser);

して、出力されたエラーメッセージ書け。
0768川上02/04/07 21:25ID:???
>766 767 さま
レスありがとうございます。
試して エラーメッセージを書かせて頂きますので
宜しくお願い致します。
0769やさしいお兄さん02/04/07 23:26ID:???
>766
NPHスクリプトじゃない限りやってもやらなくても意味がないと思うゾ!
あと、Windows環境では、\r\n だと、印字するときに前もって binmode(STDOUT)
(標準出力の場合の例)をやっておかないと \x0d\x0d\x0a と3バイトになって
しまうのでは?
0770川上02/04/07 23:57ID:???
>やさしいお兄さんさま
レスありがとうございます。
私がご教授をお願い致しました件(758 760 761)で
他より頂きました情報に
ファイルへの書込権限がないので ファイルオープンが失敗しているのでは
と頂いたのですがNTサーバーでもパーミッション設定が必要なのでしょうか?
0771nobodyさん02/04/08 00:03ID:???
>770
そりゃいくらなんでも$Mをバカにしすぎ
0772やさしいお兄さん02/04/08 00:54ID:???
>770
ファイルロックのとことかどうやってる?

まぁ、どちらにしろソースを全部みないとなんとも言えないから
どこかにアップしてくれや。
0773nobodyさん02/04/08 05:15ID:AyL3x1HL
if(!$FORM{'name'}){$FORM{'name'} = "ナンシタン"};
と書いたんですが、オペラでやるとナナシタンとならずに空白で
そんままログファイルに書き込んでしまいます。

NN6やIE6では出来たんですが、なにか対処法などはあるのでしょうか?
0774nobodyさん02/04/08 05:16ID:AyL3x1HL
スマソ。
ナンシタンじゃなくてナナシタンでした。
あと、そんままではなくてそのままでした。
言語と同時に日本語を学びます。
0775みかど ◆D9/neH06 02/04/08 10:54ID:???
2chマガイなCGI交付してる所ないかな。
(既出なら悪い)
0776交付じゃないけどな02/04/08 10:59ID:???
>775
ttp://www.gedoh.org/aki/2ch/current/bbs/
C言語でいいなら。
0777nobodyさん02/04/08 23:55ID:???
age っつってんだろーがこのバカちんがっ!
0778nobodyさん02/04/09 11:12ID:TGMHutEB
バカちん
0779nobodyさん02/04/09 14:24ID:c4h4V4YQ
教えてください。
いま、LWPのSimpleってやつを使って、cgiの変数を色々を変えて
結果をどばっと落とすプログラムを書いてます。
それで、変数の指定の仕方ですが、変数がtextだと
http://hogehoge/cgi-bin/hoge.cgi?hoge=hero
で上手くいくのですが、
変数がtextareaだと上手くいきません。
どしたらよいでしょうか?
0780nobodyさん02/04/09 14:28ID:???
色々変えて結果をどばっと落としてみてください.
0781nobodyさん02/04/09 15:16ID:???
779は中国人。
0782初来板02/04/09 17:08ID:H7fQTBug
この板何?なんでスレ一覧の下のほうでもないのに、
去年のスレが平然とゴロゴロ転がってるわけ?
0783nobodyさん02/04/09 17:52ID:/BtheE/C
ファイルのアップロード処理をしたくて
http://member.nifty.ne.jp/hippo2000/perltips/Cgi.htm
を読みながら作ってたんですが、
upload()で取ってきたinputの値がファイルハンドルになってくれません。
マニュアルに「use strict;だとperlが文句を言う」と書いてあったので
その関数の最初でno strict;しています。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CGI.pm 邦訳
http://member.nifty.ne.jp/hippo2000/perltips/Cgi.htm
0883nobodyさん02/04/18 22:55ID:???
>>881 プ.知ったか厨ハッケン.
0884nobodyさん02/04/18 22:55ID:???
>>883
煽るだけならさるでもできるw
0885nobodyさん02/04/18 22:56ID:???
myは説明に関係ないので無視して
0886nobodyさん02/04/18 22:57ID:???
>>884 メソッドでVB厨って出る時点でアホ決定なんだよ、ボケ。
0887nobodyさん02/04/18 22:57ID:???
なんかCGI.pmもしらんアホが吠えてるなw
0888nobodyさん02/04/18 23:02ID:???
なんだ、880も煽りか。
0889nobodyさん02/04/18 23:07ID:???
>>887
CGI.pmなんか使わないと何にもできない厨房もね。w
0890nobodyしゃん02/04/18 23:17ID:BuBmgSk0
EUCで記述したperlスクリプトから、外部ファイル(*.jsです)にshift-jisで書き出したいのですが、
何かいい方法はありますか?ご教授願います。
0891nobodyさん02/04/18 23:24ID:???
>>890
jcode.pmかnkf
0892nobodyさん02/04/18 23:29ID:???
>>889
CGI.pmを知っている=CGI.pmなんか使わないと何にもできない

なのか?一回脳外科行けやボケ。
0893nobodyさん02/04/18 23:31ID:???
>>892
CGI.pmが無くても何でもできる−:知る必要がない

逆取れ。
0894nobodyさん02/04/19 00:28ID:zFUx8GfY
気に入ったスクリプトのソースを見る方法ってないですか?
ちょっと参考にしたいなぁと思ってるんですが。
0895nobodyさん02/04/19 00:39ID:???
ソース公開してくれるのを待つ、作者にメールを出す、サーバ管理者がトチ狂うのを待つ。
まだ他にも方法はありそうだが・・・・・・
0896nobodyさん02/04/19 00:48ID:???
>894
スクリプトだったら、テキストエディタってのを使うと見ることができるYO!
0897nobodyさん02/04/19 00:54ID:zFUx8GfY
>>896
マジでか。
0898nobodyさん02/04/19 01:50ID:???
>>893
>CGI.pmが無くても何でもできる−:知る必要がない

一度CGI.pmモジュール読んでからいってほしい
089986902/04/19 15:23ID:1m0wphwT
>>869ですが、「アフォはくんな」でしょうか。
IEのセキュリティもプライバシーも最低レベルに落としている知人に
アクセスしてもらうと正常に動作するのですが(WinXp&IE6)。
同じ設定にしてもウチノハクッキーすら食べてくれない状態で。

ちなみに以下の文をヘッダーに組み込んでみましたが、ぜんぜん効果なしでした。
P3P: CP='ONLi COM CUR OUR'

セキュリティー初期のままでもクッキー食わせる方法教えていただけませんか。
0900クッキー使う奴はアホ。02/04/19 15:55ID:???
http://www.microsoft.com/japan/developer/articles/dnpriv/html/ie6privacyfeature.asp
http://www.microsoft.com/japan/developer/workshop/security/privacy/overview/createprivacypolicy.asp
http://www.nmda.or.jp/enc/w3c/cr-p3p-20001215j.html
http://fs.pics.enc.or.jp/p3pwiz/manual_ja.html
0901nobodyさん02/04/19 19:47ID:1m0wphwT
>>900
アホです、ありがとうございます。
nmda.or.jp参考になりました。(これは見つからなかった)
0902nobodyさん02/04/19 23:59ID:???
>>893 痛すぎ。
0903某研究者02/04/20 09:17ID:Gxe0B6+C
しかしCGI用のインストーラ(FTPソフト改造か)と言うのは作成出来ぬ訳なのだろうか
(パーミッション設定・ディレクトリ作成をWINDOWSのアプリケーションの様に
 自動で出来ないのか)
0904nobodyさん02/04/20 10:38ID:???
>>903
出来る。しかしなんでお前は無知な癖にしゃべり方が偉そうなんだよ。
0905nobodyさん02/04/20 11:26ID:???
研究者と教えてくんは違うぞ?
0906nobodyさん02/04/20 15:56ID:???
FTPインストーラ付属CGI
それイイ
0907nobodyさん02/04/20 16:14ID:Ebv3CsfS
CGIでフレームセットだけを自動生成して、既存のHTMLファイルを表示させる
プログラムを作成したのですが、読み込んだHTMLファイルのエンコードがEUCに
なっていしまいます。

CGIファイル側では、

<html>
<head>
<title>メールマガジン</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<frameset cols="180,*" frameborder="NO" border="0" framespacing="0">
<frame name="ContentsFrame" scrolling="NO" noresize src="contents_2.htm">
<frame name="InformationFrame" src="amc.htm">
</frameset>
<noframes>
<body bgcolor="#FFFFFF" text="#000000">
</body>
</noframes>
</html>

このように記述します。
読み込むHTML側には
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
このように記述しています。


ブラウザは、IE6です。
使用言語は、Parlです。
0908nobodyさん02/04/20 16:56ID:???
>>907
jcode.pl 使えば?
0909nobodyさん02/04/20 17:14ID:Ebv3CsfS
>>908
どの部分で使えばよいですか?
CGIでフレームセットを表示した後、フレームを構成するHTMLもCGIで
表示してしまえば済むのですが、サーバーの負荷を考えてHTMLとして
表示させたいのですが、無理ですか?
0910nobodyさん02/04/20 17:24ID:???
>907
おまえが何をやりたいのかさっぱりわからん。
0911nobodyさん02/04/20 17:29ID:???
Parlってなに?
0912nobodyさん02/04/20 17:31ID:Ebv3CsfS
>>910
フレームセットを自動的に生成+それぞれのフレームに対するアクセス数を
カウントするプログラムです。
フレームでページを作った場合、個々のページにアクセスするには、
それぞれフレームセットを作らなければいけませんよね?
それを解消する+カウンタです。

>>911
すみません。また間違えました。
Perlです。
091390802/04/20 17:45ID:???
>>910 が言っているように、「どこを」「こうしたら」「こうなった」という
事が記述されてないから、適当に答えた(w

>>907 あんたは逆にこの質問されて答えられるのか?
0914nobodyさん02/04/20 18:33ID:Ebv3CsfS
>>913
すみません。
質問が具体的ではなかったですね。

> あんたは逆にこの質問されて答えられるのか?
分かりません・・・。
解決方法が分からないので、質問させて頂きました。
0915nobodyさん02/04/20 19:32ID:???
>>907
それって読み込んだHTMLのエンコードが本当にEUC-JPになっているの?
それとも,エンコードはSHIFT_JISなのにブラウザがEUC-JPだと判別してしまっているの?

HTMLファイルがもともとEUC(・∀・)デシタ!! とかいうオチのような気が.
0916nobodyさん02/04/20 19:41ID:Ebv3CsfS
>>915
恐らく、ブラウザがEUC-JPだと判断していると思われます。
あと、HTMLファイル自体は、Shift-JISです。
0917nobodyさん02/04/20 19:42ID:???
あの〜負荷ってどういう時に掛るのでしょうか・・・

サーチエンジンの場合、データーとCGI本体とを別々のサーバーに置いた時って、
どっち側に負荷が掛るのでしょうか・・・

ほんとすんません・・・ネタじゃないです
0918nobodyさん02/04/20 19:46ID:???
サーチエンジンで考えられる負荷
・CGIスクリプトのコンパイル
・ファイルオープン
・データのループ (whileやforeach)
よってCGI側
0919nobodyさん02/04/20 19:57ID:???
>916
恐らくって… ソースを表示すれば断言できるのに.

じゃあ,そのHTMLファイルを,CGIで生成したフレーム経由ではなく
URL直接指定で開くとどうなる?
092091702/04/20 20:11ID:???
>>918
ありがとう!
0921nobodyさん02/04/20 21:17ID:Ebv3CsfS
>>919
ソースを表示って、秀丸とかでいいんですよね?
確認しました。

ブラウザでは、もちろん一発でShift-JIS表示されます。
0922nobodyさん02/04/21 01:58ID:???
>921
うーん,そうか.
じゃあ今の情報からは思い当たるものが無いや.役に立たなくてスマソ.
CGIだから起こった問題ではない気がするんだけどね…
0923nobodyさん02/04/21 02:28ID:2DSDrCKh
>>922
そうですか・・・。
ありがとうございました。
フレーム生成CGIからさらにCGIを呼び出すことにします。
0924nobodyさん02/04/21 02:28ID:???
>922
ほんとに役立たずだからびっくりしたよ。
0925nobodyさん02/04/21 02:32ID:???
>>924
この時間にスレ巡回して煽りレスのみを書き込むお前にもびっくりだ。
0926nobodyさん02/04/21 04:33ID:5EokjXuO
>925
おぉ、キミもそう思ってくれるんだぁ。

煽りレスもびっくりだけど 922 の役立たずぶりにももひとつびっくりってか!
0927nobodyさん02/04/21 04:51ID:???
>>907
ほとんど状況がわからんまま言うが、
CGIの問題とは違っていそうだからスレ違いではないかと思う。

ひょっとしてこれか?
> <title>メールマガジン</title>
> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
シフトJIS指定する前に日本語書いちゃダメ!
それをやっているファイルを全部書き換えろ!
0928nobodyさん02/04/21 05:21ID:???
念のため…

<HTML LANG="ja">

も入れておくといいかも
0929nobodyさん02/04/21 11:07ID:6JsTHOqF
今非常にわからない問題があって、困っています。
どなたか解決法がわかれば教えて頂きたいのですが。

現在CGIStationさんのANS.Qを複数ページに設置しています。
少々HTMLを加えてして2ちゃんねるみたいなテーマごとのミニ掲示板みたいにしているのです。
で、荒しが多いのでアクセス制限しているのですが、この作業をなんとかして自動化
したいのです。

1今までのやり方は何も入ってないansq.cgiにアクセス制限のIPを書く
2既存のものをバッチファイルで一気に削除
3バッチファイルで新しいansq.cgiをコピー
4エクセルに作ってあるパラメータ表から掲示板ごとのデータをコピーして貼り付け
(エクセルからCGIファイルにハイパーリンクを貼って開いています)
という順でやっています。
ところが4の段階でどうもミスが多く違うCGIに違うデータが入り込んでしまうことも
しばしばあり、なんとか自動化してアクセス制限のスピードを上げたいと思っています
エクセルから他のアプリケーション(この場合はテキストエディタ)
を開きセルの内容をCGIの適切な場所にコピーする
作業を自動化することはできないのでしょうか。
wordで開いて差し込みでなんとかならないものかと思いましたが
何ともなりませんでした。
VBAなども検索してみましたがさっぱりわかりません。
何かよい方法があれば知恵を貸して頂きたいのです。
よろしくお願いします。
ガイシュツだったらすいません
0930nobodyさん02/04/21 11:18ID:2DSDrCKh
>>827
そうなんですか・・・。
逆にするだけで解決してしまいました。
CGIの問題ではなくHTMLの問題だったんですね。

>>928
企業のページなどは、このような表記をしているページもあるみたい
ですね。
早速、入れてみました。

参考になりました!ありがとうございました!!
0931nobodyさん02/04/21 11:40ID:1/Tdsylw
.htaccessでhttp://hoge.com/へのアクセスでindex.cgiを実行させてます。
cgiに引数を渡すには
<a href="?data1=data">とか
<form action="?data1=data">とか
cgi内で
print "Location: http://hoge.com/?data1=data";
とか書いても構わないのでしょうか。僕の環境で試したところ全部正常動作したんですが、
サーバーの設定などに関係なく動作可能でしょうか。
0932nobodyさん02/04/21 12:44ID:???
>>918
データー側にも負荷は掛るだろう?
0933nobodyさん02/04/21 13:43ID:???
>>931
俺だったら

<a href="./?data1=data">
<form action="./?data1=data">

↑こう書く
0934nobodyさん02/04/21 13:43ID:???
>>932
もちろんそうだけど>>917に
>どっち側に負荷が掛るのでしょうか・・・
って書いてあったから
0935nobodyさん02/04/21 15:44ID:???
そろそろ次スレか?
ところでなんでこのスレは5.01なんだ。IEじゃねーつうの。
0936nobodyさん02/04/21 17:19ID:???
>>933
なるほど、そういえばそんな書き方もありましたね。
サンクスです。
0937nobodyさん02/04/21 18:37ID:???
>>918

>>917の時って、データー側の負荷って殆ど無いでしょ?

093893702/04/21 18:38ID:???
>>918 → >>932

スマソ
0939a02/04/21 22:22ID:???
perlでkent-webのデイカウンタみたいのが作りたいのですがどこか初心者向けの解説ペーゾしりませんか?
0940nobodyさん02/04/21 22:28ID:IX+pJPo5
BBSにPassword認証つけたいんだけど
認証を行ったブラウザ(別のウインドウには影響なし)が起動している間だけ、
変数(Passwordデータ)を記憶させることってできない?
クッキーやJAVAの範囲になっちゃうのかな・・・
0941nobodyさん02/04/21 22:51ID:Ld3WJnEP
■最強のminiBBS++の改造版を発見。
http://www5d.biglobe.ne.jp/~coolj/bbs.html
0942nobodyさん02/04/21 22:55ID:Ld3WJnEP
>>941
確かに優れてるな。とても軽い。
0943nobodyさん02/04/21 22:56ID:Ld3WJnEP
>>940
貴様のサイトか?
0944nobodyさん02/04/21 23:32ID:???
>>939
まずは、CGIとはなんたるものか理解する所から始めないと駄目な様だね…
で、その解説ページも検索して、読み尽くしても解らなかったらここにこいや
0945nobodyさん02/04/21 23:33ID:???
>>940
cookie ぐらいしか思い付かないな
0946nobodyさん02/04/21 23:48ID:IX+pJPo5
>>945
なるほどやはりcookieですか・・・
cookieスレ逝ってきます
0947nobodyさん02/04/21 23:50ID:???
>>940
たのウインドウが起動している間だけってのは難しいけど、
簡単にやるなら>>945で。
もちょっと手の込んだ方法でやるなら、セッションオブジェクトが使える
言語でやると思う。
0948nobodyさん02/04/22 13:14ID:iPGLjlXl
よく掲示板にuriと思しき文字列を
<a href="string">string></a>
っていう風に置換する奴がありますけど、
2バイトコードに対応させるには
正規表現をどう書けばいいんでしょうか?

日本語のuriなどに対応させたいんですが・・・。
0949nobodyさん02/04/22 13:21ID:???
ほにゃららhttp://www.hogehoge.come/あほ/って感じ。?aho
文章とURIが混ざったらイヤン。
0950nobodyさん02/04/22 13:24ID:???
>948
そりゃかなり無謀な話だな。
「リンクさせたいURIは"<>"や"[]"で囲む」っつーマークアップ規則を提示してそれに従わせるとか。
095194802/04/22 13:35ID:???
>949
そういう場合困るんですよね・・・・・・。

>950
そういう風にする方がいいですね。
どうも、ありがとうございます。

0952nobodyさん02/04/22 17:26ID:mWLoTPYT
http://bbs.sekkaku.net/bbs/C.html

このようなアイコン掲示板について質問なのですが、
自前のアイコンを使用するためアイコンのURLを入力してカキコしたとき、
一般の訪問者にはこのURLが分からないようにするPerlスクリプトというのは
技術的に可能でしょうか?
0953nobodyさん02/04/22 17:45ID:???
>>952
別サーバーに置かれてる画像を表示させるときに
<img src="http://www.hoge.com/hoge.gif"> ではなく
<img src="hoge.gif"> だけで表示させれるかということ?
0954nobodyさん02/04/22 20:54ID:???
>>952
ダウンロードを抑制する為にか?そりゃ無理だな。
フラッシュを使えば出来るかもしれんが。
095595202/04/22 21:58ID:???
>>953
>>954
レスありがとうございます。

自分のホームページのアドレスを見せたくないから
そういうのに改造してくれないか、と知人に頼まれたもので。

例えば、
<img src="http://www.hoge.com/hoge.cgi?kiji_icon=1">
とすれば、スクリプトを設置しているサーバー側で、
「ログファイルの1番目に記述されているアイコンURLを参照、画像を読み込んで表示」
といった処理を行い、ブラウザ等から見てもそのURLが分からないようにする、
といったことを考えています。

しかしその処理を行えるスクリプトが思い付かず、
そもそもそういったことが可能なのかどうか質問させていただきました。

Perl超初心者でして、バカな考え方なのかもしれませんが...
0956nobodyさん02/04/22 22:38ID:IEsnFENe
「web裁判」のcgiをダウンロード出来るサイトを教えて頂けませんか?
ここなら誰か御存知と思うのですが…
0957nobodyさん02/04/22 22:45ID:???
>>955
とりあえず、余裕で可能。
0958nobodyさん02/04/23 00:46ID:???
>>955
>>952
このような安易な発想が無用のネットワークトラフィックを産み出す…
0959Dream 黒星02/04/23 01:35ID:???
>958
無能のくせに、知ったかぶり発見!
0960nobodyさん02/04/23 02:58ID:???
>955
画像をCGI経由にするって事は、その分サーバーに負荷をかけるってことだ。
しかも画像の数が増えれば増えた分だけ負荷が増える。
共用鯖ならやめておいた方がいい。
お前一人で使ってる鯖じゃないんだ。
0961nobodyさん02/04/23 06:28ID:Qw5U18DO
>952
Locationで飛ばせば良いかも。
URL直打ち対策の処理をしておけばなお良し。
ヘッダ読まれたらそれまでだけど・・・。
0962nobodyさん02/04/23 06:32ID:ABgbgZ3N
とあるサイトで掲示板などのCGIにはセキュリティホールが
たくさんあることを知りました。よく知られている
あのCGIもあのCGIも危険らしいです。
そんでもって、危険なのは分かったんですが、どのように
危険なんでしょうか。
初心者でもこのぐらいやっとけっていう対策とかありますか。
0963nobodyさん02/04/23 06:37ID:???
>962
open,exec,systemなどに外部から入力されたデータを使わない。
0964nobodyさん02/04/23 07:02ID:???
なるほど、って全然わからないんで調べときます。
096595202/04/23 08:24ID:JSeGUqgt
なるほど...
これだとやはり負荷が問題になるんですね。
隠し通すことのできない Location もやめておきました。

知人にはできない、と言っておきます。
ありがとうございました。
0966nobodyさん02/04/23 09:03ID:???
>>962
スクリプトの#!行に"-T"を追加。
0967nobodyさん02/04/23 14:01ID:???
my $file
とかのmyってどうな効果があるの?
0968nobodyさん02/04/23 15:05ID:???
>>967
( ゚д゚) ( ゚д゚) ( ゚д゚) ( ゚д゚) ( ゚д゚) ( ゚д゚) ( ゚д゚)ポカーン
0969カウントダウン屋02/04/23 19:41ID:???
31
0970カウントダウン屋02/04/23 19:41ID:???
30
0971カウントダウン屋02/04/23 19:41ID:???
29
0972カウントダウン屋02/04/23 19:41ID:???
28
0973カウントダウン屋02/04/23 19:41ID:???
27
0974カウントダウン屋02/04/23 19:41ID:???
26
0975カウントダウン屋02/04/23 19:41ID:???
25
0976カウントダウン屋02/04/23 19:42ID:???
24
0977カウントダウン屋02/04/23 19:42ID:???
23
0978カウントダウン屋02/04/23 19:42ID:???
22
0979カウントダウン屋02/04/23 19:42ID:???
21
0980カウントダウン屋02/04/23 19:42ID:???
20
0981カウントダウン屋02/04/23 19:42ID:???
19
0982カウントダウン屋02/04/23 19:42ID:???
18
0983カウントダウン屋02/04/23 19:42ID:???
17
0984カウントダウン屋02/04/23 19:43ID:???
16
0985カウントダウン屋02/04/23 19:43ID:???
15
0986カウントダウン屋02/04/23 19:43ID:???
14
0987カウントダウン屋02/04/23 19:43ID:???
13
0988カウントダウン屋02/04/23 19:43ID:???
12
0989カウントダウン屋02/04/23 19:43ID:???
11
0990カウントダウン屋02/04/23 19:44ID:???
10
0991カウントダウン屋02/04/23 19:44ID:???
9
0992カウントダウン屋02/04/23 19:44ID:???
8
0993カウントダウン屋02/04/23 19:44ID:???
7
0994カウントダウン屋02/04/23 19:44ID:???
6
0995カウントダウン屋02/04/23 19:44ID:???
5
0996カウントダウン屋02/04/23 19:45ID:???
4
0997カウントダウン屋02/04/23 19:45ID:???
3
0998カウントダウン屋02/04/23 19:45ID:???
2
0999カウントダウン屋02/04/23 19:45ID:???
1
1000100002/04/23 19:45ID:???
                今だ!1000ゲットォォォォ!!
``)              ̄ ̄ ̄∨ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
`)⌒`)          (   ∧∧         ∧∧   )      (´⌒(´
≡≡≡;;;⌒`)≡≡≡⊂´⌒⊃ ゚Д゚)⊃    ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡ ;;⌒`)⌒`)   ̄ ̄
                  ズザーーーーーーーーッ


                 ・・・・・・・・・・・・・・・・・・
    ``)          ̄ ̄ ̄∨ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
    `)⌒`)     (   ∧∧         ∧∧   )      (´⌒(´
       ;;;⌒`) ⊂´⌒⊃; ゚Д゚)⊃    ⊂(゚Д゚;⊂⌒`つ (´⌒;;; ;;⌒`



       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
        (  ケコーンしよう・・・
   。o ○\____________/
  .∧∧ヘヘ      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
  (  ノ  ) 。o○(  うん・・
  ./  |  \   \_________/
 (___ノ(___ノ
/       \
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。