login.phpファイルがあります:
<?php
session_start();
include('db.php');
if(isset($_POST['email']) && !empty($_POST['email']) AND isset($_POST['password']) && !empty($_POST['password'])){
$email = mysql_escape_string($_POST['email']);
$password = mysql_escape_string($_POST['password']);
$search = mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$password."' AND active='1'") or die(mysql_error());
$match = mysql_num_rows($search);
if($match > 0){
$row = mysql_fetch_assoc($search);
$user=$row['forename'].' '.$row['surname'];
$_SESSION['username']=$user;
//$msg = 'Login Complete! Thanks, '.$user.'!';
header( 'Location: page1.php' ) ;
die;
}else{
$msg = 'Login Failed!<br /> Please make sure that you enter the correct details and that you have activated your account.';
}
}
?>
ここで、page1.phpをロードすると、問題が発生します。ファイルにはこれが含まれています...
<?php
session_start();
include('db.php');
if(isset($_SESSION['username'])){
echo 'Success, '.$_SESSION['username'].'!';
}else{
echo 'No dice!';
//header( 'Location: login.php' ) ;
}
?>
ユーザー名が保存されていない場合は、ログインにリダイレクトするのが理想的です。もしあれば、彼らに見せたいです。しかし、「サイコロなし!」と表示されます。毎回、データを正しく取得(または保存)していないようです。私は何が間違っているのですか?
明確にするためにelse
、index.phpのセッションデータセットを参照している必要があるため、が起動するべきではありません。リダイレクトは問題ではありません。
問題は、奇妙な設定をした私のホストに固有のものでした。彼らに連絡すると、彼らは私が設定するために使用しなければならなかった正しいパス情報を私に提供してくれましたsession_save_path
。これに基づいて正解を授与しました。