• 締切済み

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のセキュリティを変更したらよいとの記事を見つけたのでそういう関係サイトを検索してみたのですが、それらしき内容を見つけられませんでした。 どなたかご教授お願いします。

みんなの回答

  • sakyo-t
  • ベストアンサー率70% (19/27)
回答No.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

  • Nechira
  • ベストアンサー率0% (0/0)
回答No.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は関係ないような気もします。 あくまでご参考までに。。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 PHPはあるバージョン(正確には失念、4.1か4.2くらいかなぁ)から、php.iniのregister_globalsをOnにしないと、直の変数名でアクセスできなくなった。  ので、POSTされたtestを受け取りたいのなら$_POST['test']、GETされたtestなら$_GET['test']と記述しないといけない。  register_globalsを変えるか、スクリプトで$_POST、$_GET連想配列を使うかのどちらかだ。

関連するQ&A