【发布时间】:2013-07-08 00:54:22
【问题描述】:
此代码有效吗?
<a href="#" onclick="<?php session_destroy();?>">Logout</a>
【问题讨论】:
标签: php session onclick session-cookies destroy
此代码有效吗?
<a href="#" onclick="<?php session_destroy();?>">Logout</a>
【问题讨论】:
标签: php session onclick session-cookies destroy
不,从客户端调用服务器端函数是不合逻辑的,onClick 是客户端发生的事件,所以它不能调用session_destroy()因为它不是服务器端(PHP 函数)客户端可用
【讨论】:
代码错误。您可以使用此代码:
<?php if($_GET['logout']==1) session_destroy(); ?>
<a href="?logout=1">Logout</a>
【讨论】:
不,它不是一个有效的代码。它将在加载 php 页面时破坏会话。
为了在点击时破坏会话,你应该写
<a href="logout.php" >Logout</a>
在logout.php中
session_destroy();
【讨论】:
创建一个名为 logout.php 的页面
Logout.php_____
<?php
Session_start();
Session_destroy();
header('Location: ' . $_SERVER['HTTP_REFERER']);
?>
您的页面______
<a href="Logout.php">Logout</a>
【讨论】:
该代码在单击链接之前已经破坏了会话,您应该这样做:
HTML 页面:
<a href="sessiondestroy.php">Logout</a>
Sessiondestroy.php:
<?=session_start(); session_destroy(); ?>
【讨论】:
不,它无效...onclick 是客户端事件。你可以这样做。
<a href="logout.php">logout</a>
并创建一个名为 logout.php 的文件并包含 session_destroy();声明
<?php
session_destroy();
//do other things... like redirect to a deafault/login page
?>
【讨论】:
这样做是可能的。如果您专注于使用 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
【讨论】: