9

此代码有效吗?

<a href="#" onclick="<?php session_destroy();?>">Logout</a>
4

7 回答 7

17

创建一个名为 logout.php 的页面

注销.php_ _ ___

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

?>

您的页面_ _ ____

<a href="Logout.php">Logout</a>
于 2013-07-10T07:33:26.383 回答
16

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

要在单击时破坏会话,您应该编写

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

在注销.php

session_destroy();
于 2013-07-10T07:32:59.970 回答
7

错误代码。您可以使用以下代码:

<?php if($_GET['logout']==1) session_destroy(); ?>
<a href="?logout=1">Logout</a>
于 2013-07-10T07:32:54.267 回答
4

该代码将在单击链接之前破坏会话,您应该这样做:

HTML页面:

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

会话销毁.php:

<?=session_start(); session_destroy(); ?>
于 2013-07-10T07:33:58.670 回答
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

         ?>
于 2013-07-10T07:37:20.043 回答
2

不,从客户端调用服务器端函数是不合逻辑的,onClick是在客户端发生事件,所以它不能调用,session_destroy()因为它是服务器端(PHP 函数),在客户端不可用

于 2013-07-10T07:31:12.407 回答
2

有可能做到这一点。如果您专注于使用 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

于 2013-07-10T07:48:54.843 回答