PHP注销系统不工作。(MAMP上的会话_销毁)
我最近把我的网站从XAMPP转到了MAMP。问题是我的注销系统不再工作。注销小部件:PHP注销系统不工作。(MAMP上的会话_销毁),php,session,mamp,logout,Php,Session,Mamp,Logout,我最近把我的网站从XAMPP转到了MAMP。问题是我的注销系统不再工作。注销小部件: <a href="logout.php">Log Out</a> 我的注销页面本身: <?php session_start() session_destroy() header('Location:login.php'); ?> 奇怪的是,当我将某些内容更改为logout.php时,例如将其设置为一个简单的echo语句: <?php echo 'tes
<a href="logout.php">Log Out</a>
我的注销页面本身:
<?php
session_start()
session_destroy()
header('Location:login.php');
?>
奇怪的是,当我将某些内容更改为logout.php时,例如将其设置为一个简单的echo语句:
<?php
echo 'test';
//session_start()
//session_destroy()
//header('Location:login.php');
?>
我仍然没有在浏览器中看到“测试”;我只是停留在index.php,即使我已经注释掉了页面中的标题。我100%的链接路径是好的
无论我是否更改logout.php文件,我都可以看到服务器没有删除tmp/php中的会话文件。这很奇怪,因为在MacOSX中,我允许每个人都可以读写这个tmp/php文件夹
操作系统:MAC OS X服务器:MAMP中的Apache
PHP:5.4.4
浏览器:Google Chrome和Safari都出现了问题
(这是我的处女航,在stackoverflow上发布了一个问题,如果您有改进我的问题的建议,请让我知道)尝试使用以下方法:
<?
session_start();
$_SESSION = array();
header("Location: index.php");
?>
我刚刚清除了$\u会话,它对我总是有效的这些是注销的基本部分,假设您的脚本使用的是PHP会话。请注意,注销脚本会导致分析错误,因为它在语句末尾缺少分号。也许只是打字错误
<?php // RAY_EE_logout.php
session_start();
// CLEAR THE INFORMATION FROM THE $_SESSION ARRAY
$_SESSION = array();
// IF THE SESSION IS KEPT IN COOKIE, FORCE SESSION COOKIE TO EXPIRE
if (isset($_COOKIE[session_name()]))
{
$cookie_expires = time() - date('Z') - 3600;
setcookie(session_name(), '', $cookie_expires, '/');
}
// TELL PHP TO ELIMINATE THE SESSION
session_destroy();
// REDIRECT TO THE HOME PAGE
header("Location: /");
exit;
尝试使用输出缓冲区
<?php
ob_start();
session_start();
session_destroy();
header('Location:login.php');
?>
如果在包含以下代码的logout.php中调用它时没有打印test
,则存在其他问题,与会话无关
<?php
echo 'test';
//session_start()
//session_destroy()
//header('Location:login.php');
?>
您提到它仍然显示index.php,这让我觉得您在.htaccess
文件中有一个重写规则,它将logout.php调用重定向到索引。检查htaccess文件是否有任何规则
您可以在这里找到有关的信息@tom.e.degroot:上次我检查时,“它不工作”不是错误消息。你需要再描述一下症状。请按照这里的指导:给我们一些我们可以在自己的服务器上安装和测试的东西。谢谢,~Ray在我的例子中,这与php代码块的定义不正确有关。我有
而不是
希望这对某人有所帮助。如果你“停留在index.php”,你肯定不会在浏览器中看到“test”,因为你说你将logout.php改为echo“test”代码>语句。您应该改为访问logout.php。当您在url中键入manualy path_to_logout.php时,您会看到什么错误?可能是您遇到了错误,但错误报告设置为0?注意:本机php会话文件不会在会话_destroy()后立即删除。它们会按指定的时间间隔被删除,这听起来可能很愚蠢,但是会话\u start和会话\u destroy结束时缺少的逗号呢?Try:session_start();会话_destroy();谢谢你的回答。不幸的是,我无法修复它。我只有一个.htcacces文件,不在我的站点根文件夹中:选项-索引我刚刚测试了以下内容:我将菜单中的链接更改为logout1.php,并创建了一个logout1.php文件;logout.php和logout1.php都位于站点根文件夹中。在logout1.php中,我做了一个简单的echo语句:仍然没有到达这个文件。菜单中的所有其他链接都可以正常工作。在XAMPP下也没有问题。你有解决这个问题的建议吗?你说还没有达成。你看到了什么?404未找到错误或其他页面?出于某种原因,现在只显示logout1.php。因此,我看到“测试”得到了回应。如果你看我上面的评论,现在出现了两个问题:1。当我通过点击链接转到logout.php时,会话信息文件不会被破坏(我在finder中看到)。2.如果我手动输入地址,会话信息文件将在几秒钟后删除。3.如果我回到index.php,首先看起来好像我已经登录了。然后我刷新,index.php看起来好像我已经注销了。你知道解决办法吗?(感谢您迄今为止的帮助!)补充:当我将menu.php中的链接路径从logout1.php更改为logout.php时,需要退出几秒钟才能在实际页面上更新(保存更改后我会刷新)。也许这个信息对你有帮助。另外一个补充:我似乎只有在点击刷新按钮后才能得到针对注销用户的index.php,因此:1。单击logout.php的链接不会删除会话文件;手动转到那里会删除会话文件。2.然后返回index.php并单击index.php的链接,它仍然显示我已登录。如果我单击“刷新”此更改。亲爱的Ray,谢谢您的解释性评论。我是新来的,很高兴你给了我这个有用的建议。当我尝试你建议的方法时,我的浏览器出现了404错误(因此,不是CodeIgniter生成的404消息。这是更好的描述吗?