• ベストアンサー

phpの変数について

fedora3,apache2.0,php4.3.11で構成しています。 参考書やサイトを見ながら学習中なのですが、初歩でつまづいています。 <html><body> <?php print $YourName; ?>さん、こんにちは。 </body></html> というa.phpと名づけたファイルにIEでアクセスしているのですが、このときに「サーバ名/a.php?YourName="kokoro"」と打てば、$YourNameという変数に"kokoro"という文字が代入されるとあるのですが、代入されません。参考書のPHPは4.0です。他の参考にしているサイトのPHPのバージョンは分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • tecinfo
  • ベストアンサー率52% (32/61)
回答No.3

参考書通りに行かないのは php.iniのregister_globalsの設定のせいかと思います。 詳しくは下のリンク参考にしてみてください。 http://d.hatena.ne.jp/keyword/register_globals orehataroさんの環境がphp4.3.11ですので、PHPのデフォルトでregister_globals=off に設定されているのですが、 参考書のバージョンはphp4.0ですので、 register_globals=on を前提に書かれているのでしょう。 解決法としては先の方のアドバイス通り $_GET,$_POST,$_REQUESTを使うか、 php.iniファイルの設定をregister_globals=onに変更して Webサーバの再起動をかければよいと思います。

orehataro
質問者

お礼

ありがとうございます。 出来ました。今はなぜ、register_globalsがoffになって いるか調べているんですが、中々説明がないですね・・検索の仕方が悪いんでしょう・・(^^;)

その他の回答 (3)

  • tecinfo
  • ベストアンサー率52% (32/61)
回答No.4

この辺の記事に事例が紹介されていますので、よかったら読んでみて下さい^^ http://ns1.php.gr.jp/pipermail/php-users/2003-November/019641.html 自分も、「ちゃんと変数を初期化すればregister_globals=onでも危険はない」と思うのですが、プログラムの汎用性を考えると(仕事でスクリプトを作成する場合や他人に配布する場合)register_globals=off を前提としたプログラムを組んでいく方が良いのかな、と思います。

orehataro
質問者

お礼

ありがとうございます。 自分しかいじらないので「on」でやってみようと思います。情報提供ありがとうございました。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

サーバ名/a.php?YourName="kokoro" ダブルクウォーテーションをつけてはダメですね。 サーバ名/a.php?YourName=kokoro で試してみてください。

orehataro
質問者

お礼

出来ました。ありがとうございました。 今からPOSTとGETの違いを調べてきます。(^^;)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

参考書全てが、正しいとは限りません たしかに、その参考書の通りの動きをする場合がありますが、その動きはセキュリティ上好ましくありませんので現在のPHPでは最初からは出来ないようにしています その代わりに $_GET[YourName] を使ってみてください ---------- <html><body> <?php print $_GET[YourName]; ?>さん、こんにちは。 </body></html> ------ 又は ------- <html><body> <?php $YourName = $_GET[YourName]; print $YourName; ?>さん、こんにちは。 </body></html> ------ です

orehataro
質問者

お礼

ありがとうございました。出来ました。 自分で環境を組んでいるのに、inu2さんのおっしゃるセキュリティが分かっていないので、勉強し直します。 ありがとうございました。(^0^)

関連するQ&A

専門家に質問してみよう