アプリ版:「スタンプのみでお礼する」機能のリリースについて

<?php
$_REQUEST[$i]='jiroが$i人いる";
for($i=1;$i<100;$i++){
echo"$_REQUEST[$i]<br>";}
?>

これを
<?php
$_REQUEST[$i]='jiroが$i人いる";
for($i=0;$i<100;$i++){
echo"\$_REQUEST[$i]<br>";}
?>
するとエラーは表示されませんが
$_REQUESTを変数と見てくれなくなってやはりダメです
これはどういうことが原因してるんでしょうか
また、解決策を教えてくださいませ

ちなみに、表示させたい結果は
jiroが1人いる
jiroが2人いる

jiroが100人いる
です

A 回答 (3件)

まずスクリプトのコーディングがめちゃめちゃです。

めちゃめちゃすぎてどこから説明すれば良いのかわからないくらいです・・・。

それとまだ$_REQUESTが何なのかを大きく勘違いしているみたいです。もともと$_REQUEST変数の使用自体推奨されてないみたいですし、一旦$_REQUEST変数の事は忘れましょう。なんか根本的に勘違いがあるみたいですよ。そもそも配列自体をわかってないように思います。この状態でスクリプトを書くのには無理があるので、一度入門書のサンプル等を組みながらひとつひとつ意味を調べて行ったほうがよいのでは?基本的な知識がないと、このような所でいくら質問をしても、その回答自体を理解できないんじゃないでしょうか。

ちなみにやりたい事をサクっと書くと

for($i=1;$i<=100;$i++){
echo "jiroが$i人いる<br>\n";
}

これだけじゃないですかね。$_REQUESTだのなんだのは、全く関係ないと思いますよ。
    • good
    • 0
この回答へのお礼

ありがとうございます
すいません、たしかにjiroの処理に$_REQUESTは不要で
wakame0729様の処理が一番です
私も質問した後に気がつきました.

本当にやりたいことは
オプションから選んだ項目に対して
それに応じた処理をするものですが
もう少しやりたい処理の内容を整理して
また$_REQUESTが本当に必要が否か検討して質問しなおさせてくださいませ

お礼日時:2005/06/11 16:50

まずPOSTとGETについて理解した方がいいですね。

ブラウザからサーバーに「WEBの内容を送って下さい」とお願い(リクエスト)する方法は2つあります。POSTとGETです。ブラウザに普通にURLを打ち込んだ状態、またはAタグでリンク先に飛ぶ場合はGETという方法でサーバーにリクエストしています。

もう一つのPOSTですが、フォームを使ったリクエストがありますね、この<form>タグにmethod="xxxx"という属性があると思いますが、ここにmethod="post"と書くとPOSTという形式でリクエストをします。method属性を省略した場合またはmethod="get"と書いた場合はフォームでもGETになります。フォームであればinputタグ、selectタグなどが、URLのリクエストであれば?name=10というような尻尾の事をパラメータと呼ぶ事にしましょう。この時、受け取る側のスクリプトでは、GETが使われていれば$_GET,POSTであれば$_POSTにそのパラメータが$_GET["名前"]="値"、$_POST["名前"]="値"という形式で入ります。そして$_REQUESTにはGETであってもPOSTであっても$_REQUEST["名前"]="値"という形式で同時に入ります。

ちなみにGETとPOSTの違いですが、GETですとパラメータの長さに制限があるのに対し、POSTでは制限がありません。大きなデータを送るならPOSTです。また、GETはパラメータが全部URLの形で見えてしまいますが、POSTは一応隠されています。パラメータをあまり見せたくないという理由でPOSTを使う事もあります。

$_REQUEST変数の使用が推奨されないというのは以下の理由です。$_REQUEST変数に表れるパラメータはPOST,GET以外にもクッキーの値、サーバーの環境変数なども入ります。$_REQUEST変数の値を見ているだけでは、その値がどこから来たのか判断できません。例えばサーバーの環境変数を見ているつもりで$_REQUESTの値を参照している箇所があるとしますね?もし悪意があってスクリプトの内容を知っている人がいたら、サーバーの環境変数と同じ名前と任意の値をGETで送りつける事で、スクリプトを勘違いさせる事もできてしまいます。これが場合によってはセキュリティホールになり得ると言った意味です。

リクエスト元がGETなのかPOSTなのかが解っているのであれば、$_GET,$_POSTを使うべきだと思います。

この回答への補足

次のような処理がもし分れば教えて下さい
まず、mysqlのDBがあります
恋人DBの男テーブルがあるとします
男テーブルには次のデータが入ってます
 ID  Name  birthday  年収  肩書
 1  さとし  19840508  192  プー
 2  ひろし  19840806  206  土方作業
 3  ともひさ 19830203  36   ストリート
 4  こうじ  19850321  567  設計士   
 5  権助   19431011  3257  市長
次に
profile.phpというページに
オプションボックスがあってリストが次のようになっています
1 さとしのプロフを見る
2 ひろしのプロフを見る
3 ともひさのプロフを見る
4 こうじのプロフを見る
5 権助のプロフを見る

ここで例えば2のひろしを選んだとするとつぎのようになります
profile.php?loverid=2
 name ひろし
 年収 206万円
 年  20歳(今年の8月で21歳になる)
 肩書 土方作業
というページに表示が変わります

こういうのを作りたいのですが私は次のように考えてます
profile.phpのソース
 mysql_connect(恋人DB、pw,user);
 $man=mysql_query(select * from 男);
 $num_man=mysql_num_rows($man);
 //オプションボタンを作る
 if(!$num_man=0){
 echo"<select name=man>
 for($i=1;$i<=$num_man;$i++){
$name=mysql_result($man,$i,"name");
echo"<option value=$i>
 $i<space>$nameのプロフを見る"</option>;}
 else{echo"男いない";}
 //オプションで選択したときの処理
 この後がときに悩んでます
 ここで$_POSTを使うと思いますがテーブルのキーとして反映させるかがよく分ってません
アドバイスを是非お願いします

補足日時:2005/06/11 21:17
    • good
    • 0
この回答へのお礼

とってもありがとうございます
実は私も$_POSTと$_GETの違いが気になっていたんです
わたしは、wakame0729様の言う違いだなんて思ってませんでした.もっとこう、データもとの違いなのかなと思ってました.URLの尻尾のデータなのかフォームから得られるデータなのかとか、ですが、このような説明を聞くと
$_GETで使えなかったら$_POSTを使えというつまり、$_POSTの方が一般的なような気に思えました
これからは$_REQUESTよりも$_GETや$_POST,$_COOKIEなどを使うようにします

お礼日時:2005/06/11 19:16

最初の質問とは完全に内容が変わっちゃってますので、別な質問を立てましょう。

それから、おっしゃってる処理はどこにでもあるものです。入門書などにサンプルが載ってる場合もあるでしょう。ここまでできるだけわかりやすく答えて来ましたが、このレベルから教えなければならないとなると、そのうち一本のプログラムを僕が書かなければならなくなりそうです。

実際のところ、補足にあるスクリプト、こちらで問題点を指摘するレベルではなく、一から正しいものを書かなければならないほどおかしなものになっています。いきなり独学で(というか、ここに頼りっきりで)開発しようとしないで、適当な本やサンプルなど見つけて、この程度の基本的な処理は動かせるようになってから、その上で具体的な質問をするようにしたらどうですか?ちょっとこれではこのようなQ&Aサイトでできる事を超えてると思いますよ。

冷たいようですが、基本的な知識がなければこちらもわかって頂く自信がありません。ご考慮下さい。

P.S 補足にある質問は$sql = "select * from 男 where ID = ".$_POST["loverid"];がヒントです。実際には入力チェックをしないと実用性に問題があるでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございました
ヒントだけでも嬉しいです
入門書を読みながら勉強していきます

お礼日時:2005/06/12 08:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!