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

【Perl】初心者コーナー Part14

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/07/18 16:34ID:jemWJhH3
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

CGIだけど、なんか質問ある? Part 6 (その2)
http://pc.2ch.net/test/read.cgi/php/1025930486/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4】
http://pc.2ch.net/test/read.cgi/php/1012839651/

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
073072802/08/02 23:49ID:fhO9IRlh
>729
ありがとうございますです。
非常に参考になりました。

0731nobodyさん02/08/03 00:24ID:4FNUCrqf
叩かれ覚悟で質問します。htmlもロクにわかってません。
FORMで打ち込んだ内容をテキストに保存するCGIを作ってます。
#!/usr/local/bin/perl
print<<"EOM";
<form action="./test.cgi" method="POST">
<input type=text name=sub size=50 value="$naiyou">
<input type=submit value="送信する">
</form>
EOM
open(OUT,">> log.txt");
print OUT "$naiyou";
close(OUT);

すいませんアドバイスお願いします。
0732nobodyさん02/08/03 00:29ID:???

とりあえず、送られてきたデータを受け取れ。
話はそれからだ。


#!/usr/bin/perl
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/,$buffer);
foreach $pair(@pairs){
$value =~ tr/+/ /;
$value =~ s/%([0-9a-zA-Z]{2})/pack("H2", $1 )/eg;
$FORM{$name} = $value;
}

print<<"EOM";
<html>
<form action="./test.cgi" method="POST">
<input type=text name=sub size=50 value="naiyou">
<input type=submit value="送信する">
</form>
</html>
EOM
open(OUT,">>log.txt");
print OUT "$FORM{'sub'}";
close(OUT);
exit;
__END__
073373002/08/03 00:34ID:???
1 CGI 掲示板のログを、なるべく安全に保存したい。
2 "$/" INPUT_RECORD_SEPARATOR に "\n" を代入(する必要は多分無い)
"\r\n" を <br> に変換し "\r" "\n" を削除する。
"\r" をセパレータにしてデータを書き込む。
だいたいこんな感じ。
while($i < $log_countmax}){
 foreach(keys(%TMP)){$line .= "$_=$TMP{$_}\r";}
 push(@lines, $line);}

読み込み時には split にリミットを指定する事で文中の "=" は無視できる。
($key, $value) = split(/=/, $_, 2);

3 少ない環境での動作チェックはしましたが、同様の処理をしている
スクリプトを見かけないので、なんとなく不安が残ります。
何か問題点が有りそうでしたら、ご指摘下さい。
もちろん上記スクリプトは、意味が分かる程度に簡略化した物で動きませんよ?
073473102/08/03 00:43ID:4FNUCrqf
>>732
ありがとうございます!
でもサーバーエラーがでます。
なぜだろう・・ちゃんとパスやパーミッションも合ってるのに。
073573202/08/03 00:46ID:???
適当に書いたから(^^;
一応、データの受け取りはよく使われる。
↓こんなのが。

sub read_form {
local($pair,$buffer);
if($ENV{'REQUEST_METHOD'} eq 'POST'){
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}elsif($ENV{'REQUEST_METHOD'} eq 'GET'){
$buffer = $ENV{'QUERY_STRING'};
}
local(@pairs) = split(/&/,$buffer);
foreach $pair(@pairs){
local($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-zA-Z]{2})/pack("H2", $1 )/eg;
$FORM{$name} = $value;
}
0736nobodyさん02/08/03 00:51ID:???
Content-Type: text/html
を忘れてたからだ。

print<<"EOM";
のあとに
Content-Type: text/html<改行>
<改行>
入れてみて。
0737nobodyさん02/08/03 00:55ID:???
foreach $pair(@pairs){
の直後に
local($name,$value) = split(/=/,$pair);
も忘れてた。
回線切って首(略
073873102/08/03 01:07ID:4FNUCrqf
>>731
表示できました。
でも送信してもlog.txtに書き込まれないみたいです。
もうちょっとからかってみます。
0739nobodyさん02/08/03 01:10ID:???
>もうちょっとからかってみます。
漏れはからかわれていたのかΣ(゚д゚lll)
074073102/08/03 01:13ID:4FNUCrqf
>>739
いやそういう意味じゃないです!すいません。
自分でcgiをからかうという意味です。
変な言い方ですいません。
0741nobodyさん02/08/03 01:20ID:???
ローカルでテストしてみたけど、ちゃんと書き込まれてる。

#!/usr/bin/perl
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/,$buffer);
foreach $pair(@pairs){
local($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-zA-Z]{2})/pack("H2", $1 )/eg;
$FORM{$name} = $value;
}

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

<html>
<form action="./test.cgi" method="POST">
<input type=text name=sub size=50 value="naiyou">
<input type=submit value="送信する">
</form>
</html>
EOM
open(OUT,">>log.txt");
print OUT "$FORM{'sub'}";
close(OUT);
exit;
__END__
074273102/08/03 01:30ID:4FNUCrqf
>>741
できました。
すごい勉強になりました。
感謝!
0743nobodyさん02/08/03 06:08ID:???
すいません

$value =~ s/%([0-9a-zA-Z]{2})/pack("H2", $1 )/eg;

これはいったいどういう処理をしているのでしょうか?
0744nobodyさん02/08/03 08:11ID:yBArvQmy
携帯からファイルをアップロードできるCGIを作っているんですが、
自分の所に携帯が無いのでどこを気をつけていいのか教えて頂けませんでしょうか?

Googleで6時間以上探し回っているんですがヒントすら見つかりません。
どなあたかご教授お願いします。
074574302/08/03 09:10ID:???

s/%([0-9-zA-Z]{2})/pack("H2", $1 )/eg;

というのは %12 や %a7 などにマッチさせて
pack("H2",$1)というのに変換するということはなんとなくわかるんですが
このpack("H2",$1)というのは具体的に何をしているのか解説しているサイト
ないでしょうか?もしくはどなたか答えてくれる方いましたらよろしくお願いします。
0746nobodyさん02/08/03 09:36ID:f5spmMMH
>>744
携帯電話のローカルな情報をアップロードするって話なの?
どこに気をつけるとかいう以前にできるか否かは検討したのか。

>>745
perldoc -f pack すると
H A hex string (high nybble first).
とあるよ。
0747nobodyさん02/08/03 10:09ID:y5M4ReYw
>745
http://www.goo.ne.jp/default.asp?MT=perl+pack&act.search=%A1%A1%B8%A1%BA%F7%A1%A1&top=gtop&_v=2

0748nobodyさん02/08/03 12:08ID:???
>>702
こちらの作ってるスクリプトもそれと同じような構造なのですが、
どうも自分のやろうとしている事はレコードを使わないといけないようですね。
ただ、検索してもレコードやリファレンスの構造がいまいちよく分からないんで、
HTML::Template以外の方法を使うことにします。
それほどこのモジュールにこだわる必要もないんで・・・もうしわけない。
0749nobodyさん02/08/03 20:59ID:???

Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

このようなエージェントを利用して使用ブラウザと使用OSを取得したいと考えています。
例えば上の場合だと

$browser = "IE 5.5";
$os = "Windows XP";

というような感じに代入させたいのですが。。
0750nobodyさん02/08/03 21:13ID:???
>>749
上の例だと、IEは5.01じゃないのか?
しかもOSも2000。
0751nobodyさん02/08/03 21:46ID:???
>>750

そうでした。
どうすればいいのでしょうか?
0752nobodyさん02/08/03 21:54ID:???
ここでも見たらどうかね?

http://www.futomi.com/subroutine/ua.html
0753nobodyさん02/08/04 01:18ID:8/YQ8REX
始めまして。質問させていただきます。
フォームメールでローカルに有るファイルを添付させたいのですが、上手く出来ません。
送信したときにローカルファイルをサーバー上に一時ファイルでローカルファイルの
コピーを作成できないみたいなのです。
名前だけの空っぽのファイルができてそれが添付されてメールが届きます。
どうしたらファイルのコピーが作れるのでしょうか。
どなたかよろしくご教示ください。
0754nobodyさん02/08/04 01:26ID:???
Cで言うところのfscanfってPerlではなんて関数なんですか?
0755nobodyさん02/08/04 01:36ID:???
>>753
そのソースを見ないことには改善できないよ。
075675502/08/04 01:36ID:FrE7nmXK
デコード処理を行ってるつもりなのですが、
まったく反映されず、どこが悪いのかも分かりません。
ご指摘お願いします。
075775602/08/04 01:37ID:FrE7nmXK
sub decode {
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
else {
$buffer = $ENV{'QUERY_STRING'};
}

$i = 0;
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);

$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
075875602/08/04 01:37ID:FrE7nmXK
&jcode'convert(*value,'sjis');
&jcode'convert(*name,'sjis');

$value =~ s/</</g;
$value =~ s/>/>/g;

$value =~ s/\r\n/<br>/g;
$value =~ s/\r/<br>/g;
$value =~ s/\n/<br>/g;

$value = $form{$name};

$name = $form{'name'};
$comment = $form{'comment'};

@num[$i]=$value;
$i=$i++;
}
0759nobodyさん02/08/04 01:45ID:???
あーぁ、やっちゃったな。CGIスレにリンク張ってやりたい処理と現状を書くべきなのに。
076075602/08/04 01:47ID:FrE7nmXK
>>759
知りませんでした。
スイマセン
076175302/08/04 01:55ID:8/YQ8REX
すみませんでした。
下に書いてあるふうに、ファイル名を取得して空の同名のファイルをサーバ上の
指定したフォルダに作成してるんですが、その作ったファイルの中にデータを書き
こめないんです。
どうしたら良いかご教示いただけないでしょうか。

$filename = $FORM{$tenpu};
$c_type = 'Content-Type';
@tmp = split(/\\/, $filename);
$tmpfile = pop(@tmp);

$file_path = "./mail_tmp/$tmpfile";
open(OUT, ">$file_path");
while($tmp_byte=read($filename, $buffer, 1024)) {
print OUT $buffer;
}
close(OUT);
0762nobodyさん02/08/04 02:16ID:???
>>756
&jcode'convert(*value,'sjis');
&jcode'convert(*name,'sjis');

これは必要か? サーバ環境は?
0763nobodyさん02/08/04 02:21ID:???
>>761
$file_path = "./mail_tmp/$tmpfile";

$tmpfile に値ある?
mail_tmp のパーミッションは?
076475302/08/04 02:33ID:8/YQ8REX
763さん
すみません、値というと・・・?
mail_tmpのパーミッションは777です。
0765nobodyさん02/08/04 02:35ID:???
>>763
値というと、つまり、ファイル名がちゃんと入っているの? ってこと。
076675302/08/04 02:40ID:8/YQ8REX
あ、はい。ちゃんと名前は入ってきています。
この空っぽのファイルが添付されて送られてきてしまいます。
0767nobodyさん02/08/04 02:46ID:???
>>766
>>761以前の処理ってどうなってる?
076875302/08/04 02:55ID:8/YQ8REX
761より前の処理は
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;
$value =~ s/&/&/g;$value =~ s/"/"/g;$value =~ s/\,/,\;/g;
$FORM{$name} = $value;
}
です。
それで761の処理以降はsendmailの処理になってます。
サブジェクトや添付ファイルのエンコードとかもそこでやってます。
0769nobodyさん02/08/04 02:57ID:???
>>768
だったら、もうすでに標準入力からすべて読み込んでるわけだから当然ファイルは
空になります。
077075302/08/04 03:03ID:8/YQ8REX
そうなんですか!読んでても残ってるのかと思ってました。
もう1回やりなおしてみます。本当にありがとうございました。
0771nobodyさん02/08/04 06:22ID:???
>>752

いいもの教えてくれてありがとうございました
0772クッキーのオンオフ02/08/04 16:22ID:???
質問失礼します。
ユーザー環境でクッキーのオンオフを確認し、
クッキーオフならhidden属性を表示しないようにしたいのですが、
クッキーのオンオフをその場で見極める方法などはありますでしょうか?

自分ではヘッダ情報でクッキーを書き出してから、$ENV{'HTTP_COOKIE'}で
再取得できればクッキーオンだと確認できると思っていたのですが、
クッキーを記録したその場では$ENV{'HTTP_COOKIE'}が更新されないようで
上手くいきませんでした。

クッキー保存と読み込みを別スクリプトで行なえばいいのですが、
それだとサーバーへのアクセスも増えますし、訪問者の人の
手間も増えてしまいます。

クッキーのオンオフをその場で確認する方法、
もしくは$ENV{'HTTP_COOKIE'}の再読み込みをする方法を
ご存知な方がいらっしゃいましたら、どうかご教授ください。
よろしくお願いします。
0773apholist02/08/04 21:57ID:DUVpmc74
ActivePerl、Apache2.039でCGI動かしてるんですけど
いくつかのCGIで初期表示のあと、更新しようとすると

couldn't create child process: 22:
couldn't spawn child process:

というようなエラーが表示されます。何が原因だと
考えられますか?
0774nobodyさん02/08/04 22:01ID:???
子プロセスを作れませんでした?

UNIX専用の関数とか使ってない?
0775apholist02/08/04 22:06ID:DUVpmc74
>>774
あるかも。調べる方法ってあります?
0776apholist02/08/04 22:27ID:DUVpmc74
とりあえあう、Flockと、symlinkは外しました。
他にもありますか?
なかなかまとまったページがないっす。
0777nobodyさん02/08/04 22:29ID:???
fork とかも。
どのプラットフォームでも動くようなCGI使えや。
0778apholist02/08/04 22:49ID:DUVpmc74
>>777
難しいこと言うなぁ。簡単なことなのか?
どのプラットフォームでもっていうと、
チャット、掲示板、カウンターなどほとんどWinでは
難しいような気がするんだけど。
まあ、Winで作られたものならWinで動くんだろうけど。

とりあえず、forkチェックしてみます。
「とか」って言ってるけどなんで知ってるの?常識?
0779apholist02/08/04 23:00ID:DUVpmc74
スマソ。perlのドキュメントにありますた。

Some functions that work on Windows NT/2000 reportedly do not work or are buggy on Windows 95. An example is flock().

Certain functions don't seem to work on ActivePerl.
There are several functions that are unimplemented in the ActivePerl system. Here is a complete list of unimplemented functions:

Functions for processes and process groups
alarm(), getpgrp(), getppid(), getpriority(), setpgrp(), setpriority()

Fetching user and group info
endgrent(), endpwent(), getgrent(), getgrgid(), getgrnam(), getpwent(), getpwnam(), getpwuid(), setgrent(), setpwent()

System V interprocess communication functions
msgctl(), msgget(), msgrcv(), msgsnd(), semctl(), semget(), semop(), shmctl(), shmget(), shmread(), shmwrite()

Functions for filehandles, files, or directories
link(), symlink(), chroot()

Input and output functions
syscall()

Fetching network info
getnetbyname(), getnetbyaddr(), getnetent(), getprotoent(), getservent(), sethostent(), setnetent(), setprotoent(), setservent(), endhostent(), endnetent(), endprotoent(), endservent(), socketpair()

See the perlport and Win32 documentation pages for more information on the portability of builtin functions in ActivePerl.

だって。コピペしないほうがよかったか?
0780apholist02/08/04 23:29ID:DUVpmc74
うぉー全部チェックしたがまだ同じエラーだ…。
0781nobodyさん02/08/04 23:46ID:???
>>780
その前に、ごく簡単なCGIでもそうなるか試した?
0782apholist02/08/05 00:02ID:vCl4cucl
>>781
ごく簡単なCGIなら動きます。
掲示板も普通の?は動いたけど、megabbsスクリプトで
スレ立て後、レスを書き込もうとすると同じエラー。
0783nobodyさん02/08/05 00:12ID:???
NGワード!NGワード!w
0784nobodyさん02/08/05 00:13ID:???
>>782
じゃあ、そのmegabbsスクリプトってのがしょぼいんだろう。
0785nobodyさん02/08/05 00:17ID:mlKhZTXH
C言語
ファイルポインタを使って円の面積を計算するプログラム、教えてください。
ファイルポインタには半径1から10の数値があります。
出力結果は次のようになるようにして下さい
半径 面積
1
2
3
・
・
10
0786apholist02/08/05 00:26ID:vCl4cucl
>>783
え?ヤヴァイ?
0787apholist02/08/05 00:29ID:vCl4cucl
>>785
ネタ?厨?For文使うか一つずつ円周率3で計算すればいいんじゃない。
0788nobodyさん02/08/05 00:31ID:???
>>785
マルチはうせろ!     
0789nobodyさん02/08/05 00:40ID:???
http://pc3.2ch.net/test/read.cgi/tech/1028474590/
>>785 おめー殴らせろ
0790apholist02/08/05 00:41ID:vCl4cucl
>785
マルチだったのか。Perlとか言語の区別もつかんとは
あわれな厨だな。俺よりアフォだ。

とりあえず、うごきますた。Apache2.039が悪かったみたい。
1.326にしたら動いた。
人柱になるのはもっとスキルみがいてからにします。

ご協力感謝。
0791nobodyさん02/08/05 01:57ID:LdtViypm
アンダーバーを含む行の先頭に
hogeという文字列を追加したい場合
どう書けばいいですか
0792nobodyさん02/08/05 02:19ID:???
>>791
キーワード
正規表現 or index
0793nobodyさん02/08/05 02:21ID:???
>>791
s/(.*_.*[\x0d\x0a]*)/hoge$1/g;
0794nobodyさん02/08/05 02:21ID:???
>>772
遅レスだけど、ありません。
0795nobodyさん02/08/05 02:35ID:LdtViypm
>>792 >>793
マッチさせる文字列全体をカッコでかこめば
よかったんですね。
勉強になりました。
0796nobodyさん02/08/05 09:42ID:???
>>758
$i=$i++;
はいかんよ
$a=0;
$b=$a++;
の場合は$a=1,$b=0.
$i=0;
$i=$i++;
なら$i=1,$i=0.どっちか分からん。
0797nobodyさん02/08/05 10:21ID:???
>>791
while(<>) {
next if !/_/;
s/^/hoge/;
}

ひとつの小難しい正規表現でやるのは嫌な人用。
0798nobodyさん02/08/05 10:36ID:???
このスレを見ていると、localだとかcgi-lib.plだとかjcode.plといった記述を
よく見かけまずが、未だにperl4しか入ってないサーバばかりなんですか?
0799nobodyさん02/08/05 11:28ID:???
軽い方がいいから。
0800nobodyさん02/08/05 11:37ID:7p5l2D2K
以前こちらで教えていただいた者です。その節は大変お世話になりました。
フォームメールでローカル上のファイルを添付して送信するスクリプトを作ったのですが、
パソコンのアウトルックではちゃんと添付ファイル付きのメールが受信できるのに
gooとかのウェブメールや、シグマリオンに付いているMPメールでは上手くいきません。
なにか違いでもあるんでしょうか。
どなたかご教示いただけないでしょうか。
0801nobodyさん02/08/05 11:53ID:???
添付ファイルの扱いを間違えてるとか。
0802nobodyさん02/08/05 12:26ID:7p5l2D2K
扱いといいますと・・・?
gooでは件名、本文は正常に受信できて、添付の部分は本文にコードが書かれている状態です。
MPメールのほうは件名もiso-2022-jpと書かれていて、本文もcontent-type云々になってます。

パソコンのアウトルックで使うより、シグマリオンのMPメールで使う方が多いので困っています。
0803nobodyさん02/08/05 13:47ID:???
Content-Type: Multipart/Mixed;
となってますか。
0804nobodyさん02/08/05 14:55ID:???
一つの動作の中で2回デコード作業をしてはいけないんでしょうか。

$ENV{'QUERY_STRING'}
の内容は1回目で無くなっちゃうんでしょうか。
うまくいかないんです。
0805 02/08/05 14:59ID:???
>>804
そんなこたーないよ。コード見せてみ。
0806nobodyさん02/08/05 14:59ID:???
うまく行くといいですね   ピュア
0807nobodyさん02/08/05 16:02ID:???
>>805
全体と載せるのは無理なんで説明します。
で、実は>721でやっているのをやりたいんです。
チェックボックスの値を配列で受け取るとういのを。
#usr/bin/なんたら
$FORM = &getparam; # パラメータ取得
$mode = $FORM{ mode };
if($mode eq "") { &main; }
〜モード判定〜
else { &error("不正なアクセスです。"); }

sub getparam{ # デコードサブルーチン
 read( STDIN, $post, $ENV{ 'CONTENT_LENGTH' } );
 @data = split(/&/,$post);
 foreach $all (@data) {
 ($name,$value) = split(/=/,$all);
 $value =~ tr/+/ /;
 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
 $value =~ s/,/,/g;
 $value =~ s/"/"/g;
 $value =~ s/</</g;
 $value =~ s/>/>/g;
 $value =~ s/\r\n|\r|\n/<br>/g;
 $value =~ s/<br</<br>/g;
 $FORM{$name} = $value;
 if($name eq "no"){
  push(@nos,$value);
 }
}
@FORM
0808nobodyさん02/08/05 16:02ID:???
続き

sub main{
foreach $hoge (@nos){
 print "$hoge";
}
}

こうやるんですけど、何も表示されないんですね。
@FORMの配列しか受け取れていないんでしょうか。
最後の値を返り値にするから。
なんで
 if($name eq "no"){
  push(@nos,$value);
 }
@nosの値を受け取るためだけのデコードルーチン作ったんですけど
それでもうまく値が返ってこないんですよね。
0809 02/08/05 16:08ID:???
>>807>>808
で、$ENV{'QUERY_STRING'} は どこ?
0810nobodyさん02/08/05 16:19ID:???
postなんで$ENV{ 'CONTENT_LENGTH' } でした。
0811 02/08/05 16:22ID:???
>>810
$ENV{ 'CONTENT_LENGTH' } でも値がなくなるこたーないよ。出力させてみ。

でも標準入力からは1度しか読み込めない。
0812nobodyさん02/08/05 16:22ID:???
POSTの場合ははSTDINから受け取るので1回受け取ったらなくなります。
0813nobodyさん02/08/05 16:25ID:???
>>807
$postの中に残っていると思われます。
0814nobodyさん02/08/05 16:29ID:???
>>807
そのソースは、記念に以下のスレにカキコしといてよ。

http://pc.2ch.net/test/read.cgi/php/1028052835/l50
0815nobodyさん02/08/05 16:54ID:???
>>814
載せておきました。
0816nobodyさん02/08/05 18:23ID:???

                   _ _     .'  , ..   ..   .'     ∧_∧
          ∧  _ - ― = ̄  ̄`:, .∴ '      ・,‘∴  , .   (    ) ←>>814
         , -'' ̄    __――=', ・,‘ r⌒>  _/ /
        /   -―  ̄ ̄   ̄"'" .   ’ | y'⌒  ⌒i
       /   ノ                 |  /  ノ |
      /  , イ )                 , ー'  /´ヾ_ノ
      /   _, \               / ,  ノ
      |  / \  `、            / / /
      j  /  ヽ  |           / / ,'
    / ノ   {  |          /  /|  |
   / /     | (_         !、_/ /   〉
  `、_〉      ー‐‐`            |_/

0817nobodyさん02/08/05 18:24ID:???
      氏ね
      ∧_∧          _ _     .'  , .. .∧_∧
     ( ´_ゝ`)   _ .- ― .= ̄  ̄`:, .∴ '     ( >>815)
    /     '' ̄      __ ヽ´=', ・,' r⌒> _/ /
   / /\   / ̄\-―  ̄ ̄   ̄"'" .   ' | y'⌒  ⌒\
 _| ̄ ̄ \ /  ヽ \_              |  /  ノ |
 \ ̄ ̄ ̄ ̄ ̄ ̄ \__)              , ー'  /´ヾ_ノ
  ||\            \          / ,  ノ
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄          / / /
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||          / / ,'
  ||  ||          .||       /  /|  |
                       !、_/ /   〉
081880202/08/05 20:15ID:???
803さん、遅くなって申し訳ありませんでした。
Content-Type: Multipart/Mixed;になっています。
もしかしてアウトルックはIEみたいに多少の間違いがあっても
上手いこと動いてくれてしまうんでしょうか・・・。
0819nobodyさん02/08/05 20:16ID:???
あれ?いつからここは格闘技板になったのだ?
0820nobodyさん02/08/05 21:37ID:TC4MSFf/
2chのように上から下へ流れていく掲示板を作っているのですが
書き込んでCGI上でリロードする際に、ページの下の方を表示したいんです。

表示と書き込みのCGIを分けて
書き込み側から
<META content=0;URL="read.cgi#sita" http-equiv=refresh>
こんな感じで飛ばしてみたんですが何故か#sitaが反映されません。

何かいい方法はないでしょうか。
0821nobodyさん02/08/05 21:42ID:???
>820
書き込み後にLocationで飛ばせば?
0822nobodyさん02/08/05 21:44ID:obWCEw8Y
すいませんが、教えてほしいことがあります。

掲示板のログファイルを閲覧者からは見えなくしてCGIからだけ
読み込めるようにするにはどんなパーミッションにすればいいですか?
掲示板の削除キーが書き込んであるのが閲覧可能というのは、
やはりまずいかなと思いましてね。
いろいろ探したけどわからなかったので、知ってる方いたらお願いします。

まあ、ファイル名をわかりにくいものにする、などの方法はありますがね。
0823nobodyさん02/08/05 21:50ID:TC4MSFf/
>>821
やってみました。

print "Location:read.cgi\#sita\n\n";

こうですよね。
でもやっぱり#sitaは反映されないようです。
他に何か無いでしょうか…。
0824nobodyさん02/08/05 21:57ID:???
>822
パーミッション変えるより、拡張子を.cgiにすれば?

>823
ページの読み込みが終わるまで待ってる?
その前にどこかクリックしたりすると移動しないことがあるよ?

あと、念の為に聞いておくけど、<a name=sita></a>で失敗していたりしないよね?
0825nobodyさん02/08/05 22:06ID:TC4MSFf/
>>824

>あと、念の為に聞いておくけど、<a name=sita></a>で失敗していたりしないよね?

そのとおりでした。穴があったら入れたいです。

ありがとうございました。
0826nobodyさん02/08/05 23:12ID:???
ここ、夜になると一気に寂れるな。
みんな仕事でやってるのか。
に、してはレベルが・・・。
0827m(__)m02/08/05 23:25ID:7ewZSPim
こういうCGIないでしょうか。

コミュニティサイトをしようかと思っているのですが、
メンバー表に登録するとクッキーが焼かれ、
掲示板などに書き込む時偽りができないようにできるスクリプトありませんか?

例を出すと、
http://daichanchi.com/
で利用しているようなものです。

よろしくお願いいたします。

0828nobodyさん02/08/05 23:33ID:???
>>827
作れ。簡単だ。
0829nobodyさん02/08/05 23:58ID:???
>>828が作る頭がないに1000チョン
>>827がたたかれるに1マルク
 http://pc.2ch.net/test/read.cgi/php/1021897804/
0830nobodyさん02/08/06 00:04ID:diugRf3e
次のソースで動かしたところ、
「writing」と表示されたのにかかわらず
if文の中が実行されません。
超初心者的なミスを犯していると思いますが、なにとぞご指摘ください。

ActivePerl: 5.6.0.620
Apache 1.3.24
Windows2000 +SP2

/* 以下 プログラム */

print "「$In{mode}」";
if ($in{mode} eq 'writing'){
print "hoge";
exit;
}
■ このスレッドは過去ログ倉庫に格納されています