PHP - 会话闪存消息未在重定向上继承

时间:2014-01-15 03:24:08

标签: php session redirect

我已经进行了搜索,到目前为止,我在这个网站上看到的答案都没有回答我的问题 - 如果有人能指出我的副本,我会很高兴回答:)

话虽如此,我相信问题相对简单。

我是用PHP自定义构建CMS系统(和一些MySQL,但这不是必需的)。我为大学课程做了类似的事情并且遇到了同样的问题 - 教授认为它很“好”,因为他没有时间研究决议。

我想要做的就是通过会话变量将Flash消息设置为用户登录的索引。闪存在同一页面上运行良好,但在重定向时,阵列中没有任何内容。在我的“类似的类项目”中,完全相同的代码在某些页面之间工作正常,但在其他页面之间没有 - 所以我知道它能够随着重定向移动 - 它只是简单地拒绝。

编辑:应该注意的是,在同一段代码中设置的任何其他会话变量都会在重定向上传输 - 只是不'闪存'。我已经更新了以下代码以反映。我还根据建议在我的letmein.php文件中添加了session_start(),但如果只是一个已经声明了session_start()的页面引用的库文件,有人可以确认这个必要性吗?

这是我的所有代码:

key.php

<?php
session_start();

$title = "STH Liquidations";
$description = "Product wholesale";
$keywords = "wholesale, product, pallets";

require "scripts/letmein.php";

include "parts/_head.php";
include "parts/header.php";
?>

    <div id="key">

        <form id="pass" method="post" action="key.php">

            <label for="password">Key: </label>
            <input type="password" name="password" id="password" />
            <br />
            <br />
            <input type="submit" name="submit" value="Let Me In!" class="unlock">

        </form>


    </div>

<?php
include "parts/footer.php";
?>

脚本/ letmein.php

<?php
session_start();

$result = false;
$ip = $_SERVER['REMOTE_ADDR'];

if (isset($_POST['submit']))
{
    if ($_POST['password'] == "password removed")
    {
        $result = true;
        $_SESSION['logged_in'] = 1;

        $_SESSION['flash'] = "You have been logged in. IP Address: ".$ip;
        header("Location: index.php");
    }
    else
    {
        $_SESSION['flash'] = "Log In Failed. Please try again...";
    }
}



?>

的index.php

<?php
session_start();

$title = "STH Liquidations";
$description = "Product wholesale";
$keywords = "wholesale, product, pallets";

include "parts/_head.php";
include "parts/header.php";
include "parts/nav.php";

print_r($_SESSION);
?>

        <div id="content">

            <div class="about">
                This is where information "about us" will go.
            </div>


            content goes here



        </div>

<?php
include "parts/footer.php";
?>

份/ header.php文件

<!-- =============== -->
<!--       BODY      -->
<!-- =============== -->
<body>


<div id="header">

    <!-- TITLE -->
    <div class="headerwindow">
        <h1><?php echo $title ?></h1>
    </div>




</div>

<!-- FLASH MESSAGES -->
<?php

if (isset($_SESSION['flash']))
{
    echo "<div class='flash'>" . $_SESSION['flash'] ."</div>";
    unset($_SESSION['flash']);
}
?>


    <!-- CONTENT TO WRAP 2 COL STYLE -->
    <div id="main">

输出PRINT_R:数组([logged_in] =&gt; 1)

0 个答案:

没有答案