2013-04-03 31 views
0

我是stockoverflow.com的相當新的,因爲我正在尋找一段時間的答案,我想,我把我的問題放在這裏。 底座看起來是這樣的:如何在php和ajax中處理會話

的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> 

登錄形式被稱爲這種方式: 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頁面重新加載。沒有什麼問題,但這裏開始我的問題。

如果我然後再次單擊登錄,則會話創建時會顯示登錄表單而不是受保護的頁面。如何在創建會話時完成該操作,並單擊登錄按鈕將頁面重定向到受保護頁面,如果會話已過期,登錄表單將被加載?

回答

0

如果要檢查用戶是否已經登錄然後重定向,把這段代碼在login.php

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