我正在创建一个标题会显示“登录”的系统。如果用户未登录,如果用户登录,则会显示注销。我现在简化了它,只是显示用户是否登录。使用"登录!"意思是他们需要登录,并且欢迎!"如果他们已登录。我使用了PHP Code Checker网站(https://phpcodechecker.com/),它无法找到任何错误。我还搜索了stackoverflow,其他人似乎都在工作。
<?php
ob_start();
session_start();
require_once 'dbconnect.php';
if( !isset($_SESSION['user']) ) {
echo "Login!";
} else {
echo "Welcome!";
}
?>
是检查用户是否已登录的代码。
我的登录页面适用于其他所有内容,因为我的主页显示用户已登录,但无论如何这里都是代码。 (这只是PHP代码,提交按钮有HTML,等等。)
<?php
ob_start();
session_start();
require_once 'dbconnect.php';
// it will never let you open index(login) page if session is set
if ( isset($_SESSION['user'])!="" ) {
header("Location: index.php");
exit;
}
$error = false;
if( isset($_POST['btn-login']) ) {
// prevent sql injections/ clear user invalid inputs
$email = trim($_POST['email']);
$email = strip_tags($email);
$email = htmlspecialchars($email);
$name = trim($_POST['name']);
$name = strip_tags($name);
$name = htmlspecialchars($name);
$pass = trim($_POST['pass']);
$pass = strip_tags($pass);
$pass = htmlspecialchars($pass);
// prevent sql injections / clear user invalid inputs
if(empty($name)){
$error = true;
$nameError = "Please enter your username.";
}
if(empty($pass)){
$error = true;
$passError = "Please enter your password.";
}
// if there's no error, continue to login
if (!$error) {
$password = hash('sha256', $pass); // password hashing using SHA256
$res=mysql_query("SELECT userId, userEmail, userPass FROM users WHERE
userName='$name'");
$row=mysql_fetch_array($res);
$count = mysql_num_rows($res); // if email/pass correct it returns must be
1 row
if( $count == 1 && $row['userPass']==$password ) {
$_SESSION['user'] = $row['userId'];
header("Location: dashboard.php");
} else {
$errMSG = "Incorrect Credentials, Try again...";
}
}
}
?>
它连接数据库很好,我确定数据库没有问题,因为它适用于我的其他页面。
我花了很长时间试图解决这个问题,但不能。
谢谢!
答案 0 :(得分:0)
在您的代码中
if ( isset($_SESSION['user'])!="" ) {
你正在比较真假|假!=“”
将其更改为if (isset($_SESSION['user'])) {
要么
if (isset($_SESSION['user']) && ($_SESSION['user']!="")) {