電子書籍の厳選無料作品が豊富!

教えて下さい。
01: <?php
02: class Reload {
03: var $id;
04: var $val;
05: var $flag;
06: function Reload($id = 'RELOAD') {
07: $this->id = $id;
08: if ($_GET[$this->id])
09: $this->val = $_GET[$this->id];
10: elseif ($_POST[$this->id])
11: $this->val = $_POST[$this->id];       以下略
こういういうコードがある本に出ているのですが、これをCentOS 5.4で include したスクリプトを実行すると、
Notice: Undefined index: ID in /xxx/abc.php on line 8 (および on line 10 にも ) と警告が出ます。
この警告をなくすために、id=""; を 3行目の下に入れてみると、
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /xxx/abc.php on line 4
(id=""; を挿入した行) となります。
なお、windows7 で xampp 上でテストしているときは、上記スクリプト(id=""; をする前)でも不具合は出なかったのですが、対処法が分からず途方に暮れています・・・。  どのように修正すればよいでしょうか。  よろしくお願いいたします。

A 回答 (1件)

> Notice: Undefined index: ID in /xxx/abc.php on line 8 (および on line 10 にも )



これって、 $_GET['ID'], もしくは $_POST['ID'] ってのが無いからじゃないかな?

> この警告をなくすために、id=""; を 3行目の下に入れてみると、
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /xxx/abc.php on line 4

これは、下に入れるんじゃなくて、3行目を var $id = ""; にしないとだめじゃないかと。クラス変数なんで。

とりあえず、issetとか、array_key_exists でも使って、キーがある場合は処理をする。
ない場合は、ない場合の処理を記述しては?
#ない場合はどういった振舞いをすべきかは、回答者はわからないので。

具体的には、8行目以降をブロックで囲むか、
8行目~11行目を

$this->val = ( isset( $_REQUEST[$id] ) ) ? $_REQUEST[$id] : "ない場合の値";

にまとめてしまう。
$_REQUEST にはクッキーの値まで含まれているので、クッキーを使っている場合は注意して下さい。

とかでしょうか?
    • good
    • 0
この回答へのお礼

有難うございました。もう一度はじめからやり直してみます。

お礼日時:2011/02/23 11:18

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