- ベストアンサー
サーバーOS、バージョンの差異?フォームリクエストについて。
こんばんわ。 現在PHPを使って動的なページを作成しています。 そこで問題です! あるサイトには・・・GETやPOSTなどで飛ばしたデータを「$a」などという形で取得できると説明していますが、ある別のサイトでは、POSTであれば「$_POST["a"] 」でGETでは「$_GET["a"]」というように異なる説明をしています。 実際、私が開発用に用意したサーバーでは後者のやり方でしか取得できませんでした。 これは何が違うからなのでしょう? 私が持っている参考資料では前者であり、意味がわからずあせっています! 前者で出来るようにしたいのですが・・・。 宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
サーバーの仕様によります。 php.iniにおいて、global_registerがONになっていると、 $aなどで使えます。 OFFになっていると$_POSTなどを使うしかないです。 global_register=ONは、バージョンいくつからかわすれましたが、デフォルトではOFFになりました。 それまではデフォルトでONでした。 しかし、global_register=ONはセキュリティ的に問題が発生しやすいので、一般的に最近はONにしていることは少ないです。 詳しく知りたければ、global_registerについて調べてみることをおすすめします (技術者の方のようなので、いろいろと自分で調べたほうがよくわかるかとおもいましたので)
その他の回答 (3)
- kalze
- ベストアンサー率47% (522/1092)
#3のおっしゃることがすべてですが、補足します >php.iniについて Fedoraはサーバー向きではないので、 使っていない為に、具体的にどこのディレクトリにあるのかは解りませんが、検索してみてください。 #3の方がおっしゃっている方法でもOKですし、コンソールで検索してもいいとおもいます。 全ディレクトリを検索してしまうので、マシンスペックによっては若干時間かかるかもしれませんが、 find / -name php.ini とコンソールから入力してください。 php.iniという名前のファイルが検索されます。 もしかしたら雛型用もひっかかるかもしれませんが、その辺はわかるかと。 global_registerについては、業務でやっているのでしたら、OFFでできるようになったほうがいいです。 時代はOFFがあたりまえになっており、ONにするサーバはかなり減っていますし、今後はOFFばかりでしょう。
補足
改善できました! ご回答有難う御座いました!
>現在、FedoraCore2でPHPなどは全てapt-getを用いてインストールしています。 >この状態でおっしゃられています「php.ini」はどこのディレクトリに格納されているかお分かりになられますでしょうか? FedoraCore2は使っていませんが、phpfino();の出力に Configuration File (php.ini) Path があるので、それを見れば実動作環境におけるphp.iniが どこにあるかわかります。 >前者で出来るようにしたいのですが・・・。 (ergister_globals=on) その設定は、onでも細心の注意を払えば安全なスクリプトを記述出来ますが、お奨めしません。 スクリプトの保守性等も含めて考える場合、外部から取り込んだ変数を探す場合、$_POST['hoge', $_GET['hoge']と記述しておけば、後でソースを読む際に一目瞭然です。 参考とされている資料にある「$aで取得できる」を「$_POST['a']で取得できる」と読みかえたほうがよろしいかと。
補足
改善できました! ご回答有難う御座いました!
- chupark
- ベストアンサー率41% (90/218)
PHPのバージョンが分かりませんが、最近のバージョンのものであると仮定して回答します。 PHPにおいて、HTTPから送られてきた値を取得するにはご質問にも書かれている、$_GETや$_POSTを用いる必要があります。 それを$aなどの任意の変数へ取得したければ、 $a = $_POST["a"]; などのように$_POST["a"]を通じて$aへ渡します。 >あるサイトには・・・GETやPOSTなどで飛ばしたデータを「$a」などという形で取得できると説明していますが これはどちらのサイトなのかわかりませんが、上記のような方法で取得する方法が解説されているのではないでしょうか?
補足
ご回答有難う御座います。 まず、このサイトをご覧ください。 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k07.htm ここでは、$_POST["a"];という方法ではなくフォーム情報を使っています・・・。 これはどういう処理なのでしょうか? 私の書籍にはご回答の内容にもありますような例が載っていました。 上記サイトだけではなく複数のサイトでこの方法が紹介されているのです・・・。 困ったものです・・・。お助けください。
補足
ご回答有難う御座います。 ・・・なるほどそういうことなのですね。 有難う御座いました。 現在、FedoraCore2でPHPなどは全てapt-getを用いてインストールしています。 この状態でおっしゃられています「php.ini」はどこのディレクトリに格納されているかお分かりになられますでしょうか? これまでずっとWin系でしたので検索方法なども手探りの状況で・・・。 あと少し、、、お付き合いくださいませ。 お手数をお掛けいたしますが宜しくお願い申し上げます。