A.phpからPOSTで受け取ったデータをB.phpでセッション変数に格納しているのですが、
B.phpで、
$_POST[’name’]に”123”と入っていて、
$name=”はてな”;
$_SESSION[’name’]=$_POST[’name’];
echo $name;
とすると”123”と出力されてしまうのですが、何故でしょうか。セッション変数には”123”を入れて、出力は”はてな”としたいのです。
PHP: extract - Manual
何もしていなければそんなことは無いはずなのですが、もしかして、
$name=”はてな”;
と
echo $name;
の間でextractしてませんか?
その付近の実際のソースがわかると助かるのですが。。。
http://jp2.php.net/import_request_variables
PHP: import_request_variables - Manual
見当違いでしたらごめんなさい。
import_request_variables()
をしていないでしょうか。
回答ありがとうございます。
いえ、していません。
B.phpで使用している関数は、
header
session_cache_limiter
session_start
function
trim
str_replace
mb_convert_kana
stripslashes
htmlspecialchars
ereg
exit
echo
mysql_connect
die
mysql_select_db
mysql_query
mysql_fetch_assoc
以上なのですが、この中に何か問題になりそうなものはありますでしょうか。
--追加--
$_SESSION[’name’]=$_POST[’name’];
の位置が原因かと考えて変えてみたのですが、
$name=”はてな”;
より前で実行すれば大丈夫でした。でもこれでは不便ですしなんとかしたいです。
php.iniの「register_globals」と「variables_order 」の設定はどうなっていますか?
register_globalsがOnですと、こういうおかしなことが起こるかません。
回答ありがとうございます。
register_globalsがOnでした…!
早速.htaccessでOffに上書きしてやったら、きちんと動作しました。
ありがとうございました!!
回答ありがとうございます。
いえ、特に何もやっていないと思うのですが…。
でも、
$name=”はてな”;
と
$_SESSION[’name’]=$_POST[’name’];
はHTML表示の前にあるブロックでやっていて、
echo $name;
はHTML中の表示したい部分にとしているのです。これは原因になりますでしょうか。