使用HTML和PHP检查登录详细信息

时间:2019-07-24 15:52:42

标签: php mysql

使用注册数据库检查用户给定的凭据。如果电子邮件已经存在,则该程序应仅显示“成功搜索”,并且不应在数据库中附加电子邮件,而应在数据库中附加新电子邮件。

经历了一些示例并尝试了代码。我正在本地系统上运行Xampp。

HTML表单代码:

<html>

   <head>
      <title>PHP Form Validation</title>
   </head>

   <body>


      <h2>Registration</h2>

      <form method = "post" action = "main.php">
         <table>
            <tr>
               <td>Name:</td> 
               <td><input type = "text" name = "name"></td>
            </tr>

            <tr>
               <td>E-mail:</td>
               <td><input type = "text" name = "email"></td>
            </tr>

            <tr>
               <td>Password:</td>
               <td><input type = "password" name = "password1"></td>
            </tr>

            <tr>
               <td>
                  <input type = "submit" name = "submit" value = "Register"> 
               </td>
            </tr>
         </table>
      </form>



   </body>
</html>

PHP文件代码(从action =“ main.php”调用:

<?php

$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="test"; // Database name 
$tbl_name="login_details"; // Table name 
$sql = "";
$email =($_REQUEST["email"]);

$name =$_REQUEST["name"];
$password1=$_REQUEST["password1"];
$sql="";
$sql2="";
$result="";
$result2="";

echo $name ."<br>";
echo $email ."<br>";
echo $password1 ."<br>";

// Connect to server and select databse.
$con = mysqli_connect("$host", "$username", "$password")or die("cannot connect"); 
mysqli_select_db($con, "$db_name")or die("cannot select DB");


$sql=" SELECT * FROM $tbl_name WHERE Email = '$email'";
echo $sql ."<br>";
$result = mysqli_query($con, $sql);

if(mysqli_num_rows ($result))
    echo "Successful Search"

if($result == FALSE) {
    echo "Unsuccessful search <br>";
    $sql2 = "INSERT INTO $tbl_name 
                        (Name, Email, Password) 
                VALUES ('$name','$email','$password1')";
    global $result2;
    $result2 = mysqli_query($con,$sql2);

    if($result2) {
        echo "Successful insertion";
    } 
    else 
        echo "Unsuccessful insertion";
} 

mysqli_close($con);
?>

对于数据库中已经存在的电子邮件,代码应显示“搜索失败”,然后显示“插入成功”,但是即使数据库中不存在用户以HTML格式输入的电子邮件,我仍会不断获得“搜索成功”

解决方案:非常感谢@ Shim-Sao提供的通过以下方法检查结果的解决方案: $ rowcount = mysqli_num_rows($ result);

如果($ rowcount)     回显“成功搜索”;

真的为我节省了一天。

其他人非常感谢您的建议。另外,请允许我仔细研究一下主要问题,而不是肤浅的问题,这些问题是格式化代码或在mysqli_connect()中使用或不使用“”来提高代码的效率。那是匆忙准备的代码,我在努力寻找错误的根本原因可能是@@ Shim-Sao指出的。

当然也应该研究SQL注入。

干杯!

0 个答案:

没有答案