用户未激活时的PHP登录验证
我开发了一个PHP登录系统,当用户登录并且管理员仍未激活帐户时,它将显示用户未激活时的PHP登录验证,php,validation,login,Php,Validation,Login,我开发了一个PHP登录系统,当用户登录并且管理员仍未激活帐户时,它将显示message2,如果用户输入错误的凭据,它将显示mesage1 我几乎完成了这项工作。但我不明白为什么这种情况总是属于message1 这是我的密码 <?php session_start(); if(isset($_POST["submit"])){ // windows // $servername = "localhost"; // $username = "
message2
,如果用户输入错误的凭据,它将显示mesage1
我几乎完成了这项工作。但我不明白为什么这种情况总是属于message1
这是我的密码
<?php
session_start();
if(isset($_POST["submit"])){
// windows
// $servername = "localhost";
// $username = "root";
// $password = "";
// $dbname = "loginDB";
// linux
$servername = "localhost";
$username = "root";
$password = "gmg0ddepfrxs";
$dbname = "loginDB";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn){
die("Connection failed: " . mysqli_connect_error());
}
$uname = $_POST["name"];
$password = $_POST["pwd"];
$sql = "SELECT * FROM user WHERE user_name='$uname' AND password='$password'";
$result = mysqli_query($conn, $sql);
while($row = mysqli_fetch_assoc($result)){
$utype = $row["user_type"]; //1
$status = $row["user_status"]; //0
$username = $row["user_name"]; //USERNAME
$password = $row["password"]; //PASSWORD NG USER
}
if (mysqli_num_rows($result) > 0 AND $utype == '1'){
// session_start();
$_SESSION["login"] = "access";
setcookie("name",$uname,false);
echo "<script>window.location.href=\"member.php\"</script>";
}elseif (mysqli_num_rows($result) <= 0) {
echo "<script>window.location.href=\"index.php?msg=1\"</script>";
}elseif ($utype == '0') {
echo "<script>window.location.href=\"index.php?msg=2\"</script>";
}
}
?>
使用简单的标题位置重定向用户:
<?php
session_start();
if(isset($_POST["submit"])){
$servername = "localhost";
$username = "root";
$password = "gmg0ddepfrxs";
$dbname = "loginDB";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn){
die("Connection failed: " . mysqli_connect_error());
}
$uname = $_POST["name"];
$password = $_POST["pwd"];
$sql = "SELECT * FROM user WHERE user_name='$uname' AND password='$password'";
$result = mysqli_query($conn, $sql);
$row = mysql_fetch_assoc($result);
$totalRows_result = mysql_num_rows($result);
if ($totalRows_result == 0) {
header("location: index.php?msg=1");}
$utype = $row["user_type"]; //1
$status = $row["user_status"]; //0
if ($utype == '1'){
$_SESSION["login"] = "access";
setcookie("name",$uname,false);
header("location: member.php");
} else {
header("location: index.php?msg=2");
}
}
?>
请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用密码\u散列()
。您需要在查询中添加错误检查,您假定它始终有效。该If()
属于while()
内部。更重要的是,$utype==“1”
但是您可能需要删除1周围的引号。这可能被解释为一个字符串,而不是一个整数。@Fred ii-嗨,谢谢你的回答。但是它仍然不起作用。对你的代码进行一些额外的编辑,让我知道它是否能更好地评论它。谢谢你的时间。但是它仍然不起作用。我刚才删除了while循环,因为您只会得到一个结果。你能再试一次吗?很遗憾,它只输出一个空白页。你能发布你的表单和用户表的结构吗?