遇到session_start()

时间:2017-11-30 22:32:11

标签: php html

我有一个登录页面,主页和导航页面,我都包含在这两个页面中。如果会话变量admin是1,导航会显示一个管理选项卡。出于某种原因,当我将session_start放在我的主页上时,即使有人没有登录,它也会显示admin选项卡。登录页面工作正常。如果您尚未登录,则不会显示管理员标签,但是当您登录时,它会显示。如果我将session_start放在登录页面的顶部而不是if语句中,则它与我的主页具有相同的问题。我将session_start放在主页的错误位置吗?我无法弄清楚它为什么会这样做。如果有人有一些意见,那将会有很大的帮助。

这是我登录页面的一部分:

<?php
if ($_POST['password'] == $row['password']) { // set session variables and display
    session_start();
    $_SESSION["fname"] = $row['fname'];
    $_SESSION["lname"] = $row['lname'];
    $_SESSION["email"] = $row['email'];
    $_SESSION["password"] = $row['password'];
    $_SESSION["admin"] = $row['admin'];
}  else {
    $error= "Password is incorrect";
}// end the if that checks for 1 success
} else {
    $error= "Email not found"; 
}
} //end of overall if
?>

这是我的导航页面:

<ul>
    <li><a href="index.php">Home</a></li>
    <li class="dropdown">
        <a href="#" class="dropbtn">Products</a>
        <div class="dropdown-content">
            <a href="playstation.php">Playstation 4</a>
            <a href="xbox.php">Xbox One</a>
            <a href="switch.php">Nintendo Switch</a>
            <a href="disc.html">Disc Cleaning</a>
        </div>
    </li>
    <li class="dropdown">
        <a href="#" class="dropbtn">Members</a>
        <div class="dropdown-content">
            <a href="addCustomer.php">Create Account</a>
            <a href="editCustomer.php">Edit Account</a>
            <a href="login.php">Login</a>
        </div>
    </li>
    <li><a href="aboutUs.html">About Us</a></li>
    <li class="dropdown">
        <a href="#" class="dropbtn">Contact Us</a>
        <div class="dropdown-content">
            <a href="contact.html">Contact</a>
            <a href="feedback.html">Give Feedback</a>
            <a href="feedback.txt">Read Feedback</a>
        </div>
        <?php
            if($_SESSION["admin"] == 1) {
                echo "<li class='dropdown'>";
                echo "<a href='#' class='dropbtn'>Manage</a>";
                echo "<div class='dropdown-content'>";
                echo  "<a href='addProduct.php'>Add Product</a>";
                echo  "<a href='editProduct.php'>Edit Product</a>";
                echo "</div>";
                echo "</li>";
            }
        ?>
    </li>
</ul>

这是我主页的一部分:

<?php session_start(): ?>
<body onload="startRotation()">
    <div id="wrapper">
        <header>
        </header>

        <nav>  
            <?php include "nav.php"; ?>
        </nav>
    </div>
</body>

1 个答案:

答案 0 :(得分:-2)

1.keep session_start()是您代码中的第一件事。 2.它应该在您传递会话数据的每个页面中。 3。session_start:应在您的主页上session_start();