【问题标题】:Insert HTML data into mysql database将 HTML 数据插入 mysql 数据库
【发布时间】:2021-08-09 23:51:51
【问题描述】:

我创建了一个允许用户输入用户名和密码的 HTML 页面。当用户单击登录按钮时,我需要将用户名和密码放入 mysql 数据库中。

当我通过输入网站的 IP 地址并输入用户名和密码并按下登录按钮来测试它时,它只是进入一个空白页面(这是 IPADDRESS/adduser.php。当我检查数据库时,没有输入任何内容.

我还想将用户重定向到不同的页面而不是空白页面

我对此很陌生,但似乎碰壁了,想知道是否有人可以提供帮助。谢谢。

HTML 文件:

<!DOCTYPE html>
<html>
<style>

/* Header/Title */
.header {
padding: 2px;
text-align: center;
background: rgb(49, 48, 48);
color: white;
font-size: 15px;
}

form {

    border: 5px solid #f1f1f1;
    background-color: white;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    text-align: center;      
}

input[type=text],
input[type=password] {
    width: 40%;
  
    padding: 12px 20px;
    margin: 8px 0;
    display:block;
    border: 1px solid #ccc;
    box-sizing: border-box;              
}   
body{
background-color: rgb(180, 46, 46);
}

button {
    background-color: #265ec5;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    cursor: pointer;
    width: 10%;
}

button:hover {
    opacity: 0.8;
}

.imgcontainer {
    padding: 20px;
    text-align: center;     
}

.container {
    padding: 16px;    
}

span.psw {
    float: center;
    padding-top: 16px;
}

</style>

<body>

<div class="header">
    <h2>
        <img src="vs/banner.png"> 
    </h2>

  </div>

    <form action="adduser.php" method="POST">       
    <div class="imgcontainer">
        <img src=
         "LINK TO IMAGE" width="250" height = "70"
            alt="Avatar" class="avatar">
    </div>
    <h2 style="text-align:center;" > Sign In  </h2>
   
    <div class="container">
     
        <label><b> Username</b></label>
        <input type="text" name="user_name" required placeholder="enter valid username"
        oninvalid="this.setCustomValidity('Enter a valid email address')"
        oninput="this.setCustomValidity('')"
        
        />
     
        <label><b>Enter password</b></label>
        <input type="password" placeholder="Enter Password" name="user_password" required place>
     
        <button type="submit">Login</button>
        
    </div>

    <div class="container" style="background-color:#f1f1f1">
        
        <span class="psw">Forgot <a href="#">password?</a></span>
        <p></p>
        <span class="usn_info">You must login using with valid username</span>
    </div>
  </form>

  </body>

 </html>

php 文件:

<?php

$host= 'localhost';
$user = 'root';
$pass = 'admin';
$database = 'logins';
$table='user_login';

$conn = mysqli_connect($host, $user, $pass, $database);


if ($conn) {
die("Database connection failed: Insert User : Error = " . 
mysqli_error());
}

$user_name=$_POST["user_name"];
$user_password=$_POST["user_password"];

$sqlquery = "INSERT INTO user_login (user_name, user_password)
VALUES ('$user_name','$user_password')";

if (mysqli_query($conn, $sqlquery))
{
    echo "user added";
}

mysqli_close($conn);

?> 

【问题讨论】:

  • 除非连接失败,否则您不会输出任何内容,这可能就是您得到白页的原因
  • 但是当我检查时,数据库中没有存储任何内容?
  • 您正在插入 db 用户名,但未定义 $psw。而且您只是在创建查询字符串,实际上并没有插入它。
  • 抛开 SQL 注入问题不谈,VALUES 使用的变量名称与 $_POST 分配的变量名称不匹配。
  • 顺便说一下(与您的问题无关,但仍然很重要),您在这里有两个问题:第一个问题是在VALUES() 中,您输入了未定义的变量(注意变量需要是$user_name$user_password)。第二件事,阅读“准备好的语句”以防止 SQL 注入。并阅读有关散列密码的信息。它可以帮助你。关于您的问题,我已经发布了答案,希望对您有所帮助

标签: php html mysql database


【解决方案1】:

警告:不要在生产中使用此代码,请阅读有关 SQL 注入和清理帖子值的信息。

您的 PHP 变量名称到处都是。一秒钟,您将 $username 声明为数据库登录名,但在插入语句中,您还插入了 $username,这会将用户名“admin”插入数据库。请注意这一点。

对于初学者,表单标签中的“action=”决定了您的用户在提交表单后将重定向到的位置。在您的情况下,adduser.php。因此,请确保任何处理表单提交的 PHP 代码都在 adduser.php 中。

adduser.php

<?php

$hostname= "localhost";
$username = "admin"
$password = "admin";
$db = "logins";

$dbconnect=mysqli_connect($hostname,$username,$password,$db);

if ($dbconnect->connect_error) {
die("Database connection failed: " . $dbconnect->connect_error);
}

if(isset($_POST['submit'])) {
$user_name=$_POST['username'];
$user_password=$_POST['psw'];

$query = "INSERT INTO user_login (user_name, user_password)
VALUES ('$user_name', '$user_password')";

if ($dbconnect->query($query) === TRUE) {
echo "New record created successfully";
}

$conn->close();

}
?>

如果一切正确,在提交表单后,您将被重定向到 adduser.php,并且此消息将回显:“新记录创建成功”。

【讨论】:

  • 这段代码易受sql注入
  • 是的。这是用于学习的代码,而不是用于生产用途的代码。他必须从某个地方开始,你知道的。
  • 我知道sql注入,它只是为了学习练习尝试获取数据进入数据库。我被重定向到页面,但没有回显
  • 答案必须是安全的,所以如果有人要复制它,他就有麻烦了,当你纠正代码错误时,请纠正它
  • @McCloud54 什么都不会在你的 php 文件中回显,因为你没有写 echo... 更具体一点,在这里写下你想让 php 文件做什么
【解决方案2】:

在你的 php 文件中,将数据插入数据库后,编写以下两条命令:

header("www.the-page-you-want-to-go-to.com");
exit();

【讨论】:

  • @McCloud54,您谈到了“重定向到不同的页面”。据我了解,您希望在插入数据库后转到另一个页面。这就是解决方案。告诉我你想做什么,我将能够提供更多帮助(而不是投反对票......)
猜你喜欢
  • 2019-01-12
  • 1970-01-01
  • 2023-04-10
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多