PHP - 创建注销链接
Posted
技术标签:
【中文标题】PHP - 创建注销链接【英文标题】:PHP - Create Logout Link 【发布时间】:2012-02-15 14:13:47 【问题描述】:创建注销链接的最佳方式是什么?我想销毁所有会话并重定向回登录页面,但我不确定执行此操作的最佳方法。现在我有指向 admin/logout.php 的链接,但我觉得向用户显示我的文件夹结构是一件坏事。这是我的代码,非常简单:
session_start();
session_destroy();
echo "<script type=\"text/javascript\">window.location.href='../login.php';</script>";
那么最好用 javascript 或 ajax 做一些事情吗?
【问题讨论】:
既然可以header("Location: login.php")
,为什么还要通过JS重定向?
看看这个:***.com/questions/2241769/…
@MarcB 前段时间我问了一个问题,说 javascript 重定向是最好的选择,我打算链接它,但后来它得到了一堆关于它有多糟糕的问题,所以我可能应该去返回并更改 xD
【参考方案1】:
如果您担心暴露目录结构,请不要使用目录。只需让您的所有页面检查 logout
查询参数:
<?php
if (isset($_GET['logout']))
session_start();
session_destroy();
header("Location: login.php");
exit();
这样您就可以从任何页面注销,您的“管理”文件夹永远不会暴露,并且执行 header() 重定向意味着用户没有机会中断您可以使用的任何其他重定向方法(元标记, javascript等...)。页面上根本没有任何内容供用户查看,因为您没有输出任何内容。
【讨论】:
是的,javascript 重定向是问题所在。出于某种原因,它暴露了我的目录结构,但是当我更改为 header() 时 - 已修复。我也喜欢$_GET[]
的想法,而不是为了注销而制作一个全新的文件。【参考方案2】:
注销.php:
<?php
session_start();
session_destroy();
?>
<html>
<head>
<meta HTTP-EQUIV="REFRESH" content="0; url=login.php">
</head>
</html>
这需要是一个单独的 .php 页面。只需链接到它,他们不会看到这个,而是会看到 index.php 的内容,但没有存储会话数据:)
这可能是解决此问题的最佳和最简单的方法。全部使用简单的 PHP,带有 HTML 重定向。
【讨论】:
看到这就是我的想法...我的admin/logout.php
看起来像我的问题中链接的代码(在 php 标签内),没有 HTML。但是 URL 仍然转到 /admin/logout.php。我认为我的问题最终是 javascript 重定向,因为当我使用 header()
时它不会这样做以上是关于PHP - 创建注销链接的主要内容,如果未能解决你的问题,请参考以下文章