私は過去3時間問題に悩まされており、PHPセッションに関して私を精神的に駆り立てています。Ivはsession_is_registeredから$_SESSIONに移動しましたが、機能したくありません。
以下のコードを参照してください(ログインで保護したいページの最上部にあるすべてのファイルにあります):
<?php
session_start();
if(!isset($_SESSION['user']))
header("location: login.php");
?>
別のページaccess.phpに、2つの入力ボックスと送信ボタンを備えたフォームがあり、入力を確認してdbと相互参照します。間違った値を入力すると、正しい「無効なログイン」というメッセージが表示されます。しかし、正しい詳細を入力すると、login.phpページに戻ってログインを要求します。
私はセッションを保存し、次のように詳細を確認しています。
<?php
session_start();
include("dbfile.php");
$sql = mysql_query("SELECT id FROM myTable WHERE user=$username AND pass=$pass");
if(mysql_num_rows($sql)==1){
$_SESSION['user'] = "Test";
header("location: account.php");
}else{
header("location: login.php");
}
?>
残念ながら、register_globalsがオフになっている共有サーバーを使用していますが、それが問題かどうかはわかりません。セッションの出力を他のページにエコーすると、何も得られません。セッションの登録/保存すらしないように。
ブラウザでcookies/jsを有効にしています。実際、私は4つのブラウザーでテストしましたが、同じ結果になりました。誰がこれで命の恩人になるのか。