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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/04/23 20:28ID:Kp0cZQna
CGIスクリプトの運用に関する質問スレです。

<<注意:CGIは特定の言語に依存するものではありません>>

Perlのコーディングに関する質問はこちら
【Perl】初心者コーナーPart11
http://pc.2ch.net/test/read.cgi/php/1017201229/


過去ログは>>2
0583nobodyさん02/06/12 17:20ID:???
>>582
すみません。
>>579 に専用スレを教えて頂いたので、そちらにも書き込ませて頂きました。
0584 02/06/12 17:46ID:???
(´-`).。oO(宿題なんかを・・・)
0585nobodyさん02/06/12 19:29ID:VJt9CQqy
なぜ.tsvよりも.csvが多いんですか。
058657702/06/12 19:47ID:6bAybkaS
誰も教えてくれないようなので、スレを作って聞いてみます。
0587nobodyさん02/06/12 19:56ID:???
>586
宿題って何のためにあるんだ?
自分で勉強する為だろ?
カンニングはいかんぞ。
058857702/06/12 22:09ID:6bAybkaS
宿題ができないので、もう死ぬしかありません。
逝ってきます。
0589nobodyさん02/06/12 22:41ID:???
>>577
>フォームから送られてきた文字をどうやって処理するかもわかりません
その部分はもう問題に答が書いてあるじゃん。
送られてきた文字列は変数$argに入る。
ただし577のシングルクォートはバッククォートに直しとけ。
059057702/06/13 14:00ID:Db0ssdev
>>589

どうもありがとうございました。
実はあれからがんばって、何とかやり方がつかめてきました。
変数の処理の方法はわかってきたのですが、どれに入るのかわからなかったので参考になりました。
0591nobodyさん02/06/13 20:21ID:9mq1CqQx
CGI初心者です。ここに質問していいのかわかりませんが・・・。
一度認証したメールアドレスから送られたメールのみを受信し、
未知のメールアドレスからのものは着信拒否するようなCGIは
ありますか。
0592nobodyさん02/06/13 20:26ID:???
>>591
ではお聞きしますが、どうやって一度目の認証をするのでしょうか?
0593 02/06/13 20:27ID:???
>>591
「メールを受信」ってどういう意味で言ってんだ?
自分宛のメールをCGIで選別したいとでも?
0594nobodyさん02/06/13 20:49ID:IshuAhXl
自宅PCサ−バ内でsendmail実験できますか?
059559102/06/13 20:57ID:9mq1CqQx
>592
>593
こういうことです。
メール送信者にIDとパスワードを入力させて、あっていたら、メール入力フォームを
表示する。その時に送信側が使用したメールアドレスを記憶しておく。
その後は、メール入力フォームを使用しなくとも、メール送信できるようにする。
ただし、入力フォームからの送信実績のないメールアドレス、つまりIDとパスワード
があってないものからの受信は拒否する。

0596nobodyさん02/06/13 21:02ID:???
>>594
やればぁ?
0597nobody02/06/13 21:26ID:ZDF6ztrU
>>595
ようするにどーいうことよ。
俺にはサッパリ。。
0598 02/06/13 22:28ID:???
CGIでroot権限取得して任意のコマンド実行ってできる?
LAN内の閉じた鯖で使いたいのだが。
0599login:root02/06/13 22:40ID:TI2f9Ncu
linux板の看板、ローテ表示になってるけど
どうやって看板入れ替えてるんでしょうか…
どういうcgi組んだらああいう動きするのか見当がつきません。
スイッチは何なんでしょうか…

>>598 sudo使えばいいんじゃ
0600 02/06/13 23:50ID:???
>>595
フォームを使用しなくてもということは、普通のメーラからということか?
自分でメールサーバでも持ってるのか?

なんだかよくわからんのぅ。
0601nobodyさん02/06/14 01:42ID:???
>>600
俺もよくわからんのだが
奴(>>595)はwebメールサーバーの真似事をCGIで
やりたいんじゃないのか?誰か>>595を解読してくれ。
0602nobodyさん02/06/14 07:34ID:puWMPG8R
あのよくある 〜.cgi?id=〜 の?id=〜はどういう働きをしてるんでしょうか?
またどうやってそのidをcgiで参照することができるんでしょうか?
0603nobodyさん02/06/14 08:15ID:???
もうちょっとがんがって検索すれ。
0604nobodyさん02/06/14 09:34ID:???
>>595
×受信は拒否する
○送信させない
なら理解できるけど…。
0605nobodyさん02/06/14 09:36ID:???
>>602
環境変数QUERY_STRINGに入ってる
0606nobody02/06/14 13:50ID:AFlyc9ku
>>602
QUERY_STRINGによって動作を分けてるだけでしょ。
060760202/06/14 15:27ID:puWMPG8R
605,606さんありがとうございました。
一度ためしてみます
0608Miku02/06/14 18:11ID:AX6Bkw1W
教えてください。
TripodでCGIを動かしたいのですが、
本体は動いてるのですが画像がぜんぜん表示されません。
gifはcgi-bin以外のフォルダにということだったので
cig-gifというフォルダを作ってその中に入れてるのですが・・・
0609nobodyさん02/06/14 19:05ID:???
>608
http://pc.2ch.net/test/read.cgi/perl/1019752903/
鯖特有の事は、鯖のスレで聞いた方がいいと思われ。
061057702/06/14 23:02ID:fQhm2Pa6
589 :nobodyさん :02/06/12 22:41 ID:???
>>577
>フォームから送られてきた文字をどうやって処理するかもわかりません
その部分はもう問題に答が書いてあるじゃん。
送られてきた文字列は変数$argに入る。
ただし577のシングルクォートはバッククォートに直しとけ。


とあるのですが、argに入った文字列を出力しようとしても、何もでません。
echo $arg
  ↑
これでは、フォームから送られてきた文字を出力できないのですか?
0611nobodyさん02/06/14 23:34ID:???
>>610
それでいいはずなんだけどね。
POSTメソッドで送信してるか?
あとテキストボックスにname属性は指定してる?
<input type="text" name="hogehoge">とか。
name属性をつけないとIEはそのデータを送信しないよ。
0612nobodyさん02/06/14 23:35ID:???
初歩的な質問で申し訳ないですが、教えていただけたら幸いです。

sub header {
print "<html>\n<head>\n";
print "<meta http-equiv=\"content-type\"content=\"text/html; charset=x-sjis\">\n";
print "<title>$title</title>\n";
print "$style\n";
print "</head>\n";
print "<body text=\"$color\" link=\"$color\" alink=\"$color\" vlink=\"$color\" bgcolor=\"$color2\" background=\"$bgcg\">\n";

この場合、背景画($bgcg)を中央にだけ固定して表示したい場合にはどこをどういじれば良いのでしょうか。
BGPROPERTIES="FIXED"で固定だけは出来たのですが中央に一枚だけ表示する方法がわかりません…。よろしくお願いします。
061357702/06/14 23:49ID:fQhm2Pa6
htmlのbody以降です。

<BODY>
<FORM action="cgiのあるページのアドレス"
method="post">
<p>文字:<INPUT type="text" name="osu"><BR>
<BR>
<INPUT type="submit" value="送信"></p>
</FORM>
</BODY>

postをgetに変えたりして、色々やってもできません。
誰かヘルプ・・・
061457702/06/14 23:51ID:fQhm2Pa6
ちなみに、cgiの方はこうなってます。

#!/bin/bash
arg=`tr "&+" "\012" | sed-e "s/^.*=//"`

echo "Content-type:text/html"
echo ""
echo "<HTML><HEAD>"
echo "<TITLE>index.html search</TITLE>"
echo "</HEAD><BODY>"
echo $arg
echo "</BODY></HTML>"

もしかして、最初のargに代入するとこが間違ってるのでしょうか?
0615nobodyさん02/06/15 00:00ID:???
>>612
CGIじゃなくてスタイルシートの領分だろうよ
使いたくない理由でもあるのか?
0616nobodyさん02/06/15 00:03ID:???
>>614
sedと-eの間にスペースが入ってねーぞ。
061757702/06/15 00:06ID:a+3gGUcI
あ・・・そんなミスが・・・
tr "&+" "\012" | sed-e "s/^.*=//"`
この文自体、ただ書いておけといわれただけなので、意味不明だったのです。
どうもありがとうございました。
試してみます。


061861202/06/15 01:05ID:???
>615
単にCGI・CSS供にド素人なだけです。申し訳ない。
CSSで定義することが出来るのならその方法を教えていただけると・・・
などと思いましたがスレ違いですね。他で聞きますです。
061957702/06/15 01:21ID:a+3gGUcI
ようやく最後の段階まできました。

やりたいことは、フォームから入力した文字をホームページから検索し、その行を抜き出すことです。
HTMLファイルから$argと同じものがあれば、その行を抜き出そうとしました。o
grep $arg ファイル名
として、フォームでlinkと打ったら、htmlファイルなのでタグなども一緒に出力してしまい、ます。
文字だけを出力する方法は、もしかして全然考え方が違うのでしょうか?
それとも、直接ホームページの文字だけを対象にして、行を抜き出すことができるのでしょうか?

混乱中です。
0620nobodyさん02/06/15 01:34ID:???
>619
grep で行毎に抜き出すのでHTMLファイルを対象にしたら当然、タグも含まれる
でしょう。
grep 後の各行からタグを抜き取ってみるだけで解決するでしょう。
0621nobodyさん02/06/15 02:01ID:???
>>619
検索対象は本当にローカルなファイルなんか?
どうも>>576を見るとURLで指定されたWebページを検索せよと言ってるみたいだぞ。
おそらくlynxコマンドか何かでWebページ取ってこい、つうことじゃないかねえ。
lynxで読めば自動的にHTMLタグも消えるし。
062257702/06/15 02:35ID:a+3gGUcI
う〜む・・・lynxというのは全く習ってないので、たぶんローカルなファイルの方だと・・・
それを使えば、簡単にできるのでしょうか?
062357702/06/15 02:36ID:a+3gGUcI
今日は7時におきたので、そろそろ限界が近づいてきました。
この辺で寝ることにします。
色々教えてくれた方、ありがとうございました。
0624nobodyさん02/06/15 02:42ID:HfE3zZia
HPの感想を送ってもらうためのフォームメールで、
タイトルをcgiソースで固定するのではなく、フォームで任意に
書き込んで欲しいと思っていじってみたのですが、どうも
うまくいきません。

htmlフォームのソースと
タイトル<br><input type=text name="subject" size=35><br><p>

cgiソース
print MAIL "Subject: $subject\n";

がうまくリンクすれば良さそうなのですが、わかりません。
良いアドバイスをお願いいたします。
0625nobodyさん02/06/15 02:59ID:CbvAN6fk
環境変数のHTTP_COOKIE使わないでクッキー処理って出来ないかなぁ。
なんで俺のとこのISP、HTTP_COOKIE対応してないのよ。
0626nobodyさん02/06/15 07:25ID:???
>625
JavaScriptでクッキー使えばいいんじゃない?
0627nobodyさん02/06/15 09:31ID:???
>>577のようなヤシにも回答するような時代になったのか…。
0628nobodyさん02/06/15 13:01ID:YL6dKHgl

-----↓史上最低クズ板発見 !! (^o^)丿↓-------------------------
http://pc.2ch.net/hard/
カテゴリ;ハードウェア
★↑馬鹿博之本人 出没板★

------該当板発見、 ↓ちっともお勉強にも屁にもならない板発見 !!↓---------

×http://pc.2ch.net/hard/←チンカス板 or クズの集まり×

            ↑こいつらの中にスパムやってる奴いるぜ。
なんせ、↑こいつらキチガイ集団だからな。
0629nobodyさん02/06/15 13:29ID:???
>>626
サンクス。その方法があったね。
063057702/06/15 14:55ID:73xXxu8B
sed 's/<[^>]*>//g' フィイル名
  ↑
これでHTMLタグが消えると、どこかに書いてたので下のようにやってみました。

sed 's/<[^>]*>//g' フィイル名
grep $arg ファイル名
ですが、うまくいきません。

いらない部分は、<で始まり、>で終わる部分だと思うのですが、それを検索対象にいれない方法がわかりません。
もしかして、621さんの言うlynxというコマンドを使わなければできないのでしょうか?
再び混乱中です。
誰か助けて〜
063157702/06/15 16:55ID:73xXxu8B
どうやら、文字を送ることにも問題がありました。
半角英数での入力は問題ないのですが、全角で、例えば「あ」と入力すると「%82%A0」と表示されます。
フォームで全角文字を入力して、それを出力できるようにするにはどうすればいいのでしょうか?

063257702/06/15 17:42ID:73xXxu8B
一応、631で書いた問題は解決しなくても、半角英数を入力して、それの書いてある行を出力することはできました。
しかし、やはり全角でひらがなとか漢字を入力すると何も出力されません。
たぶんそれを解決すればできると思うんですが、マジ困ってます。
もしかして、htmlファイルのフォームを作るときの記述で、特殊なことをしなければないらないのでしょうか?
0633あぼーんNGNG
あぼーん
0634nobodyさん02/06/15 20:41ID:???
>>631
URLエンコード、URLデコード、をキーワードにして検索、勉強しる
063557702/06/15 22:16ID:73xXxu8B
再び問題発生しました。
htmlファイルは
sed 's/<[^>]*>//g' ファイル名
によって

<html>
↑のように一行に書いているものは消えるのですが、

<
href=・・・
>
↑のように書いてるものは、「<」「>」はきえますが、href=・・・が消えません。
おそらくファイルの中で改行されてるからだと思いますが、このようなものはどうやって処理できるのでしょうか?
0636nobodyさん02/06/15 22:54ID:???
SSIでCGIを起動させたいのですが、execコマンドが許可されていないサーバーで
他の方法でHTML出力のCGIを簡単に起動させる方法ってありますでしょうか。
0637nobodyさん02/06/15 23:01ID:???
IISにPerlいれたんだけど
最初は、DLLを直接リンクして失敗なんでや
PHPのDLLはリンクするだけでいけたのに

再度Perlをインストールしました
そして、IISにリンクしたらつながったなんでや
0638nobodyさん02/06/15 23:04ID:???
>>636
<!--#include virtual="xxx.cgi"-->
普通これでそ。execコマンド怖いよ・・。

>>637
しらんわ
0639nobodyさん02/06/15 23:11ID:???
use IO::Socket
use Socket

この二つは同じモジュールかい?
使い方もかわるのかい?
0640nobodyさん02/06/15 23:20ID:???
>>639
言語はなんだい?
それはCommon Gateway Interfaceと何か関係が有るのかい?
0641nobodyさん02/06/15 23:35ID:???
>>640
>言語はなんだい?
ActivePerlですが何か

>それはCommon Gateway Interfaceと何か関係が有るのかい?
CGI=Perl これ定説

すれちがいならスマソ
0642nobodyさん02/06/15 23:53ID:???
CGI=Perl これ定説
CGI=Perl これ定説
CGI=Perl これ定説
0643nobodyさん02/06/16 00:02ID:???
Cじゃ駄目?
064463502/06/16 00:05ID:sBhf/8rI
誰か教えて!
0645 02/06/16 01:07ID:???
>CGI=Perl これ定説
( ´,_ゝ`)プッ
0646nobodyさん02/06/16 03:12ID:???
>>639
前Socketについて聞いてたヤツか?まずその厨臭い喋り方をやめろ。
人に聞く前にここのページ100回読んでこい。
http://x68000.startshop.co.jp/~68user/net/
0647nobodyさん02/06/16 08:49ID:???
>前Socketについて聞いてたヤツか?まずその厨臭い喋り方をやめろ。
ごめんね
HPなかなかおもしろかったよ
アプリケーションプロトコル作りたいんだけど、CS系ではHTTPを
参考にするのがBESTなの?
0648nobodyさん02/06/16 09:00ID:???
>>646
http://x68000.startshop.co.jp/~68user/net/
こういうわかりやすいページって厨房は見つけられません
紹介してくれてありがとうございますた。



0649nobodyさん02/06/16 13:39ID:???
>>642(ゲラ
0650nobodyさん02/06/16 16:34ID:yZ1tNdSi
匿名メール作りたいんだけど、ソースどこにおいてある?
0651 02/06/16 16:49ID:???
( ´,_ゝ`)ププッ
065263502/06/16 17:36ID:AKIK3E+W
誰も教えてくれないので、今から350人ほど仲間を集め、この板を荒らします。
クソスレとかを乱立させるので、注目してください。
今夜12時決行です!
0653nobodyさん02/06/16 17:45ID:???
350人ものDQNと知り合いな>>652に乾杯
0654nobodyさん02/06/16 19:16ID:???
すみません、帰れと言われるのを覚悟で聞きます。
スケジュールに関するCGIでログファイルのディレクトリを
設定したいんですけど、どうもうまくいかなくて。

#ログファイルのディレクトィまでの絶対パス(相対でも可)
$zettai = '';
#$zettai = '';

と書いてあるんですが、本体を置いてあるディレクトリまでの
絶対パスを書いてもログが生成されないんです。
他のCGIの説明を読むと「絶対パスを指定して下さい。
 (URLではなくパスね。。)」などと書いてあるし。
サポート掲示板に同じようにログファイルが生成されないと
質問がいくつかありましたが、4月の質問にレスがついてません。
ログファイル用のディレクトリ作ったり、色々と試したんですが。
どなたかヒントだけでもお願いします。
065563502/06/16 19:18ID:AKIK3E+W
>>654

今日の内に質問の答えが返らなければあきらめましょう。
今夜、この板を含むプログラム関係の板は、荒らしによって消滅します。
0656nobodyさん02/06/16 19:36ID:z5KHLw2y
>>654
こっちにももっとヒントを下さい
ものすごく難しいなぞなぞだ・・・
065765402/06/16 20:13ID:???
>656
ヒントですか、どう説明したらいいんでしょうか。
私は、絶対パスってURLとイコールして考えてたんですね。
なのに、わざわざ「URLではなくパスで」と書いてあるので
そこから悩んでしまったんです。

使いたいスクリプトの解説には

・$zettai = のところをログファイルのディレクトリィまでのパスを指定して下さい
(絶対パスでも相対パスでもOKです)

スクリプト自体には

#ログファイルのディレクトィまでの絶対パス(相対でも可)
$zettai = '/export/home1/aaaaa/public_html/cgi-bin/library/schedule/';
#$zettai = '/www/aaaaa/public_html/cgi-bin/schedule/';

と記述してあるんですけど(aaaaaだけ書き換えました)
私が初歩的なところを分かっていないとは思うんですけど
絶対パスの定義が分からなくなって混乱してます。
0658nobodyさん02/06/16 20:14ID:???
>>654
それだけじゃわかんね
必要な部分隠してソース丸上げしてみそ
065965402/06/16 20:16ID:???
一度は諦めて、違うスクリプトも探して設置してみたんですけど
やっぱり最初のが使い勝手とかいいんで、出来れば最初のを
使いたくて四苦八苦してる次第です。
066065802/06/16 20:16ID:???
アホだ…、訂正してしばし逝ってきます
×必要な部分
○個人特定されそな部分
0661nobodyさん02/06/16 20:29ID:???
>>657
相対パスでも可なら相対パスにすりゃいいじゃん。

ドキュメントルートの絶対パス
print "Content-type: text/html\n\n";
print "$ENV{'DOCUMENT_ROOT'}";
066265402/06/16 21:02ID:???
ソース丸上げですか。結構、長いので上げておきます。

ttp://www.geocities.co.jp/MusicStar-Live/8489/script.txt

>661
絶対パスで混乱して、相対パスをどう定義すればいいのか
分からなくなってたんです。
一人で悩みながらいじってて、頭ん中に?が
ぎゅうぎゅう詰めになってしまって。

0663nobodyさん02/06/16 21:51ID:???
>>662
検索してみるといろいろ解説サイトがみつかる
http://www.google.co.jp/search?hl=ja&q=%90%E2%91%CE%83p%83X+%91%8A%91%CE%83p%83X
066465402/06/16 22:18ID:???
>663
わざわざ有難うございます。
まだ一つ目のページを読んだだけなんですが…。
絶対パスってイコールURLじゃ…なかったんですね。
私の持ってる本だと、URLだと解釈出来たんで
今までずっとそう思ってました。目から鱗。
0665nobodyさん02/06/16 22:26ID:???
>>662
パーミッションが正しくない可能性は無いか?
実行はできても書き込めないとか

public_html/cgi-bin/library/schedule/
public_html/cgi-bin/library/schedule/mycalen.cgi
public_html/cgi-bin/library/schedule/cgi-lib.pl
となってるようだが
066665402/06/16 23:16ID:???
レスくれた皆さん、有難うございました!
無事に動作しました。
原因は絶対パスを勘違いしていた事に尽きますね。
>663さんの解説サイトの一つに絶対パスを調べるCGIがあったので、
それで調べてみると自分が思っていなかったパスになりました。
勉強不足を実感しましたが、ログが生成されたのを確認出来た時の
嬉しさに声を上げてしまいました。
知識足らずの教えてちゃんにレスを本当に有難うございました。
0667nobodyさん02/06/17 02:11ID:avz6N9SR
Perlについて質問です。

$date{'select_1'}
$date{'select_2'}
$date{'select_3'}
$date{'select_4'}
これを、
$date{'select_$x'}
という風に数字の部分を変数にして表したいのですが、どのように表現
すればよいのでしょうか?
0668nobodyさん02/06/17 02:20ID:???
$date{"select_$x"}
0669nobodyさん02/06/17 05:37ID:???
>>667-668
当たり前すぎてワラタ
0670nobodyさん02/06/17 07:14ID:nRo1vqSR
>>668
このようにするとうまくいかないのですが・・・。
0671nobodyさん02/06/17 07:17ID:nRo1vqSR
具体的に・・・

[error] [client 127.0.0.1] syntax error at c:/apache/htdocs/test.cgi line 550, near "}"

このようなエラーが出てきます。
0672hoge02/06/17 07:25ID:???
syntax error: 文法エラー
at: 〜に
line: 行
near: 〜の近くに
0673nobodyさん02/06/17 08:00ID:???
>>668 文法エラーにワラタ

$date{'select_' . $x}
0674nobodyさん02/06/17 14:20ID:oSTbTHVJ
このスレでいいのかな・・・?
cookieを使ってROM禁の掲示板をやってますが、
ブラウザをcookieを食べる設定にしても、レスが見えない人がいます。
(その人は、XP&IE6を使ってます。)
レスを見れないと言ってる人は、ログを見るとcookieを食べてないのですが、
ブラウザはcookieを受け付ける設定にしてると言ってます。
掲示板のスクリプトはありふれた物で、変わった事はしてません。
他のユ−ザは問題ないですし、私が動作チェックした時も問題ありませんでした。
一部のIE6ユーザだけが見れないみたいなんです。
これはIE6の不具合なんでしょうか?
0675nobodyさん02/06/17 14:57ID:???
ググったらいっぱいでてきたし、おそらくユーザ側の問題でない?
http://www.google.com/search?num=50&lr=lang_ja&q=IE6%20Cookie
067667402/06/17 15:22ID:???
>>675
私もそうだと思うんですが、cookieを食べてるって言い張るんですよ・・・。
取り敢えず上のURLに誘導してみます。
ありがとございました。
0677nobodyさん02/06/17 16:15ID:9yBZa2Oo
教えてください。
cgiを設置したのですが、
adminって書いてある管理者モードのところがあるのですが、
そこに入ることができません。
これって、どこを直すとよいのでしょう?
0678nobodyさん02/06/17 16:20ID:???
>677
それはたいへんですね。 URL を書いていただければこちらで確認してもいい
のですが。
067967702/06/17 16:27ID:9yBZa2Oo
すみません。
ここ↓なのですが、なんとかなりますか?
http://cgi.tripod.co.jp/cyndi/cgi-bin/jdiary.cgi
0680hoge02/06/17 16:29ID:gBMmBBrY
>>677
しつもんのしかたをなおすとよいでしょう。
0681nobodyさん02/06/17 16:32ID:HzoJQ/16
>>673
そのようにすればよかったのですか・・・。
参考になりました。
ありがとうございました。
068267702/06/17 16:43ID:9yBZa2Oo
すみません。 でわ。もう一度。
日記ページなのですが、下のところのマスターってとこから入ると
管理者用のログインページが表示されるはずなのですが
まったく表示されないのです?
初心者でどこが?なのかも分からなくて。
何とか、ならないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています