2012-01-28 96 views
1

我创建一个PHP登录页面,并在其中使用会话...检查我设置的会话会话不破坏

session_register("myusername"); 
session_register("mypassword"); 
header("location:login_success.php"); 

的情况后,并在login_succes.php我的代码为

<? 
session_start(); 
if(!session_is_registered(myusername)){ 
header("location:main_login.php"); 
} 
?> 
<html> 
<body> 
<h2><?php session_start(); echo $_SESSION['myusername']; ?> 
Welcome to hell</a> 
</body> 
</html> 

logout.php代码

<? 
session_start(); 
session_destroy(); 
?> 

问题我面对我s登录第二次我在输出中获得第一个用户名本身。

+0

'session_register'在2000之前是如此的...... – knittl 2012-01-28 13:44:59

+2

您是否检查过第二个请求是否只是一个缓存响应? – Gumbo 2012-01-28 13:45:52

+0

@knittl有什么可以解决这个问题? – sarsarahman 2012-01-28 13:47:51

回答

1

用下面的一个摧毁一个会话:

$_SESSION = array(); 
unset($_SESSION); 

相反的session_is_registered,使用标准的$ _SESSION超级全局。像:

if(isset($_SESSION['myusername']))... 

要注册一个会话变量使用:

$_SESSION['myusername'] = $myusername; 

此外,PHP版本,环境,可以帮助我们找到答案。

+0

为避免警告,您应该使用'isset'或'array_key_exists'。 – Gumbo 2012-01-28 13:57:08

+0

你应该使用'if(isset($ _ SESSION ['myusername']))'。 – kba 2012-01-28 13:57:19

+0

php 5.3.9和im使用apache – sarsarahman 2012-01-28 13:57:38