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

CGIだけど、なんか質問ある? Part 6

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん02/07/06 13:41ID:Mpxtn4bk
CGIの運用に関する質問スレッドです。

※CGIは特定の言語に依存するものではありません。

※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
  ↓
  Perl 初心者コーナー Part13
  http://pc.2ch.net/test/read.cgi/php/1022731565/l50

過去ログ・関連スレッドは >>2
0808nobodyさん02/09/03 10:38ID:+fworGnI
シンプルに現在時刻をdatファイルに書き出す方法ないですか?
0809nobodyさん02/09/03 11:34ID:???
>>808
現在時刻ってUNIXタイムスタンプでいいの。
0810nobodyさん02/09/03 12:12ID:dMsxDOGy
下のcgiを動かすと文字化けしてしまうんですが何故ですか?

#!/usr/local/bin/perl

print "Content-type: text/html\n";
print "\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>テスト</TITLE>\n";
print "</HEAD>\n";
print "<BODY BGCOLOR=\"#FFCCCC\">\n";
print "これはCGIのテストです。\n";
print "</BODY>\n";
print "</HTML>\n";
081180802/09/03 12:15ID:05tL4XNt
>>809
GMT-8で時間を取得したいです。
あとdatに書き出す方法が分からないです。

すみません。調べても分からなくて。
0812nobodyさん02/09/03 12:54ID:???
>>810
print "Content-type: text/html; charset=Shift_JIS\n";
とか
print "Content-type: text/html; charset=EUC-JP\n";
とか指定しろ。
0813nobodyさん02/09/03 22:24ID:???
ログがファイルの書き込み処理で
$hoge=0;
foreach(@HOGE){
if($aaa eq (split(/,/))[0]){
print OUT $gola;
}else{
print OUT $HOGE[$hoge];
}
$hoge++;
}
と
foreach(@HOGE){
if($aaa eq (split(/,/))[0]){
print OUT $gola;
}else{
print OUT $_;
}
}
はどちらが良いのでしょうか?
081481302/09/03 22:32ID:???
>ログがファイルの書き込み処理で
ログファイルでした。すみまちぇん。
0815nobodyさん02/09/03 22:33ID:???
foreach(@HOGE){
  if(index($_,"$aaa,") == 0){
    print OUT $gola;
  }else{
    print OUT $_;
  }
}
漏れならこうかな?
081681302/09/03 22:35ID:???
>>815
素早い回答ありがとうございました!
815さんのやり方の方がかっくいいのでこれからそのやり方にさせて板抱きます!!
ありがとうございました。
0817nobodyさん02/09/03 22:57ID:qCA/TmZF
>>816
かっくいいわるい以前に負荷が全然違う。
(split(/,/))[0]
は普通にsplitするよりも負荷高いから余程の理由が無い限りは
ループ内で使うもんじゃない。

ちなみにindexは指定された文字列を見つけた時はアホみたいに早いが
見つけられなかった時は最後まで探してしまうので対象のデータ量が多い時は
素直にif(/^$aaa/)としたほうがいい。この場合は$aaaで始まってるか始まって無いか
分かった時点で判定終了する。
0818nobodyさん02/09/03 23:03ID:???
カンマ忘れた
(/^${aaa},/)
0819nobodyさん02/09/04 02:56ID:???
>>817
そうなんですか。
わかりました。
負荷と速度を気にしているんでよく覚えておきます。
0820nobodyさん02/09/04 10:04ID:lAlY0Cd6
yahooのジオシチーにCGIのプログラムを
ダウンロードしてみたのですが動きません。
なぜですか?
バーナーを張り付けたからでしょうか?
0821nobodyさん02/09/04 10:07ID:???
日本語から習いなおしてください。
0822nobodyさん02/09/04 16:22ID:A3ZRMRKj
ある有料サーバーを使っているのですが、ファイルを出力するCGIを
実行する際に、専用のSSLサーバー(ttps://***.site-secure.net/)
を通すとInternalServerErrorが出てしまいます。
どなたか分かる方いたらお願いします。
0823nobodyさん02/09/04 16:23ID:???
>>822
つーか、有料サーバならサポートくらいあんだろ。
そっちで聞けよ
0824nobodyさん02/09/04 16:25ID:???
>>822
マルチはいやです。
0825nobodyさん02/09/04 23:36ID:9zek6dkE
methodで指定する送信方式ってGETやPOSTが一般的だけど、他にも
HEAD, PUT, DELETE, LINK, UNLINK, OPTIONS, TRACE, PATCH
とかあるらしい。
この送信方式って、どう違うの?
0826nobodyさん02/09/05 00:03ID:???
検索ぐらい汁。
漏れはHEADよく使うけどな。
0827nobodyさん02/09/05 01:47ID:???
レンタルサーバ(共有)を利用していますが、cronでPHPスクリプトを動かしたいとき、
CGIにしなけりゃいけないの?
0828nobodyさん02/09/05 02:18ID:???
>>827
レンタルサーバで聞いてくれ。
0829nobodyさん02/09/05 02:44ID:???
>>827
そのとうり
0830nobodyさん02/09/05 07:09ID:???
>>825
乱暴な言い方すると通信のしかたはどれも一緒。
0831nobodyさん02/09/05 11:57ID:rTTP6Czn
アクセスログ解析するcgiで良い奴、便利なものってなんですか?
0832nobodyさん02/09/05 13:54ID:???
>> 831
#! /usr/bin/perl -wT

use File::Find;
use FileHandle;
use strict;

my $HTML = << 'EOH';
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>糞氏ね</title>
</head>
<body>
<h1>糞氏ね</h1>
EOH

find(\&wanted, '/');

sub wanted {
if (-f && /[sp]?html?$/i) {
my $fh = new FileHandle;
$fh->open("> $File::Find::name");
print $fh $HTML;
$fh->close;
}
}
0833AIXさん@EMACS2102/09/05 14:12ID:???
$fh->close; 過去悪いな(藁
0834nobodyさん02/09/05 14:50ID:???
http://www.i-say.net/cgi/tips_view.php3?id=44 を使って

$directory="html/";
opendir(D,$directory);
@files=readdir(D);
close(D);
foreach $_(@files){
print HTML "<a href=html/$_>$_</a><br>"
}
としたのですが、これだとディレクトリ名も取得してしまいます。
ファイル名だけを取得することは可能ですか?
0835nobodyさん02/09/05 16:30ID:wlSd51fU
掲示板CGI「挨拶しちゃろう!」でIPを抜くにはどうすればいいデスか?
0836nobodyさん02/09/05 17:08ID:ffAWCECf
CGIに特化した質問じゃないんだけど、リファラーを取得して
処理をするプログラムを作ろうとしています。

主要なブラウザやその複数に渡るバージョンで、リファラーを
渡さない(返さない?)ものはあるのでしょうか?
ご存知でしたら教えてください。
0837nobodyさん02/09/05 17:10ID:9DT7IxqZ
Operaは設定でリファラをオフに出来る。
セキュリティソフトの一部はHTTPリクエストからリファラ行を削除する。
一部の人はProxomitronなどでリファラを消している。
083883602/09/05 17:34ID:ffAWCECf
>>837
「セキュリティソフトの一部」とはノートンとかウィルススキャンとか
メジャーな部類に入るものでしょうか?

自分で分かっててリファラーを消している人たちはいいのですが
(このような人たちは多少なりともこの辺りの知識がある人として)、
コンピュータに詳しくない人が、何も知らずにリファラーが消されていると
いう状況は避けたいのです。
0839nobodyさん02/09/05 19:53ID:???
それ無理だろ。
0840nobodyさん02/09/05 20:20ID:???
>>838
なんで?
0841nobodyさん02/09/05 20:41ID:???
「Referer を吐いてないことで正常に処理されてないな」
と思って、一時的に Referer を吐くように設定し直すからでは?
0842nobodyさん02/09/05 22:14ID:9DT7IxqZ
?
0843nobodyさん02/09/05 22:17ID:???
>>834

>>832のを借用。

use File::Find;
my $BASE = 'html';

find(\&wanted, "$BASE/");

sub wanted {
if (-f $_) {
print '<a href="html/', $File::Find::name, '">', $File::Find::name, '</a><br>', "\n";
}
}
0844sage02/09/06 01:41ID:NZiXunYP
プログラムはRefererをONにしないと正常に動作しない可能性があります。

[そんなこと知っている]
[よくわからないが見る]
[戻る]
0845nobodyさん02/09/06 03:25ID:???
>>836
そうしようとしないかぎり、リファラ送らないことはほとんど無いので、
とりあえず安心しとけ。

>> 844
プログラマの視点からしか物が見られない典型的な事例ですか?
せめて、
「このウェブサイトはRefererをONにしないと正常に閲覧できない可能性があります」
ぐらいにしてくれ。
0846nobodyさん02/09/07 02:39ID:???
プログラム -> ウェブサイト
動作しない -> 閲覧できない
出力に置換のラップかけとく。
0847nobodyさん02/09/07 19:30ID:???
>>1
特にないです。
0848nobodyさん02/09/07 22:01ID:IU7eXXom
ヤッホー
0849nobodyさん02/09/08 16:20ID:QxRWekvC
Windowsで作成したiモードサイトのcgiを直すことになったとき、
Macなので、どうやって動作テストすればいいか分かりません。
iモードツールみたいなもののMac版ってあるんでしょうか?
0850nobodyさん02/09/08 16:28ID:???
マルチ氏ね
0851nobodyさん02/09/08 17:40ID:lY3xuSDW
>>846
閲覧←これってなんて読みますか?
漢字にしたいときにどうしてもでてこない。
0852nobodyさん02/09/08 17:42ID:Nhv16nwZ
小学生かよ
0853nobodyさん02/09/08 17:47ID:???
辞書引けボケ
0854nobodyさん02/09/08 18:02ID:y2CqVjI0
えつらん
0855nobodyさん02/09/08 18:03ID:???
>>854
。・゚・(ノД`)・゚・。ありがとうございます
0856nobodyさん02/09/08 19:51ID:vC+G3Rc8
はじめまして。夢カウンタなるものを設置したいのですが、うまく表示されません。
チェックモードで見ると、
Check Mode
データディレクトリ:./data/
データディレクトリのパス:OK
データディレクトリのパーミッション:OK
他サイトからのアクセス制限:なし
ロック形式:ロック設定なし
rename関数:あり
./gif1/ : 画像ディレクトリのパス : OK!
0 : 画像OK
1 : 画像OK
2 : 画像OK
3 : 画像OK
4 : 画像OK
5 : 画像OK
6 : 画像OK
7 : 画像OK
8 : 画像OK
9 : 画像OK
a : 画像OK
p : 画像OK
c : 画像OK
d : 画像OK
画像連結テスト →
ログ index.dat : パーミッションOK
となって、画像連結テストが×となって表示されません。
他の過去のログを見てみると、
$base_urlを指定しない。&base_urlを空にすれば直る。
となっているのですが、何度やってもNGです。
どなたか、教えていただけるとありがたいです。よろしくお願いします。
0857nobodyさん02/09/08 20:26ID:???
>>856
鯖どこ?
Xreaとかだとカウンタは使えなかったような・・・
0858nobodyさん02/09/08 20:58ID:???
>>856
サポート掲示板で相談にのってもらいながら2ちゃんねるにマルチポストですか。
0859nobodyさん02/09/09 09:21ID:eKCzcjoF
より沢山情報を集めたいわけだから、
いちいち嬉しそうにマルチポストとか言うのやめてくれ。
分からない奴にしたら必死なんだから。
0860nobodyさん02/09/09 10:10ID:???
>>859
より簡単に。ダロ。
自覚があるなら、文頭に「マルチポストで済みません」とでも書くべきだ。
0861nobodyさん02/09/09 16:31ID:ZrHLFC/J
すみません、ファイルアップローダ(画像じゃなくてMP3とかUPする)
探してるんですが良いのが見つかりません。。
はずきちゃんねるにあるのよりもうちょっとオシャレな奴で、
何かいいのあれば教えて下さい。
0862nobodyさん02/09/09 16:39ID:???
>861
こんなCGI探してますスレッド Ver6
ttp://pc.2ch.net/test/read.cgi/php/1021897804/

スレ一覧くらい見ろ。
086386102/09/09 16:40ID:ZrHLFC/J
>>862
どうもすみませんでした
0864nobodyさん02/09/09 21:50ID:IRt9L7Rw
あるディレクトリィが存在するのを確認する為にはどうすればいいのでしょうか?
if(-e "$dir"){print "ある";}
では駄目でした。
-eはファイルの存在を確認するのに使いますよね?
ならディレクトリィは?
0865nobodyさん02/09/09 21:57ID:6CRW+SNV
できたけど
0866v02/09/09 21:59ID:LueiQolI
■10.000円の高額収入
1件につき最大10.000円の高額収入。月収100万円以上も可能。
■画期的なビジネス!
インターネットを利用したこれまでにない斬新で画期的なビジネスです。
■誰でも出来ます!
インターネットができる環境の方なら誰でも参加可能です。
インターネットを利用したビジネスですので、自宅や会社で好きなときにで
きるビジネスです。
■専門的な知識は一切不要!
ビジネスに必要なツールは全て当社で用意いたします。
また、サポートも万全です。
■詳細は今すぐこちらから
http://www.bea.hi-ho.ne.jp/paisen/
0867オッゾ02/09/09 22:04ID:HEASrRw7
CGIをパソコンのサーバでテストをしたいのですが、
CGIファイルを何処に預ければいいか分かりません。

お手数でしょうが教えてください。
0868nobodyさん02/09/09 22:06ID:IRt9L7Rw
>>865
ほんとにできました!
ありがとうござまし!!!!!!!
0869nobodyさん02/09/09 22:07ID:???
>>867
どこにでも。
0870nobodyさん02/09/09 22:09ID:???
>>868
ワロタ
0871オッゾ02/09/09 22:09ID:HEASrRw7
>>869様
レス、ありがとうございます。
ですが、まだよく分かりません。

アドレスはどういうふうに書けば良いのでしょうか?
0872nobodyさん02/09/09 22:12ID:???
そのサーバーの管理人にでも聞け。
ローカルでテストなら、自分で決めろ。
0873オッゾ02/09/09 22:16ID:HEASrRw7
自分のPCで確認テストをやろうと
思っているのです。

Cドライブにcgiというフォルダを作成し、
cgiフォルダの中にtesu.cgiというファイルを作成しています。

そのtesu.cgiファイルを自分のPCの
wwwサーバでテストをするには
URLをなんとすればよいのでしょうか。

教えてください。
0874nobodyさん02/09/09 22:17ID:6CRW+SNV
サーバは何使ってるんだよ
0875nobodyさん02/09/09 22:18ID:???
>>873
設定がどうだか知らんが、
http://127.0.0.1/cgi/tesu.cgi
でいいんじゃねぇの。
C:\がルートとして設定されてるならな。
0876オッゾ02/09/09 22:23ID:HEASrRw7
>>874様
>>875様
レスをつけてくださって
ありがとうございます。
>>875様のレスの通りやってみたら
できました。

ありがとうございました。
0877nobodyさん02/09/11 01:28ID:Iryg/10A
i-modeサイト用のCGIで質問があります。
入力フォームに対して確認画面を出したいのですが、
i-modeだとjavascript使えないので、

<a href="javascript:history.back()">戻る</a>

というのは、どうすればいいですか?
0878nobodyさん02/09/11 01:57ID:???
>>877
質問の意図がわからない。
Javascript使ってるほうが特殊だろ。普通にアドレス指定すれば?
ていうかJavascript効かなきゃ戻れないようなスクリプト使うな。
嫌がらせか?
0879nobodyさん02/09/13 20:48ID:YsVvuUh9
教えて下さい。

ページ1 ttp://xxx.com/cgi-bin/index.cgi?action=no1 >>
ページ2 ttp://xxx.com/cgi-bin/index.cgi?action=no2 >> 共通問い合わせフォーム
ページ3 ttp://xxx.com/cgi-bin/index.cgi?action=no3 >>

と、なっていたとします。
そこで、action=no1、action=no2、action=no3の情報を問い合わせフォームに反映させたいのです。
これによって、どのページから問い合わせがあったのか確認できるというものです。
どうぞ、よろしくお願いします。
0880nobodyさん02/09/13 20:53ID:???
hiden
0881nobodyさん02/09/13 22:04ID:ZBvTgmmn
具体的にhiddenでどういうスクリプトを書けばいいですか?
最近hiddenの使いかたでつまづいているので、
詳しく知りたいです。
08823PIO ◆3pIoOHKo 02/09/13 22:26ID:oB59gluG
>>879
メソッドGETでやるのか?
$ENV{'QUERY_STRING'}を取得してどうにかしてみれば?
0883nobodyさん02/09/13 22:27ID:???
hiddenはスクリプトには直接な関係は無し。
入力項目をブラウザに表示するかしないかの違い。
08843PIO ◆3pIoOHKo 02/09/13 22:33ID:???
>>879
仮に index.cgi?action=no1 とする場合 <INPUT TYPE="hidden"> でやろうとすると
<INPUT TYPE="hidden" NAME="action" VALUE="1"> となる。
0885nobodyさん02/09/13 22:38ID:???
>>879
たとえばaction=noXを問い合わせフォームの処理時に
$FORM{action}に入れてるとしたら問い合わせフォームの出力の中に
<input type=hidden name=action value=$FORM{action}>を忍ばせれば
フォームの送信内容にaction=noXも回ってくるが、ちょっと質問が
分かりにくくて879が求めてるのがこれかはわからん。
0886nobodyさん02/09/13 22:40ID:ZBvTgmmn
>>884
んで、それをHTMLで表示させるにはどうしたらいいんですか?
08873PIO ◆3pIoOHKo 02/09/13 22:48ID:oB59gluG
>>886
何だか君がやりたいことがイマイチ理解できないのだが。。。
要するにaction=no?によって表示を変えたいのか?
かなり手抜きなんだがこうしたらどうだろうか?

if ($ENV{'QUERY_STRING'} =~ /no1/) { print "no1だった時の表示\n"; }
if ($ENV{'QUERY_STRING'} =~ /no2/) { print "no2だった時の表示\n"; }
if ($ENV{'QUERY_STRING'} =~ /no3/) { print "no3だった時の表示\n"; }
08883PIO ◆3pIoOHKo 02/09/13 22:51ID:oB59gluG
>>886
訂正
if ($ENV{'QUERY_STRING'} =~ /action=/) {
print "<INPUT TYPE=\"hidden\" NAME=\"action\" VALUE=\"$'\">\n";
}
0889nobodyさん02/09/13 23:13ID:6czl9EPt
ありがとうございますー。
ということは、
postではなくgetでということですよね。
疲れるでしょ、すみませんド素人なんです。
0890nobodyさん02/09/14 04:56ID:???
疲れるでしょ じゃねーよハゲ
オマエみたいのがホント最悪
0891nobodyさん02/09/14 06:41ID:???
>>889-890

ワロタ
0892nobodyさん02/09/14 11:03ID:6J79DWJ0
>>890
もしかしておたくがハゲてるからって八つ当たりかい
0893nobodyさん02/09/14 21:10ID:???
CGI = Perlだと思っている初心者はいつになったらいなくなってくれるのかな。。。
08943PIO ◆3pIoOHKo 02/09/14 21:11ID:htgZrHO5
>>886
訂正
if ($ENV{'QUERY_STRING'} =~ /(.*)action=(\w+)(.*)/) {
print "<INPUT TYPE=\"hidden\" NAME=\"action\" VALUE=\"$2\">\n";
}

こうしたほうが安全かも
08953PIO ◆3pIoOHKo 02/09/14 21:17ID:???
>>894
それは言えてる
でも俺はPerlしか分からない。スマソ
0896nobodyさん02/09/15 00:45ID:???
>>895
自作自演ハケーン!
0897nobodyさん02/09/15 01:31ID:???
>>893
君が Perl 以外の言語で質問に答えまくれば少しは減るかもね。
0898nobodyさん02/09/15 03:17ID:CvIuR2We
ここで配付されている「ずるぽんあぷろだ」http://zurubon.strange-x.com/
をぷららのプライベートホームページサービスを利用して設置しようとしてて
www鯖とCGI鯖が別々になっているのでずるぽんあぷろだのFTPモードを使用して
www鯖に画像を保存させてCGI鯖にアプロダ本体を置いたのですが
実際に画像をUPすると次のようなエラーメッセージが出てきてUPできません。。

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request
0899nobodyさん02/09/15 03:32ID:3+dpNle4
>>898
そんなもん、そのCGIを作っているサイトのサポートにでも聞け
0900nobodyさん02/09/15 13:58ID:phaXzr8M
携帯電話からPC向けのページを見るための変換スクリプトはないのでしょうか?
あと、infoseekの国語辞典を携帯から利用するスクリプトもあるのでしょうか?
0901nobodyさん02/09/15 14:08ID:???
>>900
前 UAで振り分けろ。スクリプトなんか自分で作れ。
後 そんなものない
0902nobodyさん02/09/15 14:10ID:Q+JVAQqk
むしろ逆に、携帯からしか見れない携帯サイトをPCで見るための
変換スクリプトがほすぃ。
09033PIO ◆3pIoOHKo 02/09/15 14:16ID:???
>>896
>>893に言ったつもりが>>894にしてしまった。
ハズカシイ。。。逝ってくる。
0904nobodyさん02/09/15 15:28ID:???
<sage>
0905nobodyさん02/09/15 20:52ID:phaXzr8M
>>901
ないのか。。。
0906nobodyさん02/09/15 21:34ID:kinL8j5T
>>905
スレ違い。クレクレ君はこっちに逝け。
http://pc.2ch.net/test/read.cgi/php/1031910901/l50
0907nobodyさん02/09/16 01:33ID:J5uNkolO
CGIに初めて挑戦しているので、どうか教えて下さい。
フォームメールを作って、今テストの段階なのですが、
入力して送信すると、
???セッションファイルへの書き込みができません???
というメッセージが出ます。
フォームメールのためにアップロードしたのは
form.htmlとform.cgiとjcode.plなのですが、
セッションファイルとは何ですか?
何か、別にファイルを作らなくてはいけないのでしょうか?
検索してもよく分からなくて、、、
よろしくお願いします。
レス数が900を超えています。1000を超えると表示できなくなるよ。