■こんなCGI作ってください■

このエントリーをはてなブックマークに追加
952nobodyさん:2005/11/29(火) 04:46:35 ID:g9Q5Rj3K
アクセスカウンター
 ・総合、昨日、今日のアクセス数を表示
 ・カウントしないホストを設定できる
 ・更新はカウントしない
(・現在閲覧してる人数を表示)

お願いします。
953nobodyさん:2005/11/29(火) 04:53:41 ID:???
【メールフォーム】
ブラウザ上から、指定されたメールアドレスへメールを送信できるもの
メールが送られた際に、通知機能があれば尚○

【掲示板】
“髭式BBS”のような掲示板
ttp://trade.netgame-rmt.jp/read.xpl/general/lobby/
このように、シンプル且つ、機能性に優れたのもだと尚○

以上2つを作っていただきたいです。
双方共、何の制限もなく使用(商用利用やレンタル等)したいです。
著作権表示等は表示します。
双方を作成して頂ける方、レスお待ちしています。

双方共、専用に作って頂きたいので
謝礼金として、代金をお支払いしたいと思います。
954nobodyさん:2005/11/29(火) 09:42:10 ID:???
>>953
レンタルさせといて、サポートできるのか?
955nobodyさん:2005/11/29(火) 19:55:18 ID:SAbfTQUv
【文字変換CGI?】


下のような配列があるとします。

@retsu =(

'first',
'
'second',
'third",
'fourth',
'fifth'
);

SSIで<!--#exec cmd="henkan.cgi?1"-->とshtml中に記述してブラウザで見ると
配列の1番目の文字を返す
first

同様にクエリを変えて<!--#exec cmd="henkan.cgi?2"-->とすると
second

<!--#exec cmd="henkan.cgi?3"-->だと
third

<!--#exec cmd="henkan.cgi?4"-->だと
fourth
..............

のようになるCGIを作成して頂く事は可能でしょうか・・・?
困ってます。どなたかお願い致します。
956nobodyさん:2005/11/29(火) 20:14:03 ID:???
ぷりんと $retsu[くえりーマイナス壱];
957955:2005/11/29(火) 20:36:40 ID:SAbfTQUv
>>956さん
ヒントを頂きありがとうございます。
これじゃダメなんでしょうか?何も表示されないんです・・。

#!/usr/bin/perl



@retsu=(
'いちばんさいしょ',
'にばんめ',
'さんばんめ',
'よんばんめ',
'ごばんめ'

);



$kekka=$retsu[int($ENV{'QUERY_STRING'})-1];





print "$kekka";




exit;
958nobodyさん:2005/11/29(火) 21:08:09 ID:jT6RPKnv
CGI の結果でいいなら
include virtual
がいいかと思う。

exec cmd はセキュリティの関係上実行できないこともあるし・・・
959nobodyさん:2005/11/29(火) 21:13:28 ID:???
958に付け加えるなら
Content-type: text/html;\n\n
かな。
960nobodyさん:2005/11/29(火) 21:14:02 ID:???
>>958さん

できました! execてクエリ使えないんですね・・。
includeでやったら表示されました。

#!/usr/bin/perl

print "Content-type: text/html\n\n";

@retsu=(
'いちばんさいしょ',
'にばんめ',
'さんばんめ',
'よんばんめ',
'ごばんめ'
);

$kekka=$retsu[$ENV{'QUERY_STRING'}-1];

print "$kekka";

exit;

これでいけました!感謝です。
961nobodyさん:2005/11/29(火) 21:28:17 ID:jT6RPKnv
というか、 exec cmd でやったら動かなかったの (;´∀`)

perl の関連付けはしてないから perl の PATH を指定したら not found (perl がね)
エラー見ると /Webサイドのアドレス/usr が無いとか・・・

SSI をやるなら perl も自分のアドレス以下に置かないといけないのかな?
だとしたら面倒くさいっすねぇ SSI って
962nobodyさん:2005/11/30(水) 19:03:01 ID:SzZxWnK9

性別

回答者合計者○($SEXSUM)名中

男○($SEXMALE)名
女○($SEXFEMALE)名




というのをHTMLで出力したいんだけど、ディレクトリに SEX.txtというのを置いて
そのtxtファイルの中に「 0,0 」
というふうに男女の初期値の人数をいれておいて。

毎回フォームから'GENDER'の値が0(男性).もしくは1(女性)で送ってきた時のみ。
SEX.txtを読み込んで、1足して表示→そして読み込んだSEX.txtの人数の一人プラスという
ようなPERLスクリプト分かる人いますか?
963nobodyさん:2005/11/30(水) 19:58:07 ID:???
964nobodyさん:2005/11/30(水) 20:43:58 ID:???
マルチでもいいや
簡単そうだから作ってやる
965(1/2):2005/11/30(水) 21:12:57 ID:???
#!/usr/bin/perl
$|=1;

if($ENV{'REQUEST_METHOD'} eq 'POST'){
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
foreach $str (split(/\&/, $buf)) {
($key, $val) = split(/=/, $str, 2);
$in{$key} = $val;
}
}else{
$buf = $ENV{'QUERY_STRING'};
foreach $str (split(/\&/, $buf)) {
($key, $val) = split(/=/, $str, 2);
$in{$key} = $val;
}
}

open(LOG, 'SEX.txt');
$buf = <LOG>;
close(LOG);

($SEXMALE, $SEXFEMALE) = split(/,/, $buf, 2);

if($in{'GENDER'} eq '0'){ $SEXMALE++; }
else{ $SEXFEMALE++; }

open(LOG, '>SEX.txt');
print LOG "$SEXMALE,$SEXFEMALE";
close(LOG);
966(2/2):2005/11/30(水) 21:14:01 ID:???
$SEXSUM = $SEXMALE + $SEXFEMALE;

print 'Content-Type: text/html', "\n\n";
print << "_END_";
<html>
<head>
</head>
<body>
性別<br><br>
回答者合計者 $SEXSUM 名中<br><br>
男 $SEXMALE 名<br>
女 $SEXFEMALE 名
</body>
</html>
_END_


一応条件は満たしてるはずだ
967(3/2):2005/11/30(水) 21:16:39 ID:???
else{ $SEXFEMALE++; }



if($in{'GENDER'} eq '1'){ $SEXFEMALE++; }

に変えといた方がええかもしれん
968nobodyさん:2005/11/30(水) 21:20:08 ID:yBICzhED
>>965
長すぎ、そんなんより

open(my $SEX, "+<sex.txt") or die $!;
my ($males, $females) = split(/,\s*/, <$SEX>);
seek($SEX, 0, 0);
if (form['SEX'] eq "0") {$males++:}
if (form['SEX'] eq "1") {$females++:}
$SEXSUM = $males + $females
print $SEX ("$males, $females");
print $SEXSUM ;

でいいだろ
969968:2005/11/30(水) 21:21:09 ID:yBICzhED
すまん間違えた

open(my $SEX, "+<sex.txt") or die $!;
my ($males, $females) = split(/,\s*/, <$SEX>);
seek($SEX, 0, 0);
if (form['GENDER'] eq "0") {$males++:}
if (form['GENDER'] eq "1") {$females++:}
$SEXSUM = $males + $females
print $SEX ("$males, $females");
print $SEXSUM ;
970nobodyさん:2005/11/30(水) 21:22:00 ID:???
おまいらそんなにSEXSEX連呼するなw
971nobodyさん:2005/11/30(水) 21:26:39 ID:???
>>969
いくつか依頼者の条件に合ってない
つーか大して長さ変わらんだろw
972968:2005/11/30(水) 21:29:13 ID:yBICzhED
>>971
でも、フォーム入力されたものは

form['GENDER']  として呼び出したほうがよくない?
その方が簡略化できる。
973nobodyさん:2005/11/30(水) 21:35:07 ID:???
>>972
>form['GENDER']

何その呼び出し方
なんかモジュール使うの?
974nobodyさん:2005/11/30(水) 21:38:06 ID:yBICzhED
フォーム入力された情報を取り出すための記述はもっと簡略化できそうなもんだけどなー
975nobodyさん:2005/11/30(水) 21:44:44 ID:???
誘導されてきました。
ttp://sports.locmap.net/

↑こういう使い方をしたのですが、どうやって作るのでしょうか?
使い方としては自分のウェブサイトの一部に埋め込みたいのですが
どうやって飛ばしているのはまったくわかりません・・・○| ̄|_
976(3/2):2005/11/30(水) 21:50:18 ID:???
>>975
CGIにアクセスしてLocationか何かで飛ばしてるだけ
比較的単純
977(3/2):2005/11/30(水) 22:11:05 ID:???
こんな感じかな。

--- test.cgi ---

#!/usr/bin/perl
$|=1;

if($ENV{'REQUEST_METHOD'} eq 'POST'){
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
foreach $str (split(/\&/, $buf)) {
($key, $val) = split(/=/, $str, 2);
$in{$key} = $val;
}
}else{
$buf = $ENV{'QUERY_STRING'};
foreach $str (split(/\&/, $buf)) {
($key, $val) = split(/=/, $str, 2);
$in{$key} = $val;
}
}

$url = 'http://local.google.co.jp/maps?q=category%3A+';
$url .= $in{'cat'};
$url .= '+loc%3A+';
$url .= $in{'loc'};
$url .= '&f=l&hl=ja';

print 'Location: ', $url, "\n";
print 'Content-Type: text/html', "\n\n";
print '<html><head></head><body><a href="', $url, '">', $url, '</a></body></html>';
978(3/2):2005/11/30(水) 22:12:23 ID:???
んで test.html から test.cgi を呼び出すと。
HTMLは書けるって向こうのスレで言ってたよな。
この時utf-8じゃないと化けるので注意

--- test.html ---

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<form action="test.cgi">
探しているカテゴリを入力してください<br>
<input type="text" name="cat"><br><br>
お住まいの地域を入力してください<br>
<input type="text" name="loc"><br><br>
<input type="submit">
</form>
</body>
</html>
979(3/2):2005/11/30(水) 22:19:19 ID:???
test.cgi をちょっとスマートにした

--- test.cgi ---

#!/usr/bin/perl
$|=1;

if($ENV{'REQUEST_METHOD'} eq 'POST'){ read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); }
else{ $buf = $ENV{'QUERY_STRING'}; }

foreach $str (split(/\&/, $buf)) {
($key, $val) = split(/=/, $str, 2);
$in{$key} = $val;
}

$url = 'http://local.google.co.jp/maps?q=category%3A+';
$url .= $in{'cat'};
$url .= '+loc%3A+';
$url .= $in{'loc'};
$url .= '&f=l&hl=ja';

print 'Location: ', $url, "\n";
print 'Content-Type: text/html', "\n\n";
print '<html><head></head><body><a href="', $url, '">', $url, '</a></body></html>';
980nobodyさん:2005/11/30(水) 23:20:57 ID:???
なんつーか、
つ use strict;
981nobodyさん:2005/11/30(水) 23:23:21 ID:???
これぐらい単純なスクリプトだと use strict とかは要らない気がするんだが
982nobodyさん:2005/11/30(水) 23:25:55 ID:???
初めは誰でもそう思う
983nobodyさん:2005/11/30(水) 23:28:41 ID:???
初めとかじゃなく普通に要らないと思うんだが・・
特にメリットないだろ?
984nobodyさん:2005/11/30(水) 23:35:17 ID:???
そうかもしれないが、975のような素人の発言に対して
サラ〜とプログラムが書けるのはカッコイイと思う。(正直な話)
985nobodyさん:2005/11/30(水) 23:37:19 ID:???
次スレ立てとくかな
986nobodyさん:2005/11/30(水) 23:39:16 ID:???
>>983
メリットは無いね。
でも完成したときに use strict; を外すときの達成感は好き。
987nobodyさん:2005/11/30(水) 23:40:24 ID:???
>>986
あー確かにそれは爽快だな

ほい、

■こんなCGI作ってください■ Part.2
http://pc8.2ch.net/test/read.cgi/php/1133361560/
988nobodyさん:2005/11/30(水) 23:44:06 ID:???
これ次スレ要るのかいな?
989nobodyさん:2005/11/30(水) 23:59:42 ID:???
なんだかんだ言って必要なスレかな、と
990nobodyさん:2005/12/01(木) 01:01:14 ID:???
>>977-979
即レスありがとうございます。
教えていただいたタグで設置したところ問題なく作動しました。
ただカテゴリ選択の際にテキストボックスではなくラジオボタンで複数から選択したいのですが・・
991nobodyさん:2005/12/01(木) 01:03:42 ID:???
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<form method="GET" form action="test.cgi" target="map">探しているカテゴリを入力してください<br>
<input type="radio" name="cat" value="0" checked>ああああ  
<input type="radio" name="cat" value="1">いいいい  
<input type="radio" name="cat" value="2">うううう  
<input type="radio" name="cat" value="3">ええええ  
<input type="radio" name="cat" value="4">おおおお  
<br>
<br>
お住まいの地域を入力してください<br>
<input type="text" name="loc"><br>
<br>
<input type="submit" value="検索"></form>

と記入してみましたがカテゴリが上手く反映されませんでした。
992nobodyさん:2005/12/01(木) 08:27:13 ID:Yh8Cr0vg
フォームくらい自分で調べろや。埋め。
993nobodyさん:2005/12/01(木) 09:41:59 ID:3+wviFCV
994nobodyさん:2005/12/01(木) 09:42:50 ID:3+wviFCV
995nobodyさん:2005/12/01(木) 09:43:50 ID:3+wviFCV
996nobodyさん:2005/12/01(木) 09:44:51 ID:3+wviFCV
997nobodyさん:2005/12/01(木) 09:46:05 ID:???
998nobodyさん:2005/12/01(木) 09:47:15 ID:???
999nobodyさん:2005/12/01(木) 09:48:19 ID:???
1000nobodyさん:2005/12/01(木) 09:49:17 ID:3+wviFCV
@ge
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。