プロが教えるわが家の防犯対策術!

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1437399
で$_REQUEST の理解を深めたく質問中ですが
$_REQUEST の[ ]の中の変数は結局、
?item=500&xt=100の部分を作るためのものなんでしょうか
とくにDBとの関連で必要でしょうか

たとえば
stage.phpのコードで
<?php
…$name=$_REQUEST['name']…
if($name='a'){echo'<html>a</html>'}
if($name='b'){echo'<html>b</html>'}
stage.php?name=a
stage.php?name=b
というページができるという理解でしょうか?
(すいません、質問に個所でしてしまって)

A 回答 (3件)

質問を読む限り、大きな勘違いをしているように思います。



$_REQUEST変数は、スクリプトの外部から値を得るための変数です。例えばstage.php?a=1 というリクエストがあったら、stage.php内の$_REQUEST["a"]に1が入っています。ただそれだけの変数です。

外部から値を得る変数は他にも$_POST,$_GET,$_COOKIEなどあります。これは例えばPOSTメソッド送られたパラメータ、COOKIEの値など、外部の値の種類によって変数が違います。$_REQUEST変数はこれらが全部含まれているんです。仮に$_POST["a"]に1、$_COOKIE["b"]に2という値が入っていたとすると、#_REQUEST["a"]=1,$_REQUEST["b"]=2という値が同時に現れます。

個人的にはほとんど使わない変数ですね。なぜならその値がどこから来たのかはわからないので、下手をするとセキュリティホールになり得るからです。$_REQUEST変数を研究する前に、$_POST,$_GET,$_COOKIEあたりを先に理解した方がいいと思いますし、スクリプト上の実装もこれらを使った方が良いと思います。

どこまで噛み砕いて書けばいいのかわからないのですが、これでもわからなければ初心者向けの入門本で基本的なところを学んだ方が良いかも知れません。
    • good
    • 0
この回答へのお礼

非常にありがとうです
こういうことだんたんだ という実感が持てました
実際に使えました
ということはファイル名の?name=aの部分については
$_FILESを使おうと思います

一つよく分らないのは、これはスクリプト内部でも変数を読ませることができると思います
この場合の変数を読ませる順番は外部が先で内部が後と理解しておけばいいんでしょうか

お礼日時:2005/06/11 08:41

実際のコードで実験してみたほうが分かりやすいと思います。



変数を読む順番はPHPで記述された上から順番に処理されるので、外部とか内部とかの優劣はありません。
まぁ、外部から読み込めばPHPを開いた時点で変数に入るので内部で記述するよりは早いと言うことかもしれませんが、そこはあまり気にするところではないですね。

要はどのように処理するか。ですから。

ちなみに$_FILESはなんか間違っているような・・・
(一旦$_FILESは忘れてください)
一般的に最初は $_POST か $_GET しか使いません。

<form action="x.php" method="POST">
<input type="text" name="a" value="1">
<input type="submit">
</form>

とすれば $_POST['a']に「1」が入ります。

x.php?a=1

とすれば $_GET['a']に「1」が入ります。

POST か GET か分からない場合は
$_REQUEST
を使えばどちらとも対応しますよ、と言うことです。

これをPHP内部で
$_GET['a'] = 2;
とすれば
$_GET['a'] は「2」になります。

つまり、最後に指定した物が有効になるのです。
最初が大切ではなく、最後が大切なんですね。
    • good
    • 0
この回答へのお礼

本当にありがとうございます
少しはREQUEST,POST,GETの区別ができるようになりました
これからも頑張っていきます

お礼日時:2005/06/11 12:56

No1です。



>ということはファイル名の?name=aの部分については
$_FILESを使おうと思います

おっと、$_FILESは違いますよ。これはフォームでファイルをアップロードした場合に、そのファイル名などが入る変数です。普通にURLの後ろに?name=aを付けたとしたら$_GETです。

>一つよく分らないのは、これはスクリプト内部でも変数を読ませることができると思います
>この場合の変数を読ませる順番は外部が先で内部が後と理解しておけばいいんでしょうか

$_REQUEST変数において、という事ですよね?いい質問ですね。variables_orderという設定項目で順番を設定する事ができます。

とここまで書いて、こういう事を聞いているのではない感じがしてきました・・・。「変数を読ませる順番」って表現がちょっと変ですね。「変数とは何ぞや」って部分で勘違いしているという事はないですか?
    • good
    • 0
この回答へのお礼

ありがとうございます
$_FILESはアップロード関係だったんですね.
$_GETで理解します

>「変数を読ませる順番」って表現がちょっと変ですね。
はい、仰せのとおりでございます
私の気持ちが切羽詰っていて取り乱し放題です
変数はデータを格納するようなものなので
$_REQUEST変数に入るデータの順番 という言い方が正確だと思います

>とここまで書いて、こういう事を聞いているのではない感じがしてきました
そんなことありません、こういうことが理解できたので
スッキリ理解することができました
ですが、variables_orderという設定はまだ使う予定がありません
いずれ使えるようになりたいと思います.そのころには忘れず思い出して使えるようにしておきたいと思います

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

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