网站会话的 PHP isset 函数无法正常工作

所以我正在尝试实现网站登录,我希望它更改顶部的菜单栏。但是,使用 php 会话时我没有得到预期的结果


我一开始就使用session_start


<?php

session_start();

?>

然后为了更改我使用的菜单栏


<?php

    if (!isset($_SESSION['username'])){

 ?>

<ul>

    <li><a href="Index.php">Home</a></li>

    <li><a href="About.php">About</a></li>

    <li><a onclick="document.getElementById('log').style.display='block'" style="width:auto;">Log In</a> </li>

</ul>

<?php

    }else if (isset($_SESSION['username'])){

?>

<ul>

    <li><a href="Index.php">Home</a></li>

    <li><a href="About.php">About</a></li>

    <li><a href="#logout">PLEASE LOG OUT</a></li>

</ul>

<?php

    }

?>

我的模式框和日志脚本如下


<div id="log" class="modal">

    <form class="modal-content animate" action="logindata.php" method="post">

        <div class="container">

            <label for="uname"><b>Username</b></label>

            <input type="text" placeholder="Enter Username" name="usrname" required>

            <label for="psw"><b>Password</b></label>

            <input type="password" placeholder="Enter Password" name="psw" required>

            <button type="submit">Login</button>

        </div>

        <div class="container">

            <button type="button" onclick="document.getElementById('id01').style.display='none'" class="cancelbtn">Cancel</button>

        </div>

    </form>

</div>

<script>

    // Get the modal

    var modal = document.getElementById('log');

    // When the user clicks anywhere outside of the modal, close it

    window.onclick = function(event) {

        if (event.target == modal) {

            modal.style.display = "none";

        }

    }

</script>

我的logindata.php包含以下内容


<?php

$servername = "localhost";

$username = "root";

$password = "";

$dbname = "phpmysql";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {

    die("Connection failed: " . $conn->connect_error);

}

$user1 = $email1 = $pass1 = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  $user1 = test_input($_POST["usrname"]);

  $pass1 = test_input($_POST["psw"]);

}  

我知道通过明文发送密码不是一个好策略。


慕姐4208626
浏览 40回答 1
1回答

FFIVE

session_start 需要位于代码的第一行...我看到您在另一页上有这个,但是,这个仍然是错误的;)否则,在 isset 之前执行: print_r($_SESSION);<?phpsession_start();&nbsp;$servername = "localhost";$username = "root";$password = "";$dbname = "phpmysql";$conn = new mysqli($servername, $username, $password, $dbname);if ($conn->connect_error) {&nbsp; &nbsp; die("Connection failed: " . $conn->connect_error);}$user1 = $email1 = $pass1 = "";if ($_SERVER["REQUEST_METHOD"] == "POST") {&nbsp; $user1 = test_input($_POST["usrname"]);&nbsp; $pass1 = test_input($_POST["psw"]);}&nbsp;&nbsp;function test_input($data) {&nbsp; $data = trim($data);&nbsp; $data = stripslashes($data);&nbsp; $data = htmlspecialchars($data);&nbsp; return $data;}$sql = "SELECT username, password, email FROM users";$result = $conn->query($sql);$row = $result->fetch_array();if ($row["username"]==$user1 && $row["password"]==$pass1) {&nbsp; &nbsp; &nbsp;$_SESSION["username"] = $row["username"];//$_SESSION["email"] = $row["email"];header("Location: Main_login_authentication.php");&nbsp;} else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;header("Location: Denied.php");&nbsp;}$conn->close();?>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5