スレッド表示 | フラット表示〕 全トピック 920 件中 508 番目 次≫ ≪前

$_POST,$_GET,$_SERVERの使い方

created: 2004-12-07 04:28 | modified: 2004-12-11 23:58 | reply: 5

[1964] $_POST,$_GET,$_SERVERの使い方

user: さくら | created: 2004-12-07 04:28
$c_name = $_POST["name"];
$c_title = $_POST["title"];
たいていのスクリプトは↑のように
最初の方で定義済み変数を普通の変数に代入しているのですが、
これのメリットが今ひとつわかりません。
(読み易くなる?負荷軽減?高速化?セキュリティ?)
いちいち$c_nameとかに代入せず、
単純に$_POST["name"]のまま使いまわっしゃうのは良くないのでしょうか?
reply: 1967 返信 編集 削除

[1967] 変更に強いスクリプト

user: ゆうじ | created: 2004-12-07 19:00
こんばんわ。

私もふと同じ疑問を持ったことがあります。
いろいろ考えたところ
「変更に強いスクリプトになる」
というのがその主な理由だと思います。


オブジェクト指向プログラミングの際は、
$_GET や $_POST などのリクエストを
一旦汎用的なオブジェクトに格納してから
各オブジェクトから参照することが多いようです。

これは、
スーパーグローバル変数の書式に変更・追加があった場合や
CLI版・CGI版のように環境が変わった場合でも、
リクエストを格納したオブジェクトだけを変更すれば済むからです。

手続き型のプログラミングも同じことで、
$_POST["name"]をそのまま処理の随所に埋め込んでいると
PHP4.0.6 で使うことになった場合など、(現在少ないとは思いますが)
$_POST["name"] を $HTTP_POST_VARS["name"] に
全て書き換えなければならなくなります。

スクリプトの初めに

$c_name = $_POST["name"];
こう書いておけば

$c_name = $HTTP_POST_VARS["name"];
この1行の変更で済みます。


1ファイルで完結するような
見通しの良いスクリプトを書いてる時は、
$_POSTを直接埋め込んでいても気にならないのですが、
(機能的にも問題ない)
少し時間がたって機能追加や変更をするときに
このありがたみをしみじみ感じます。
Parent: 1964  reply: 1976 1983 返信 編集 削除

[1976] スッキリしました

user: さくら | created: 2004-12-09 02:47
ゆうじさんレスありがとうございました。
なるほどメンテ性向上ということですか。
なんでわざわざ変数を増やしメモリ負荷を増やすことするのかな?
ってずっと気になっておりました。
おかげでスッキリしました。
Parent: 1967  返信 編集 削除

[1983] URLの後に入れたパラメタを読み込んでくれません

user: ベガ | created: 2004-12-09 22:26
URLの後に
http://localhost/try/zero3.php?YourName=vega
というようにパラメタを入れても、
zero3.phpの中で、$YourNameに何も入ってこないのですが、何が原因なのでしょうか?

宜しくご教示下さい。
Parent: 1967  reply: 1985 返信 編集 削除

[1985] register_globals = Off

user: ゆうじ | created: 2004-12-09 22:41
こんばんわ。

php.ini にて
register_globals = Off になってるからだと思われます。

これを On にすれば獲得できると思いますが。
以下のような理由によりオススメしません。

http://www.sound-uz.jp/php/note/registerGlobals
http://www.sound-uz.jp/php/note/securGPC

PHP4.2.x以降をご利用ならば、
外部からくる変数を参照する際には、
■スーパーグローバル変数
http://jp2.php.net/manual/ja/language.variables.predefined.php
を使ったほうが良いと思います。


$_GET['YourName']

で獲得できるでしょう。
Parent: 1983  reply: 1995 返信 編集 削除

[1995] わかりました?スーパーグローバル変数

user: ベガ | created: 2004-12-11 23:58
ゆうじさん、ご回答をありがとうございます。
register_globals = Onの件と、セキュリティ上の面からスーパーグローバル変数を使用した方が良いというお答えを理解しました。
そして、私の問題も当然解決しました。
ありがとうございました。

なお、今回の質問・・・別な方のツリー上にあげてしまいました事、お詫びいたします。
また、同様の質問が直前に別な方よりなされていた事も気付かず、申し訳ありませんでした。
Parent: 1985  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 508 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑