プロが教える店舗&オフィスのセキュリティ対策術

http://oshiete1.goo.ne.jp/qa2708238.html
の問題を,何とかセッションで解決できないかと思っています.入門書を見ながら,
上記URLに示した元質問のサンプルの session_start(); の下に,

if(!session_is_registered("Name")){
session_register("Name");
}
if(!session_is_registered("reg")){
session_register("reg");
}

という6行を挿入し,

リダイレクト先である next.php 内に
echo $_SESSION["Name"]; とか
echo $_SESSION["reg"]; とか書いたら,

それぞれのValueを渡すことができているのですが,
この使い方であってますでしょうか?
もし,他に注意点があったらお願いします.

A 回答 (1件)

動作としては問題ないとの事ですが、


PHP Manual(下記参照)によると、あまり良くないようです。

また、$Nameではなく、$_SESSION["Name"]と書くのであれば、
session_register("Name");
は必要ありません。
経験上、内部変数と混同しないためにも
$_SESSION[]と書くほうが良いと思いますし、そうでなければ、
$sessNameのようにプレフィックスを付けた方がわかりやすいと思いますよ。

以下「PHP Manual」から引用です。
register_globalsを 考慮することなくスクリプトを書きたい場合には、
$_SESSION配列を 代わりに使用する必要があります。
$_SESSIONのエントリーは自動的に登録されます。
スクリプトでsession_register()を 使用している場合には、
それは register_globalsを 不可としている環境下では動作しません。

$HTTP_SESSION_VARS(または$_SESSION)を 使用する場合、
session_register(), session_is_registered(),
session_unregister()を使用しないでください。
    • good
    • 1
この回答へのお礼

tdshさん,ご教示ありがとうございました.
マニュアルまで引用いただき恐縮です.

>session_register("Name");
>は必要ありません。

というご指導で,早速やめてみましたが
確かにまったく動作に問題ありませんでした・・・


もうしばらくテストを続けようと思います.

ありがとうございました.

お礼日時:2007/02/01 22:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!