2011-05-03 74 views
0

我想要一个按钮在我的网站上读取重置,当点击会话重新设置?有任何想法吗?我的意思是重新设置只是清除会话,所以我想要一个html按钮,点击时只是清除会话。PHP会话重置按钮

+0

重置意味着什么? (保持会话进行,清除会话,...?) – 2011-05-03 18:26:49

回答

1

此按钮将提交表单的PHP脚本,这是否:

session_start(); 
session_destroy(); 

// Typically, after doing this you will redirect the user 
// to the home page with something like: 
header('Location: index.php'); 

这一切就是这么简单。

不要被“提交表单”部分混淆 - 您不需要需要除了按钮之外的任何形式。

+0

或者只是'session_start(); $ _SESSION = array()'。 – 2011-05-03 18:29:04

+0

但是这实际上并没有*重置*会话,它只会破坏当前会话? – 2011-05-03 18:30:41

+0

@MarcB,@Crayon:销毁会话后,习惯上按照PRG模式重定向用户。当新页面加载时,会话将不再存在,因此不需要显式取消设置变量等。 – Jon 2011-05-03 18:33:18

1

简单的方法(这几乎是100%安全的): 使用JavaScript来删除的cookie(大部分时间PHPSESSID的)

位更复杂的方式(这是更为安全的): 使用PHP来取消设置$ _SESSION(所以用户不能再对PHPSESSID做任何事情,以防止劫持),然后取消设置或重新生成$ _COOKIE ['PHPSESSID'](或session_regenerate_id)。

1

创建一个包含两件事情的一种形式: 1)包含当前URL 2)一个按钮,按下时,将用户定向到扫清第二会话

页隐藏变种页面中,清除会话,然后使用表单中的$ _POST信息将用户重定向到它们所在的页面。

摧毁会议:

session_start(); // if it's not already started. 
session_unset(); 
session_destroy(); 
1

这是从PHP手册session_destroy:

<?php 
// Initialize the session. 
// If you are using session_name("something"), don't forget it now! 
session_start(); 

// Unset all of the session variables. 
$_SESSION = array(); 

// If it's desired to kill the session, also delete the session cookie. 
// Note: This will destroy the session, and not just the session data! 
if (ini_get("session.use_cookies")) { 
    $params = session_get_cookie_params(); 
    setcookie(session_name(), '', time() - 42000, 
     $params["path"], $params["domain"], 
     $params["secure"], $params["httponly"] 
    ); 
} 

// Finally, destroy the session. 
session_destroy(); 
?> 

这第一重置所有会话数据(所以以后不能在相同的使用页面加载),然后删除会话cookie并最终销毁会从磁盘擦除数据文件的会话。