CGIだけど、なんか質問ある? part 6
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/04/23 20:28ID:Kp0cZQna<<注意:CGIは特定の言語に依存するものではありません>>
Perlのコーディングに関する質問はこちら
【Perl】初心者コーナーPart11
http://pc.2ch.net/test/read.cgi/php/1017201229/
過去ログは>>2
0558556
02/06/10 17:50ID:OTakUXl/そうです。Webサーバーのアカウントです。
よくレンタルサーバーでやってるアカウントチェックみたいなやつです。
テキストボックスに希望アカウントを入力してボタンを押すと、
アカウントが空いているか、使用済みか を表示するという
ものをつくりたいんです。
0559nobodyさん
02/06/10 18:58ID:???0560nobody
02/06/11 01:37ID:al4egrbe0561nobodyさん
02/06/11 06:16ID:g6WS6tIa0562nobodyさん
02/06/11 06:53ID:???0563556
02/06/11 09:25ID:AI8qzrkT昨日「すぐわかるperl」という本を買ってきました。
・とりあえずアカウント一覧をつくる
・フォームをつくり変数を受け取る
・ifでマッチするなら「NG」をprint、マッチしなければ「OK」をprint
ってかんじでつくればいいんでしょうか?
561さんの「/home以下にディレクトリがあるかどうか」という場合は
なにか便利な方法があるんですか?
こっちのほうが管理が楽そうなのでやってみたいです。
また、他に何かヒントやアイデアがありましたら教えてください。
よろしくお願い致します。
0564nobodyさん
02/06/11 10:52ID:GLgx63Ns0566nobodyさん
02/06/11 12:33ID:nbFvKVaAperlで「変数内にキーワードがいくつあるか」を調べるにはどうすればいいんでしょうか?
例えば$a="2chでの2002年6月12日"ならば$aには"2"が四回登場しますよね。そういうことを調べたいのですが・・・。
0567nobodyさん
02/06/11 13:28ID:???$a = '2chでの2002年6月12日';
$b = '2';
$count = 0;
while ($a =~ /$b/g) { $count++ }
print "Content-type: text/plain\n\n";
print "「$a」 の中に $b は $count 個";
0569566
02/06/11 13:49ID:???$count = howmany($a,$b);
みたいに直接(?)調べる方法ってのは存在しないんですね…。
ありがとうございました。自分で何とかルーチン書いてみます(>>567では永遠に回る気が…)。
0571nobodyさん
02/06/11 15:03ID:bp5oCR3J$countは真(1)か偽(0)にしかならないぞ。
>>567が正解。マッチするものを全て見つけたら、ちゃんと終了してくれます。
0572webmaster
02/06/11 16:05ID:o3eoRD7n自分のHPドコから見に来てるか知りたいのです。
(正直に言えば、自分以外の人がどのくらい見ているのか知りたい)
0573nobodyさん
02/06/11 16:10ID:???定番(Perlの神様)
http://www.kent-web.com/data/report.html?
上の改造版で多機能(設置は若干難しいかも)
http://air.vis.ne.jp/at-works/access/access.html
0575nobodyさん
02/06/11 19:39ID:???検索対象の文字が決め打ちできる場合はそれな。変数なら>>567だが。
Perlのコーディングの話を続けるならこっちに移ろう。
http://pc.2ch.net/test/read.cgi/php/1022731565/l5
0576nobodyさん
02/06/12 16:07ID:Zj93qd1Pとりあえず書きます。
任意の文字列を検索するcgiスクリプトをbashで作成せよ。
対象は、http://・・・・1・・・・/htm
ここでは、アドレスをいうことはできません。
で、1のところは、1,2,3,4,・・・255まで検索します。
つまり、255個のページを調べ、任意の文字列があれば、その行を抜き出せということです。
実行結果は、例えば、linkを検索した場合。
http://・・・・1・・・・/htm
linkという文字があれば、その行を出力。
・・・・・・・・・・・
・・・・・・・・・・・
http://・・・・255・・・・/htm
linkという文字があれば、その行を出力。
と、なります。
perlとawkは使わないこと。
HTMLでフォームを作って、そこに入れた文字が検索されるようにすること。
という課題です。
とりあえず、フォームを作り、そこに入れた文字がCGIの方にいくようにしました。
method="post"でやってます。
0577nobodyさん
02/06/12 16:07ID:Zj93qd1P#!/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 "</BODY></HTML>"
まだシェルスクリプトについて習ったばかりフォームから送られてきた文字をどうやって処理するかもわかりません。
というか、最初はフォームの作り方すら知りませんでした。
というわけで、だれか、おしえてください。ヒントでもいいです。
0578nobodyさん
02/06/12 16:31ID:NJerhR65月の最後の日が簡単に分かる関数がありますでしょうか?
ありましたら教えて頂きないでしょうか?
また、ない場合は、一番サーバーに負荷を掛けずに(軽い)同じ動作を
させるにはどうすればよいか教えて頂けないでしょうか?
自分なりにも考えてみました。
for ( $i = $mday ; ; $i++ ) {
( $k_sec , $k_min , $k_hour , $k_mday , $k_mon , $k_year , $k_day ) = localtime( time + $i * 24 * 3600 );
if ( $k_mon != $mon ){
last;
}
}
0579nobodyさん
02/06/12 16:36ID:???そこまで考えたなら、「次の月の1日の24時間前を調べる」という発想が出てもいいんじゃないか?
それと、Perlのコーディングの話は、専用スレで。
ttp://pc.2ch.net/test/read.cgi/php/1022731565/
0580nobodyさん
02/06/12 16:38ID:NJerhR65逝ってきます。
0581579
02/06/12 16:38ID:???ちゃんと読んでなくて変なレスになってた。
チグハグなレスですまない。
続きはPerlスレにするとして、うるう年とかをどうするかはハッキリさせて質問してくれな。
0585nobodyさん
02/06/12 19:29ID:VJt9CQqy0586577
02/06/12 19:47ID:6bAybkaS0587nobodyさん
02/06/12 19:56ID:???宿題って何のためにあるんだ?
自分で勉強する為だろ?
カンニングはいかんぞ。
0588577
02/06/12 22:09ID:6bAybkaS逝ってきます。
0589nobodyさん
02/06/12 22:41ID:???>フォームから送られてきた文字をどうやって処理するかもわかりません
その部分はもう問題に答が書いてあるじゃん。
送られてきた文字列は変数$argに入る。
ただし577のシングルクォートはバッククォートに直しとけ。
0590577
02/06/13 14:00ID:Db0ssdevどうもありがとうございました。
実はあれからがんばって、何とかやり方がつかめてきました。
変数の処理の方法はわかってきたのですが、どれに入るのかわからなかったので参考になりました。
0591nobodyさん
02/06/13 20:21ID:9mq1CqQx一度認証したメールアドレスから送られたメールのみを受信し、
未知のメールアドレスからのものは着信拒否するようなCGIは
ありますか。
「メールを受信」ってどういう意味で言ってんだ?
自分宛のメールをCGIで選別したいとでも?
0594nobodyさん
02/06/13 20:49ID:IshuAhXl0595591
02/06/13 20:57ID:9mq1CqQx>593
こういうことです。
メール送信者にIDとパスワードを入力させて、あっていたら、メール入力フォームを
表示する。その時に送信側が使用したメールアドレスを記憶しておく。
その後は、メール入力フォームを使用しなくとも、メール送信できるようにする。
ただし、入力フォームからの送信実績のないメールアドレス、つまりIDとパスワード
があってないものからの受信は拒否する。
0597nobody
02/06/13 21:26ID:ZDF6ztrUようするにどーいうことよ。
俺にはサッパリ。。
0599login:root
02/06/13 22:40ID:TI2f9Ncuどうやって看板入れ替えてるんでしょうか…
どういうcgi組んだらああいう動きするのか見当がつきません。
スイッチは何なんでしょうか…
>>598 sudo使えばいいんじゃ
フォームを使用しなくてもということは、普通のメーラからということか?
自分でメールサーバでも持ってるのか?
なんだかよくわからんのぅ。
0601nobodyさん
02/06/14 01:42ID:???俺もよくわからんのだが
奴(>>595)はwebメールサーバーの真似事をCGIで
やりたいんじゃないのか?誰か>>595を解読してくれ。
0602nobodyさん
02/06/14 07:34ID:puWMPG8Rまたどうやってそのidをcgiで参照することができるんでしょうか?
0603nobodyさん
02/06/14 08:15ID:???0606nobody
02/06/14 13:50ID:AFlyc9kuQUERY_STRINGによって動作を分けてるだけでしょ。
0607602
02/06/14 15:27ID:puWMPG8R一度ためしてみます
0608Miku
02/06/14 18:11ID:AX6Bkw1WTripodでCGIを動かしたいのですが、
本体は動いてるのですが画像がぜんぜん表示されません。
gifはcgi-bin以外のフォルダにということだったので
cig-gifというフォルダを作ってその中に入れてるのですが・・・
0609nobodyさん
02/06/14 19:05ID:???http://pc.2ch.net/test/read.cgi/perl/1019752903/
鯖特有の事は、鯖のスレで聞いた方がいいと思われ。
0610577
02/06/14 23:02ID:fQhm2Pa6>>577
>フォームから送られてきた文字をどうやって処理するかもわかりません
その部分はもう問題に答が書いてあるじゃん。
送られてきた文字列は変数$argに入る。
ただし577のシングルクォートはバッククォートに直しとけ。
とあるのですが、argに入った文字列を出力しようとしても、何もでません。
echo $arg
↑
これでは、フォームから送られてきた文字を出力できないのですか?
0611nobodyさん
02/06/14 23:34ID:???それでいいはずなんだけどね。
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"で固定だけは出来たのですが中央に一枚だけ表示する方法がわかりません…。よろしくお願いします。
0613577
02/06/14 23:49ID:fQhm2Pa6<BODY>
<FORM action="cgiのあるページのアドレス"
method="post">
<p>文字:<INPUT type="text" name="osu"><BR>
<BR>
<INPUT type="submit" value="送信"></p>
</FORM>
</BODY>
postをgetに変えたりして、色々やってもできません。
誰かヘルプ・・・
0614577
02/06/14 23:51ID:fQhm2Pa6#!/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に代入するとこが間違ってるのでしょうか?
0617577
02/06/15 00:06ID:a+3gGUcItr "&+" "\012" | sed-e "s/^.*=//"`
この文自体、ただ書いておけといわれただけなので、意味不明だったのです。
どうもありがとうございました。
試してみます。
0618612
02/06/15 01:05ID:???単にCGI・CSS供にド素人なだけです。申し訳ない。
CSSで定義することが出来るのならその方法を教えていただけると・・・
などと思いましたがスレ違いですね。他で聞きますです。
0619577
02/06/15 01:21ID:a+3gGUcIやりたいことは、フォームから入力した文字をホームページから検索し、その行を抜き出すことです。
HTMLファイルから$argと同じものがあれば、その行を抜き出そうとしました。o
grep $arg ファイル名
として、フォームでlinkと打ったら、htmlファイルなのでタグなども一緒に出力してしまい、ます。
文字だけを出力する方法は、もしかして全然考え方が違うのでしょうか?
それとも、直接ホームページの文字だけを対象にして、行を抜き出すことができるのでしょうか?
混乱中です。
0620nobodyさん
02/06/15 01:34ID:???grep で行毎に抜き出すのでHTMLファイルを対象にしたら当然、タグも含まれる
でしょう。
grep 後の各行からタグを抜き取ってみるだけで解決するでしょう。
0621nobodyさん
02/06/15 02:01ID:???検索対象は本当にローカルなファイルなんか?
どうも>>576を見るとURLで指定されたWebページを検索せよと言ってるみたいだぞ。
おそらくlynxコマンドか何かでWebページ取ってこい、つうことじゃないかねえ。
lynxで読めば自動的にHTMLタグも消えるし。
0622577
02/06/15 02:35ID:a+3gGUcIそれを使えば、簡単にできるのでしょうか?
0623577
02/06/15 02:36ID:a+3gGUcIこの辺で寝ることにします。
色々教えてくれた方、ありがとうございました。
0624nobodyさん
02/06/15 02:42ID:HfE3zZiaタイトルを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なんで俺のとこのISP、HTTP_COOKIE対応してないのよ。
0626nobodyさん
02/06/15 07:25ID:???JavaScriptでクッキー使えばいいんじゃない?
0628nobodyさん
02/06/15 13:01ID:YL6dKHgl-----↓史上最低クズ板発見 !! (^o^)丿↓-------------------------
http://pc.2ch.net/hard/
カテゴリ;ハードウェア
★↑馬鹿博之本人 出没板★
------該当板発見、 ↓ちっともお勉強にも屁にもならない板発見 !!↓---------
×http://pc.2ch.net/hard/←チンカス板 or クズの集まり×
↑こいつらの中にスパムやってる奴いるぜ。
なんせ、↑こいつらキチガイ集団だからな。
0630577
02/06/15 14:55ID:73xXxu8B↑
これでHTMLタグが消えると、どこかに書いてたので下のようにやってみました。
sed 's/<[^>]*>//g' フィイル名
grep $arg ファイル名
ですが、うまくいきません。
いらない部分は、<で始まり、>で終わる部分だと思うのですが、それを検索対象にいれない方法がわかりません。
もしかして、621さんの言うlynxというコマンドを使わなければできないのでしょうか?
再び混乱中です。
誰か助けて〜
0631577
02/06/15 16:55ID:73xXxu8B半角英数での入力は問題ないのですが、全角で、例えば「あ」と入力すると「%82%A0」と表示されます。
フォームで全角文字を入力して、それを出力できるようにするにはどうすればいいのでしょうか?
0632577
02/06/15 17:42ID:73xXxu8Bしかし、やはり全角でひらがなとか漢字を入力すると何も出力されません。
たぶんそれを解決すればできると思うんですが、マジ困ってます。
もしかして、htmlファイルのフォームを作るときの記述で、特殊なことをしなければないらないのでしょうか?
0633あぼーん
NGNG0635577
02/06/15 22:16ID:73xXxu8Bhtmlファイルは
sed 's/<[^>]*>//g' ファイル名
によって
<html>
↑のように一行に書いているものは消えるのですが、
<
href=・・・
>
↑のように書いてるものは、「<」「>」はきえますが、href=・・・が消えません。
おそらくファイルの中で改行されてるからだと思いますが、このようなものはどうやって処理できるのでしょうか?
0636nobodyさん
02/06/15 22:54ID:???他の方法でHTML出力のCGIを簡単に起動させる方法ってありますでしょうか。
0637nobodyさん
02/06/15 23:01ID:???最初は、DLLを直接リンクして失敗なんでや
PHPのDLLはリンクするだけでいけたのに
再度Perlをインストールしました
そして、IISにリンクしたらつながったなんでや
0638nobodyさん
02/06/15 23:04ID:???<!--#include virtual="xxx.cgi"-->
普通これでそ。execコマンド怖いよ・・。
>>637
しらんわ
0639nobodyさん
02/06/15 23:11ID:???use Socket
この二つは同じモジュールかい?
使い方もかわるのかい?
0641nobodyさん
02/06/15 23:35ID:???>言語はなんだい?
ActivePerlですが何か
>それはCommon Gateway Interfaceと何か関係が有るのかい?
CGI=Perl これ定説
すれちがいならスマソ
0642nobodyさん
02/06/15 23:53ID:???CGI=Perl これ定説
CGI=Perl これ定説
0643nobodyさん
02/06/16 00:02ID:???0644635
02/06/16 00:05ID:sBhf/8rI0646nobodyさん
02/06/16 03:12ID:???前Socketについて聞いてたヤツか?まずその厨臭い喋り方をやめろ。
人に聞く前にここのページ100回読んでこい。
http://x68000.startshop.co.jp/~68user/net/
0647nobodyさん
02/06/16 08:49ID:???ごめんね
HPなかなかおもしろかったよ
アプリケーションプロトコル作りたいんだけど、CS系ではHTTPを
参考にするのがBESTなの?
0648nobodyさん
02/06/16 09:00ID:???http://x68000.startshop.co.jp/~68user/net/
こういうわかりやすいページって厨房は見つけられません
紹介してくれてありがとうございますた。
0650nobodyさん
02/06/16 16:34ID:yZ1tNdSi0652635
02/06/16 17:36ID:AKIK3E+Wクソスレとかを乱立させるので、注目してください。
今夜12時決行です!
0654nobodyさん
02/06/16 19:16ID:???スケジュールに関するCGIでログファイルのディレクトリを
設定したいんですけど、どうもうまくいかなくて。
#ログファイルのディレクトィまでの絶対パス(相対でも可)
$zettai = '';
#$zettai = '';
と書いてあるんですが、本体を置いてあるディレクトリまでの
絶対パスを書いてもログが生成されないんです。
他のCGIの説明を読むと「絶対パスを指定して下さい。
(URLではなくパスね。。)」などと書いてあるし。
サポート掲示板に同じようにログファイルが生成されないと
質問がいくつかありましたが、4月の質問にレスがついてません。
ログファイル用のディレクトリ作ったり、色々と試したんですが。
どなたかヒントだけでもお願いします。
0655635
02/06/16 19:18ID:AKIK3E+W今日の内に質問の答えが返らなければあきらめましょう。
今夜、この板を含むプログラム関係の板は、荒らしによって消滅します。
0656nobodyさん
02/06/16 19:36ID:z5KHLw2yこっちにももっとヒントを下さい
ものすごく難しいなぞなぞだ・・・
0657654
02/06/16 20:13ID:???ヒントですか、どう説明したらいいんでしょうか。
私は、絶対パスってURLとイコールして考えてたんですね。
なのに、わざわざ「URLではなくパスで」と書いてあるので
そこから悩んでしまったんです。
使いたいスクリプトの解説には
・$zettai = のところをログファイルのディレクトリィまでのパスを指定して下さい
(絶対パスでも相対パスでもOKです)
スクリプト自体には
#ログファイルのディレクトィまでの絶対パス(相対でも可)
$zettai = '/export/home1/aaaaa/public_html/cgi-bin/library/schedule/';
#$zettai = '/www/aaaaa/public_html/cgi-bin/schedule/';
と記述してあるんですけど(aaaaaだけ書き換えました)
私が初歩的なところを分かっていないとは思うんですけど
絶対パスの定義が分からなくなって混乱してます。
■ このスレッドは過去ログ倉庫に格納されています