php - 未传输 session 变量

标签 php mysql session variables authentication

我正在学习 PHP(作为一种爱好),我想构建一个简单的登录页面来练习。

我有一个表格:

<form action="phpAction/checklogin.php" method="POST">
<p>Username:</p>
<input type="text" name="username">
<p>Password:</p>
<input type="password" name="password">
<br><br>
<input type="submit" value="Submit">
<br><br>
<a href="signup.php">You don't have an account yet?</a>
</form>

发布到 php 代码:

<?php

// Starts a MySQLi connection to the database
include "../includes/mysqliConn.php";

// Starts a session to keep the user logged in
session_start();

// Posts the username and password from the form and stores it into a session variable

if (isset($_POST["username"]) && isset($_POST["password"])) {
  $_SESSION["username"] = $_POST["username"];
  $_SESSION["password"] = $_POST["password"];
} else {
    die("You cannot be here!");
}
// Checks login
$checklogin = 'SELECT * FROM users WHERE username = $_SESSION["username"] AND password = $_SESSION["password"]';
$result = $conn->query($checklogin);
                if ($result->num_rows = 0){
                    echo "<script language='javascript' type='text/javascript'>alert('Login and/or password wrong!');window.location.href='login.php';</script>";
                    die();
                } else {
                    // Variable to other pages see that the user is logged in
                    $_SESSION["islogged"] = "true";
                    // Redirects to the homepage
                    header("Location: ../index.php");
                }

?>

它将 session 变量“islogged”设置为true,以便其他页面可以显示用户信息。

在网站的标题中我有这个:

<?php

      if ($_SESSION["islogged"] == "true") {
          echo "<a href='#'>Panel</a>";
          echo "<a href='#'>Logout</a>";
      } else {
         echo "<a href='login.php'>Login</a>";
         echo "<a href='#'> / </a>";
         echo "<a href='signup.php'>Sign Up</a>"; 
      }

?>

当变量“islogged”设置为“true”时,页面应该显示链接 Panel 和 Logout,而不是 Login 和 Signup。但我一直在登录和注册。 似乎 session 变量没有被“传输”。

感谢任何形式的帮助。

PS:抱歉英语不好:P

谢谢

最佳答案

据我所知,除数字外的任何内容都必须包含在 ' ' 中。试试这个

 $checklogin = "SELECT * FROM users WHERE username ='".$_SESSION['username']."' AND password ='".$_SESSION['password']."'";

我希望这能奏效。

关于php - 未传输 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36677834/

相关文章:

php - Codeigniter MySQL 查询

session - session 数据属于 Wicket 中的哪里?

php - Codeigniter处理错误的最佳方法,实际上不是验证错误

php - UNSET 不适用于 Zend Session

php - 以编程方式从 MySQL 中选择数据

php - MySQL查询的问题

php - 使用 WordPress 高级自定义字段时 'url' 的非法字符串偏移

mysql - 在mysql中创建一个复杂的变量

MySQL - 抱歉发生了意外错误

mysql - 嵌套查询性能