我在通过ajax和jQuery检索PHP SESSION详细信息时遇到了一个混乱的情况。
让我解释整个情况。
我的fetch.php
[获取并发送会话详情]:
header('Content-Type: application/json');
session_name('admin');
session_set_cookie_params(2*7*24*60*60);
session_start();
echo json_encode(array(
'session'=>$_SESSION,
'session'=>array(
'user'=>$_SESSION['user'],
'email'=>$_SESSION['email'],
'rememberMe'=>$_SESSION['rememberMe']
),
));
exit(0);
用于获取详细信息的jQuery代码:
$.ajax({
url: "fetch.php",
type: "get",
dataType: 'json',
cache: false,
success: function(data){
user = data.session.user;
email = data.session.email;
rememberMe = data.session.rememberMe;
}
});
获取后,我正在尝试根据会话详细信息添加/删除某些内容:
if(user != null && user != undefined && user != "undefined"){
//if 'user' is not 'null/undefined', it means that he is logged in, so add something
}else{
//remove the added item
}
主要PHP:
header('Content-Type: application/json');
session_name('admin');
session_set_cookie_params(2*7*24*60*60);
session_start();
if($_SESSION['user'] && !isset($_COOKIE['remember']) && !$_SESSION['rememberMe']){
$_SESSION = array();
session_destroy();
}
//......
if($_REQUEST['Login']){
// ....
$_SESSION['user']=$name;
$_SESSION['email']=$email;
if(isset($_POST['rememberMe'])){
$_SESSION['rememberMe'] = $_POST['rememberMe'];
setcookie('remember',$_POST['rememberMe']);
}else{
setcookie('oneTime','1');
}
// ....
}
//.......
if($_REQUEST['Logout']){
$_SESSION = array();
session_destroy();
$admin['msg'] = "Logout successful";
}
现在,主要的问题是,这段代码表现得神秘/不可预测...... 出于测试目的,我添加
alert(user);
就在我的ajax代码之后。
所以,当我加载页面时,它会提醒undefined
,这很好。
但是当我成功登录{例如,使用“try”user}登录时,它会警告null
而不是用户名,并将动态元素添加到html。这意味着,完全忽略了if
条件。
当我在没有注销的情况下刷新页面时,它会警告undefined
并且不会删除动态添加的元素。
当我退出用户时,它会提醒真实用户名{“try”}并删除动态添加的元素[再次忽略if
条件]。
这是我的jQ“登录”代码:
$.ajax({
url: $frm.attr('action')+'?'+name+'=true',
type: $frm.attr('method'),
data: serial,
success: function(response){
//.....
}
});
有人可以告诉我,我做错了......
抱歉打字错误或语法错误。
更新:
我main.js
的一些代码:
var handler = {
init: function(){
$.ajax({
url: "fetch.php",
type: "get",
dataType: 'json',
cache: false,
success: function(data){
user = data.session.user;
email = data.session.email;
rememberMe = data.session.rememberMe;
}
});
alert(user); // echoing the value of user
if(user != null && user != undefined && user != "undefined"){
//....... dynamically add the element is user is logged-in
}else{
//...... remove the dynamically added element
}
handler.submit();
},
submit: function(){
$('html').on('click','.submit',function(e){
var $frm = $(this).parents('form');
var serial = $frm.serialize();
var name = $(this).attr('name');
$.ajax({
url: $frm.attr('action')+'?'+name+'=true',
type: $frm.attr('method'),
data: serial,
success: function(response){
//....... on success : some code
}
});
setTimeout(function(){handler.init();},5000);
e.preventDefault();
});
}
};
$(document).ready(handler.init);