【发布时间】:2016-08-09 05:42:41
【问题描述】:
我正在学习 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");
}
?>
它将会话变量“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 链接。但我一直在登录和注册。 似乎会话变量没有被“传输”。
感谢任何形式的帮助。
PS:抱歉英语不好:P
谢谢
【问题讨论】:
-
1.您不能将任何变量 (
$_SESSION["username"]) 放在单引号内,它必须是双引号。 2.你应该看看SQL注入预防和PDO/Mysqli准备语句 -
我使用单引号,因为如果我放双引号,我会收到 500 错误
-
在其他页面中检查
$_SESSION["islogged"]之前是否调用session_start? -
@João yah
= 'SELECT * FROM users WHERE username = $_SESSION["username"]单引号不起作用...使用双引号。 -
您是否在 if 语句之前回显了 S_SESSION["username"] 只是检查它的值并让我们知道。
标签: php mysql session variables authentication