2013-03-27 4 views
1

Я интегрирую страницу входа (фиксированное имя пользователя и пароль).php cache vs cookie

Как только пользователь входит в систему, он перенаправляется на другую страницу 'x' (на моем сервере).

Однако, когда пользователь закрывает браузер (или вкладку) и открывает его, он автоматически направляется на страницу «x» без необходимости запрашивать имя пользователя и передавать его.

Однако, если я удалю файлы cookie из настроек браузера (firefox), все вернется к нормальному состоянию. Удаление кеша ничего не делает.

Я знаю, что мне нужно вставить пару строк кода для удаления в файл cookie. Мои вопросы are,

  1. это 100% проблема с печеньем? или мне нужно также предотвратить хранение в локальном кеше?
  2. Профилактика печенья происходит на каком уровне? Во время входа или перенаправления?
  3. Как только я перенаправлен на страницу 'x', делает ли кнопка выхода из системы, выходим из сеанса, который перенаправлен?

ниже мой код.

<?php 
session_start(); 
if(isset($_POST['username'])){ 
if(($_POST['username'] == "user") && ($_POST['password'] == "pass")) 
{ 
    $_SESSION['secured'] = "Secured"; 
}else{ 
    echo "Wrong username and password. <p> 
    <a href='?'retry</a>"; 
} 
} 

if(!isset($_SESSION['secured'])) 
{  
echo "<form method='post'> 
Username: <input type='text' name='username' maxlength='10' /><br> 
Password: <input type='password' name='password' maxlength='10' /><br> 
<input type='submit' value='login' /> 
</form>"; 
}else{ 
?> 

<html> 
<head> 
<title>Session Login</title> 
</head> 
<body> 
<p>redirecting.... 
<meta HTTP-EQUIV="REFRESH" content="1; url=http://x.php"> 
</p> 
</body> 
</html> 

<?php 
} 
?> 
+0

вы хранящие печенье ('SetCookie()') где-нибудь? – Luceos

+0

@ Luceos no. Я использую тот же код, что и выше. – tony9099

+0

Какой браузер вы используете, и происходит ли это поведение «продолжить» при закрытии вкладки браузера И? – Luceos

ответ

1

Если вы можете создать страницу logout.php, которая уничтожит сессию:

unset($_SESSION['secured']); 
header('Location: login.php'); 
exit; 

Просто посетите эту страницу и Логин будет уничтожен.

Если вы хотите, чтобы сеанс был тайм-аутом по истечении заданного периода времени, вы можете использовать что-то похожее на код, показанный in this example.

Если Вы желаете, чтобы убить сессию после того, как пользователь приземлился на x.php

<?php 
session_start(); 

//First make sure that they're allowed access to x.php 
if(!isset($_SESSION['secured'])){ 
    //They shouldn't be here. 
    header('Location: login.php'); //Redirect back to your login page 
    exit; 
} 

//Ok, user is obviously logged in. Unset the session variable so that they can only view this page once (unless they login again) 
unset($_SESSION['secured']); 

//Show content of x.php 
+0

wayne, я предпочитаю его больше, если я могу просто закончить сеанс после перенаправления. как это возможно? – tony9099

+0

Я отредактировал свой ответ. –

+0

wayne, unset ($ _ SESSION ['secure']); Имеет ли это. Благодарю. – tony9099