我有一个文件的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
进行设置。在此基础上获得正确答案。
$ search变量包含什么?或者它在哪里定义?在查询用户数据时包含更少的代码和平。 – ImadBakir 2013-02-27 15:28:45
这是无关紧要的。该检查仅用于查看是否已设置,而不是如果它有值。你在'login.php'中开始会话吗? – BenM 2013-02-27 15:29:47
我也在login.php中开始会话。我应该只在那里开始吗?再次开始是一件坏事? – Glenn 2013-02-27 15:32:23