我有一个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
来设置。在此基础上获得了正确答案。
答案 0 :(得分:3)
重定向格式错误。你必须指定完整的URL,如下所示:
header('Location: http://your.site.com/page1.php');
die;
重定向后结束脚本非常重要。
如果未保留会话数据,则可能存在一些配置问题。验证您的php配置并检查存储会话数据的写入权限。
<?php phpinfo();?>
答案 1 :(得分:1)
我会对此发表评论,但50岁以下的代表限制意味着我不能出于某种原因。尝试
$row = mysql_fetch_assoc($search);
$user=$row['forename'].' '.$row['surname'];
echo 'User: '.$user.'<br />';
$_SESSION['username']=$user;
echo 'Session: '.$_SESSION['username'];
//header( 'Location: page1.php' ) ;
并查看是否有任何实际存储在varibles中。
编辑:试试这个
if($match > 0){
$row = mysql_fetch_assoc($search);
$user=$row['forename'].' '.$row['surname'];
$_SESSION['username']=$user;
$_SESSION['logintrue'] = true;
//$msg = 'Login Complete! Thanks, '.$user.'!';
header( 'Location: page1.php' ) ;
die;
}
session.php文件
<?php
session_start();
if(!$_SESSION['logintrue'])
{
header( 'Location: login.php' ) ;
}
$SessionUsername = $_SESSION['username'];
?>
page1.php中
<?php
require_once 'session.php';
require_once 'db.php';
echo 'I work now maybe?<br />';
echo $SessionUsername;
?>
还包括不是函数,所以把它们写成include 'db.php';
我也犯了这个错误。