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

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

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

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を返さない事もある。
ソフトによって隠されるから。
■ このスレッドは過去ログ倉庫に格納されています