- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 PHP 创建一个登录表单。我正在传递用户输入的用户名和密码,并检查数据库中存在的天气。
我已经完成了编码,但是 IF EXIST 查询没有返回任何结果。
谁能帮我解决这个问题。或者给我一个替代的想法..谢谢...
<?php
$name= $_POST["usname"];
$pass = $_POST ["password"];
$connection = mysqli_connect("localhost","sathya","sathya","learning1");
//mysqli_query($connection,"INSERT INTO user (name, password) VALUES ('".$name."', '".$pass."')");
$result = mysqli_query($connection, "IF EXISTS(SELECT * FROM user WHERE name='".$name."'AND password='".$pass."')");
mysqli_close($connection);
echo "result ".$result;
if($result == True){
header("Location: logedin.php");
//redirect_to('logedin.php');
}else{
echo "not logged in installed";
}
?>
最佳答案
这是一个迟到的答案,但您需要注意一些事项。 (不脱离已接受的答案)。
您将需要使用 if(mysqli_num_rows($result) > 0)
,因为如果用户名匹配而密码不匹配,您的查询将始终为 TRUE,反之亦然。
你最好使用 mysqli_num_rows()
而不是使用 if($result == True)
旁注:请参阅我关于密码存储和 SQL 注入(inject)的脚注。
<?php
$DB_HOST = "xxx";
$DB_NAME = "xxx";
$DB_PASS = "xxx";
$DB_USER = "xxx";
$db = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($db->connect_errno > 0) {
die('Connection failed [' . $db->connect_error . ']');
}
$name = $_POST["usname"]; // See footnotes about this
$pass = $_POST ["password"]; // See footnotes about this
$result = mysqli_query($db, "SELECT EXISTS(SELECT * FROM users WHERE username='".$name."' AND password='".$pass."')");
// Works just as well
// $result = mysqli_query($db, "SELECT * FROM users WHERE username='".$name."' AND password='".$pass."'");
if(mysqli_num_rows($result) > 0){
echo "Both match.";
}
else{
echo "Sorry, there was not a perfect match.";
}
脚注:
您还可以使用:
$result = mysqli_query($db, "SELECT * FROM users WHERE username='".$name."' AND password='".$pass."'");
它对 SELECT EXISTS(SELECT *
使用更少的字符执行相同的操作。
或选择实际列:
$result = mysqli_query($db, "SELECT username, password FROM users WHERE username='".$name."' AND password='".$pass."'");
我建议您使用准备好的语句并清理您的输入。不这样做会让你敞开心扉 SQL injection .
这里有一些关于 (mysqli) 准备好的语句的教程,您可以学习和尝试:
这里有一些关于 PDO 的教程:
密码
我还注意到您以明文形式存储密码。不建议这样做。
使用以下之一:
crypt()
bcrypt()
scrypt()
password_hash()
功能。其他链接:
关于php - Mysql查询IFEXIST不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23265566/
打开 h2 数据库控制台后出现错误。我输入数据库名称,但显示未找到数据库错误: Database "C:/Users/Barlekar/onlineshoppings" not found, and
我有以下代码来启动 H2 守护程序并使用 Hikari 连接到它: // Start H2 daemon server = Server.createTcpServer("-tcpDaemon").s
我有一个基本的 spring boot 应用程序,它有 4 个微服务。 Discovery Service , Api Gateway Service (Zuul) , UsersMicroservi
我是一名优秀的程序员,十分优秀!