Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP注销系统不工作。(MAMP上的会话_销毁)_Php_Session_Mamp_Logout - Fatal编程技术网

PHP注销系统不工作。(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

我最近把我的网站从XAMPP转到了MAMP。问题是我的注销系统不再工作。注销小部件:

<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消息。这是更好的描述吗?