2013-07-10 147 views

回答

11

不,它不是一个有效的代码。它会在加载php页面时破坏会话。

有关单击销毁会话,你应该写

<a href="logout.php" >Logout</a> 

在logout.php

session_destroy(); 
+4

会话应该使用session_destroy之前启动()。 – vasc0x

2

不,它不是逻辑调用从客户端服务器端功能,onClick是一个事件在客户端发生,因此,它不能称之为session_destroy()因为它的服务器端(PHP函数),这是不在客户端可用

5

错误的代码。您可以使用此代码:

<?php if($_GET['logout']==1) session_destroy(); ?> 
<a href="?logout=1">Logout</a> 
12

建立一个叫做logout.php

Logout.php_ _页___

<?php 
Session_start(); 
Session_destroy(); 
header('Location: ' . $_SERVER['HTTP_REFERER']); 

?> 

你page_ _ ____

<a href="Logout.php">Logout</a> 
+0

这是正确的方法。在销毁它之前,应该开始会话。 – vasc0x

3

点击链接之前,该代码就已经破坏了会议,你应该这样做是这样的:

HTML页:

<a href="sessiondestroy.php">Logout</a> 

Sessiondestroy.php:

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

无其无效... onclick是一个客户端事件。你可以这样做。

 <a href="logout.php">logout</a> 

并创建一个名为logout.php文件和包括session_destroy();声明

 <?php 
      session_destroy(); 

      //do other things... like redirect to a deafault/login page 

     ?> 
1

这是可能的。如果您专注于使用onClick操作,则可以简单地使用AJAX。首先,你需要创建ajax.php,这将是这样的:

<?php 
//AJAX dynamic callback 
if(isset($_GET['action'])){ 
    if($_GET['action'] == 'logout'){ 
     //destroy the session 
     session_destroy(); 
     echo 'Logout success!'; 
     //redirect the user to a default web page using header 
     header("location:http://example.com/"); 
    } 
} 
?> 

然后你想创建一个JavaScript文件,该文件会告诉ajax.php,你想注销:

<script> 
function logout() 
{ 
var xmlhttp; 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("Logoutbutton").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","ajax.php?action=logout",true); 
xmlhttp.send(); 
} 
</script> 

不管怎么说,感谢您使用StackOverflox,并请报到它是如何去,或者如果你需要额外的帮助:)

TP

+7

我曾经有过最复杂的注销,我的意思是从未见过。 – user2067005