如何在php和ajax中处理会话

时间:2013-04-03 10:23:24

标签: php ajax forms login session-cookies

我是stockoverflow.com的新手,因为我正在寻找答案的一段时间,我想,我在这里提出我的问题。 基数如下:

的index.php:

<body>
<div id=”login”> This <div> is hidden
<div>my Login form</div>
</div>

<ul>
<li>menu item</li>
<li>menu item </li>
<li>…</li>
<li><a href=”#” class=”login”>login</a></li>

</ul>

rest of my code……

</body>

以这种方式调用login-form: function.js

$('#login').hide();
$('.login').click(function() {
$('#login').show();
document.body.style.overflow = "hidden"; 
});

当我点击提交时,我可以使用以下代码登录:

login.js     $(document).ready(function(){

$("#message").hide();

$("#submit").click(function(){
$("#message").hide('normal');

$.ajax({
type: "POST",
url: 'login.php',
data: $("#main form").serialize(),

success: function(data)
{
if (data === 'true') {

$(".login").fadeOut(500);
$('.login).html("<div class='loader'></div>")
.hide()
.fadeIn(2500, function() {
$('.login).load('administrator/test.php');
})

}
else {
$('#message').slideDown('slow');
}
}
});
return false;
});

});

和php代码: 的login.php

try {
$stmt = $db->prepare('SELECT * FROM table WHERE email = :email AND passenc = :pass' );
$stmt->execute(array(email => $email, 'pass' => $pass));

$count = $stmt->rowCount();

if ($count > 0) {
echo 'true';
$_SESSION['email'] = $email;

} else {
echo "false";
}

}

直到这里一切正常,我可以登录并获得管理页面。也许有人建议如何做得更好。

但我的问题是:

如果我然后关闭加载或单击F5我的index.php页面重新加载。没有什么不妥,但这里开始我的问题。

如果我再次单击“登录”,则会在创建会话时显示登录表单而不是受保护页面。如何在创建会话时完成此操作并单击登录按钮,页面重定向到受保护页面,如果会话已过期,则会加载登录表单?

1 个答案:

答案 0 :(得分:0)

如果您想要检查用户,如果已登录然后重定向,请将此代码放在login.php的第一行

session_start();
$url = "your private page";
if ( isset($_SESSION['email']) )
{
   header("Location :$url");
   die();
}