【发布时间】:2023-03-06 05:43:01
【问题描述】:
我正在尝试进行 SQL 查询,如果用户 ID 与会话的用户 ID 和表的用户 ID 匹配,它只会从表中选择数据。
我的问题是它不承认与会话关联的用户 ID 变量并返回一个空白字符串。它也对 fName、lName 和密码执行此操作,但对其他用户(包括用户名和级别)不执行此操作,它从数据库中获取这些值并显示与会话关联的正确值。为什么某些列名在我的代码中有效,而其他列名无效?
我已尝试将用户 ID 回显,但当我回显用户名时,它会显示它。
<?php
session_start();
include "connection.php";
if(!isset($_SESSION["username"])){
header("Location: login.php");
}
$userID = $_SESSION["userID"];
$sql = ("SELECT * FROM users WHERE userID = '$userID'");
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "ID: " . $row["userID"]. ";
}
}
else{
echo "No records";
}
?>
这只是我代码的一部分,我只是借用 W3Schools 的 if 语句来检查它们是否可以工作
adminPage.php
<?php
session_start();
echo $_SESSION ["level"];
if(isset($_SESSION["username"])){
if($_SESSION["level"] != "admin"){
header("Location: users.php");
}
else{
header("Location: adminPage.php");
}
}
?>
登录.php
<?php
if (!isset($_SESSION["username"])){
echo"
<p class = \"big\"> Login </p>
<hr>
<form action = \"loginInsert.php\" method = \"post\">
Username: <input type = \"text\" name = \"username\"><p>
Password: <input type = \"password\" name = \"password\"><p>
<button type = \"submit\" value = \"Submit\"/> Sign in </button>
<hr>
Not a member? <a href = \"signUp.php\"><button type = \"button\"> Sign Up </button></a>
</p>
</form>";
}
else{
header("Location: admin.php");
}
?>
loginInsert.php
<?php
session_start();
include "connection.php";
if(isset($_POST["username"])){
$username = $_POST["username"];
}
if(isset($_POST["password"])){
$password = $_POST["password"];
}
$sql = "SELECT * FROM users WHERE username = '$username' and password = '$password'";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($result);
if(mysqli_num_rows($result) == 1){
$_SESSION["username"] = $username;
$_SESSION["level"] = $row ["level"];
if ($_SESSION["level"] == "admin"){
header("Location: admin.php");
}
else{
header("Location: users.php");
}
}
else{
header("Location: login.php");
}
?>
感谢您花时间阅读我的问题
【问题讨论】:
-
您在何时何地分配
$_SESSION["username"]&$_SESSION["userID"]? -
SQL 注入,ahoy!清理您的输入。
-
那个查询应该最多能返回一行——那你为什么要使用 loop 来输出呢?
-
@JayBlanchard 我是 php 新手,我必须分配这些吗?对不起,如果这是一个愚蠢的问题
-
@CBroe 因为 userID 什么都不返回所以什么都没有输出?它转到循环中的 else 并显示“无记录”
标签: php html session mysqli phpmyadmin