我正在使用jQuery $ .post AJAX请求登录用户,并在ajax.php中设置$ _SESSION ['login']变量(在index.php中调用session_start())以及其他登录的东西,但是当我尝试在其他页面上引用$ _SESSION ['login']变量时,它没有被设置...
这是我的POST代码
$.post('/assets/ajax/ajaxLogin.php',{username: $('[name=username]').val()
,password: $('[name=password]').val()},function(data){
if(data.success)
{
location.href=data.redirect;
}
else
{
$('#errorConsole').html(data.message).slideDown();
}
},'json');
在ajaxLogin.php中我设置$ _SESSION ['login'] =“1”。所以ajax脚本会记录用户是否有正确的信息,但是当他们被重定向到dashboard.php时,我会尝试回显$ _SESSION ['login']并收到错误,
我没有正确设置$ _SESSION,还是ajax请求不会全局设置变量?
这是ajaxLogin.php
<?php
if(!include('../../config.php')){
echo 'include failure';
}
if($_POST){
$myusername=$_POST['username'];
$mypassword=$_POST['password'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM users WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
if($count==1)
{
$_SESSION['login'] = 1;
$data['success'] = true;
$data['redirect'] = '/dashboard.php';
}
else
{
$data['success'] = false;
$data['message'] = "Your info is wrong....";
}
echo json_encode($data);
}
?>
这里也是dashboard.php
<?php
include('includes.php');
?>
<?php
if(!isLoggedIn())
{
echo 'You are not logged in';
}
else
{
echo 'You are logged in';
}
?>
和isLoggedIn()是:
function isLoggedIn(){
if (isset($_SESSION['login'])){
return 1;
}
else
{
return 0;
}
}
答案 0 :(得分:1)
您需要在每个使用会话的页面上(在您使用会话之前)调用session_start()
。这包括AJAX请求中使用的每个文件以及dashboard.php文件。
注意:不适用于include
/ require
附带的文件。
答案 1 :(得分:0)
如何在客户端保存会话?
如果您使用的是Cookie,请仔细检查以确保浏览器在下次请求时发送Cookie。如果是,你的会话代码有问题,我们需要看你的PHP。如果不是,请检查PHP错误日志,了解有关无法保存会话的信息。
如果您使用的是URL查询字符串,请确保在请求之间传递它们。