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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001104/12/14 08:35:03ID:???
ご要望をどぞ
0960nobodyさん2005/11/29(火) 21:14:02ID:???
>>958さん

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

#!/usr/bin/perl

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

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

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

print "$kekka";

exit;

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

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

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

性別

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

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




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

毎回フォームから'GENDER'の値が0(男性).もしくは1(女性)で送ってきた時のみ。
SEX.txtを読み込んで、1足して表示→そして読み込んだSEX.txtの人数の一人プラスという
ようなPERLスクリプト分かる人いますか?
0963nobodyさん2005/11/30(水) 19:58:07ID:???
http://pc8.2ch.net/test/read.cgi/tech/1131286411/641
http://pc8.2ch.net/test/read.cgi/tech/1086143976/343

マルチ放置推奨
0964nobodyさん2005/11/30(水) 20:43:58ID:???
マルチでもいいや
簡単そうだから作ってやる
0965(1/2)2005/11/30(水) 21:12:57ID:???
#!/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);
0966(2/2)2005/11/30(水) 21:14:01ID:???
$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_


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

を

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

に変えといた方がええかもしれん
0968nobodyさん2005/11/30(水) 21:20:08ID: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 ;

でいいだろ
09699682005/11/30(水) 21:21:09ID: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 ;
0970nobodyさん2005/11/30(水) 21:22:00ID:???
おまいらそんなにSEXSEX連呼するなw
0971nobodyさん2005/11/30(水) 21:26:39ID:???
>>969
いくつか依頼者の条件に合ってない
つーか大して長さ変わらんだろw
09729682005/11/30(水) 21:29:13ID:yBICzhED
>>971
でも、フォーム入力されたものは

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

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

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

--- 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>';
0978(3/2)2005/11/30(水) 22:12:23ID:???
んで 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>
0979(3/2)2005/11/30(水) 22:19:19ID:???
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>';
0980nobodyさん2005/11/30(水) 23:20:57ID:???
なんつーか、
つ use strict;
0981nobodyさん2005/11/30(水) 23:23:21ID:???
これぐらい単純なスクリプトだと use strict とかは要らない気がするんだが
0982nobodyさん2005/11/30(水) 23:25:55ID:???
初めは誰でもそう思う
0983nobodyさん2005/11/30(水) 23:28:41ID:???
初めとかじゃなく普通に要らないと思うんだが・・
特にメリットないだろ?
0984nobodyさん2005/11/30(水) 23:35:17ID:???
そうかもしれないが、975のような素人の発言に対して
サラ〜とプログラムが書けるのはカッコイイと思う。(正直な話)
0985nobodyさん2005/11/30(水) 23:37:19ID:???
次スレ立てとくかな
0986nobodyさん2005/11/30(水) 23:39:16ID:???
>>983
メリットは無いね。
でも完成したときに use strict; を外すときの達成感は好き。
0987nobodyさん2005/11/30(水) 23:40:24ID:???
>>986
あー確かにそれは爽快だな

ほい、

■こんなCGI作ってください■ Part.2
http://pc8.2ch.net/test/read.cgi/php/1133361560/
0988nobodyさん2005/11/30(水) 23:44:06ID:???
これ次スレ要るのかいな?
0989nobodyさん2005/11/30(水) 23:59:42ID:???
なんだかんだ言って必要なスレかな、と
0990nobodyさん2005/12/01(木) 01:01:14ID:???
>>977-979
即レスありがとうございます。
教えていただいたタグで設置したところ問題なく作動しました。
ただカテゴリ選択の際にテキストボックスではなくラジオボタンで複数から選択したいのですが・・
0991nobodyさん2005/12/01(木) 01:03:42ID:???
<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>

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