こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

PHPの設定について

よろしくお願いします。

先日、自宅サーバでアパッチとphpの4.3をインストールしました。

で、ローカルで試したところ、他は普通に動くのですが、変数を受け取りません。

たとえば

<?php

echo $test;


?>

と記述したPHPをtest.phpとしてサーバフォルダにおき、


ブラウザでhttp://localhost/test.php?test=abc
を見ても真っ白の画面になります。

同様に

<form action="test.php" method="post">
(getでも試しました)
<input type="text" name="test">
<input type="submit" value="送信">
</form>
といったようにmethodで送っても真っ白な画面のままです。

次に
test.phpを

<?php

if( $test == abc ){
echo "OK";
}else{
echo "NG";

}
?>

とやってみて試しましたが結果はNGでした。

どうやら変数を受け取ってないらしいです。

phpのセキュリティを変更したらよいとの記事を見つけたのでそういう関係サイトを検索してみたのですが、それらしき内容を見つけられませんでした。

どなたかご教授お願いします。

投稿日時 - 2004-10-25 22:59:02

QNo.1056390

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

他の方の補足ですが、、(^^;)

POSTやGETされたデータをそのままの変数名で取得するには、php.iniのregister_globalsをOnにしないといけません。

また、推奨されないからデフォルトでOffなので、スーパーグローバル変数を使われた方が良いと思います。(せっかく4.3使ってるんだし)

フォームやリンクがGETメソッドの場合 $_GET
フォームのPOSTメソッドの場合 $_POST
どっちでも使いたい場合 $_REQUEST

PHPマニュアル
http://www.php.net/manual/ja/security.registerglobals.php
http://www.php.net/manual/ja/language.variables.predefined.php

投稿日時 - 2004-10-26 14:31:45

ANo.2

初めて回答に参加します。失礼の段はお許しを。。

私の自宅サーバ環境
(WINXP+APACHE2.0+PHP4.3.6、PHP.INI内のGlobal_ResistersはOFF)
で変数を受け取る際はこうしています。

<?PHP
$test = $HTTP_GET_VARS["test"];// ←GETで受け取る場合の連想配列。
echo $test;
?>

としています。

ついでに2番目のPostMethodの受け取りですが・・・

<?PHP
$test = $HTTP_POST_VARS["test"];// ←POSTで受け取る場合の連想配列。
if( $test == 'abc' ){ // ←文字列なので、もしかすると''で囲う必要があるかも・・(^^;
echo "OK";
}else{
echo "NG";
}
?>

上記はテストしていません。
OSもWINXPなので参考になるかどうかわかりませんが、
元々はDebianで作成した時に学んだことなので、
あまりOSは関係ないような気もします。
あくまでご参考までに。。

投稿日時 - 2004-10-26 02:05:54

ANo.1

 PHPはあるバージョン(正確には失念、4.1か4.2くらいかなぁ)から、php.iniのregister_globalsをOnにしないと、直の変数名でアクセスできなくなった。

 ので、POSTされたtestを受け取りたいのなら$_POST['test']、GETされたtestなら$_GET['test']と記述しないといけない。

 register_globalsを変えるか、スクリプトで$_POST、$_GET連想配列を使うかのどちらかだ。

投稿日時 - 2004-10-25 23:32:59

あなたにオススメの質問