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编程新手,尝试创建加密密码,但问题是它总是为不同的密码生成相同的md5,我无法使用login.php登录。这是我的代码

<?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";
}
?>