PHPでのsession_start()はPHPファイルの先頭に書く!


今日はTwitterつぶやきPHPを作成していましたが、PHPのセッションで詰まりました。。。
「session_start();をphpの先頭に書く」のはわかっていましたが、、、。
このn時間を返してくれ~(泣)

スポンサーリンク

これはphpの先頭じゃない

最初にこんな感じのPHPファイルを書いていたわけです。

<html>
<head>
</head>
<body>
<?php
    session_start();
    $_SESSION['hoge'] = "ほげほげ。";
?>
    <a href="http://hogehoge.jp/next.php">次のページ</a>
</body>
</html>

最初はこれで大丈夫なものと思っていました。"session_start();"を"<?php"の直後に書いているわけですから。しかし、現実はそう甘くはありませんでした。

phpファイルの本当の先頭に書く

<?php
session_start();
?>
<html>
<head>
</head>
<body>
<?php
    $_SESSION['hoge'] = "ほげほげ。";
?>
    <a href="http://hogehoge.jp/next.php">次のページ</a>
</body>
</html>

こう書かなければ、「セッションIDは他のページでも不変なのに、データだけは取り出せない!」という事態になります。正しくセッション変数に代入できていなかったということでしょうか…。ただ、同一ページからセッション変数を読み込んだときに、正しく表示されてしまっていたので、余計混乱しました。

スポンサーリンク

最後に

他のサイト様では"<?php"の直後に書くということは言われていましたが、PHPファイルの本当の先頭に書かなければならないということはわかりませんでした。

このサイトを見て、時間を無駄にする人がいなくなることを願います。。。

また、近日中にTwitterつぶやきBOTを作成して公開したい(できれば制作過程も少し)と思っていますので、興味のある方はお楽しみに。

last

フォローする