【发布时间】:2013-06-04 12:26:59
【问题描述】:
我有一个简单的注册表单,新来者将使用 ajax 函数进行注册。注册完成后,我在那里创建一个$_SESSION['is_logged']。
在 var_dumb 上,我知道 var 已设置。但是当在另一个页面上重定向时它是空的(我已经在两个页面上都包含了 session_start() ......
我在网上某处读到:
“会话仅在页面加载/刷新时写入”。
是这样吗,还是得在我的代码中寻找一些其他的问题。
ajax:
$.ajax({
url:"../controllers/register.php",
type:"POST",
data:res,
success: function(responce){
if (responce==1) {
$('#msg').addClass('msg-warning');
$("#form").css('display',"none");
$('#msg').append("<p>It seems that you have already submited the form. Click to "+
" <a href='login.php'>log-in</a> or to <a href='register.php'>register</a>.</p>");
}
else if (responce==2) {
$('#msg').addClass('msg-warning');
$("#form").css('display',"none");
$('#msg').append("<p>You have successfully created account. Click to "+
" <a href='start.php'>welcome</a> to start your .</p>");
$('.menu').append("<li><a href='logout.php'>Log out</a></li>")
}
else{
$('#msg').text(responce);
}
},
error: function(){
$('#msg').text("Opss, try again");
}
});
register.php 文件:
if (isset($_SESSION['submited'])) {
echo 1;
exit;
}
include_once('../models/functions.php');
// Give the post parametters to another var
$arr=$_POST;
// function for uploading
$reg = registerMe($arr);
if ($reg === true) {
$_SESSION['submited']=1;
$_SESSION['is_logged']=1
echo(2);
}
else{
echo($reg);
}
exit;
session_start(); 包含在从 ajax 开始的第一页的标题中。第二页 - $_SESSION['is_logged'] 丢失了,再次是 session_start();是dc_header(); 函数的一部分。开始.php:
<?php
dc_header("Речник|Регистрация");
if (!isset($_SESSION['is_logged'])) {
#header("location: ../views/login.php");
var_dump($_SESSION);
}
?>
【问题讨论】:
-
请贴出ajax代码
-
逻辑上它应该可以工作。在您设置值的位置以及您要检查和重定向的位置发布代码。
-
是在不同子域上的重定向页面,然后是您在 ajax 调用中使用的页面? www.url.com 和 url.com 被浏览器视为不同的子域,因此每个会话都不同。
-
将
start.php的代码发布到您在会话中检查is_logged的位置。 -
var_dump($_SESSION);的输出是什么?