PHP数据库语法错误
您好,我是php编程新手,尝试创建加密密码,但问题是它总是为不同的密码生成相同的md5,我无法使用login.php登录。这是我的代码PHP数据库语法错误,php,Php,您好,我是php编程新手,尝试创建加密密码,但问题是它总是为不同的密码生成相同的md5,我无法使用login.php登录。这是我的代码 <?php $name = $_POST['name']; $password = md5($_POST['password']); if($name && $password){ mysql_connect("localhost","root","") or die(mysql_error); mysql_selec
<?php
$name = $_POST['name'];
$password = md5($_POST['password']);
if($name && $password){
mysql_connect("localhost","root","") or die(mysql_error);
mysql_select_db("myfirstdatabase") or die(mysql_error);
$query = mysql_query("SELECT * FROM usernames WHERE name='$name'");
$numrows = mysql_num_rows($query);
if ($numrows != 0){
while ($row = mysql_fetch_assoc($query)){
$dbname = $row['name'];
$dbpassword = $row['password'];
}
if ($name==$dbname){
if($password==$dbpassword){
header("location: users.php");
}else {
echo "Your password is incorrect!";
}
}else{
echo "Your name is incorrect!";
}
}else {
echo "Name is not registered!";
}
}else{
echo "You have to type a name and password";
}
?>
你必须像下面这样做:-
建议:-
1.不要使用mysql.*
(从php5.5开始不推荐使用,从php7中删除)。使用mysqli.*
或PDO
2.使用密码hasing机制,而不是md5
3.使用mysqli
或PDO
的prepared
语句,使用md5
unsalted to“hash”密码,使用mysql.*
函数,防止您的代码SQL注入。。。这是什么,2005年?很抱歉,我对编程很陌生,我从我得到的资料中学习。你的资料不好。你应该找一个最近的。对于初学者,使用和执行密码。不md5
。那东西好几年都不安全了。好吧,谢谢你,现在我知道它为什么不工作了。我将尝试查找最近的源代码。密码只是一个问题-正如我最初提到的,mysql.*
函数已过时且易受攻击。在上面的代码中,我可以提交我的名字为”或sleep(100000);--
并多次提交,以方便DoS或使服务器崩溃。您应该使用和准备好查询。这是一个学习曲线,但你会更安全。
<?php
error_reporting(E_ALL); // check all errors
ini_set('display_errors',1);// show all errors
if(isset($_POST['name']) && isset($_POST['password'])){
$conn = mysqli_connect("localhost","root","","myfirstdatabase");
if($conn){
$name = mysqli_real_escape_string($conn,$_POST['name']);
$password = mysqli_real_escape_string($conn,md5($_POST['password']));
$query = mysqli_query($conn,"SELECT * FROM usernames WHERE name= $name AND password = $password");
if(mysqli_num_row($query)>0){
header("location: users.php");
}else {
echo "user name or password is incorrect!";
}
}else{
echo "deb connection error:-".mysqli_connect_error();
}
}else{
echo "Please fill form fully";
}
?>