$ _SESSION ['ageAccept']已设置,但被忽略?

时间:2014-04-03 08:05:38

标签: php login session-variables verify

我准备拔头发了。我以前做过这个,它仍然在那个页面上工作/工作。这不是一个困难的概念,但由于某种原因,我得到了奇怪的结果。我的意思是,当我点击“我18岁以上的按钮”时,它确实将我带到了home.php页面。如果我刷新home.php,它会将我带回index.php。如果我点击news.php,它会将我带回index.php。 home.php加载后的几乎所有动作都会将我带回index.php。我不知道为什么。

我想要一个简单的年龄检查页面(index.php),要求用户点击“我18岁以上”按钮或“我不是18”按钮,这会将它们重定向到Google。

我刚刚开始构建网站,所以我只有2页可用(Home.php,News.php),下面是我在页面顶部的PHP代码。 (请注意我搜索了这个网站很多,我找到的解决方案都没有。如果问题得到了回答而我错过了,我很抱歉,相信我,如果我能读完答案的话。 )

index.php:

<?php

session_start();

if (isset($_SESSION['ageAccept'])) {
    header('Location: home.php');
    exit;
}

if(!empty($_POST)) {

    if(isset($_POST['ageAccept'])) {
        $_SESSION['ageAccept'] = true;
        header('Location: home.php');
        exit;
    } else { header('Location: http://www.google.com'); }
}

?>

home.php&amp; news.php:

<?php

session_start();

if (!isset($_SESSION['ageAccept'])) {
    header('Location: index.php');
    exit;
}
?>
在index.php页面上的

我使用的是一个简单的表单:

<form action="" method="post">
<input type="submit" value="I am 18+ (ENTER)" class="enter" name="ageAccept">
<input type="submit" value="NOT 18+ (Leave)" class="enter" name="ageFail">
</form>

2 个答案:

答案 0 :(得分:1)

你的代码看起来很好,所以我建议做一些调试。问题是php.ini的问题。首先将以下代码放在session_start()

echo session_id();

检查所有页面上的ID是否相同。如果它不在php.ini中,您应该检查session.cookie_domain的值。这通常是空白的。

同时检查session.save_pathphp.ini的值,看看这是否正确。

最后你有一个.htaccess文件吗?在那里重写规则可能搞乱会话。

答案 1 :(得分:0)

非常感谢所有帮助我解决这个问题的人!我实际上发现了我的错误,这是一个相当棘手的问题。在注释掉HTML标记时,如果该标记包含PHP代码,那么这些代码将不会被HTML标记注释掉!例如:

<!-- <h1><?php echo $title ?></h1>-->

虽然代码将变为灰色(如果您的编辑器支持该功能),PHP代码实际上是实时的!我还没有测试是否将//放在PHP代码前面会对它们进行注释,但是将它删除只是更简单。 :P

再次感谢大家的帮助,我实际上从问到这个问题时学到了不同的东西,所以所有评论都非常感谢!