gpt4 book ai didi

php - 我如何验证这个 php 表单?

转载 作者:行者123 更新时间:2023-11-29 08:05:52 24 4
gpt4 key购买 nike

我有一个简单的 html 表单,如下所示

<form action="insert.php" method="post">
Name: <input type="text" name="name"><br>
Password: <input type="text" name="pw"><br>
<input type="submit" value="log in">
</form>

我需要做的是对照我创建的简单数据库中的值检查以此表单提交的值。数据库的名称是 userdb,在其中我创建了一个名为“users”的简单表,其中有两列,分别称为名称和密码。

我能够使用

正确连接到数据库
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

现在我很困惑(可能是最重要的一点)我必须根据数据库中的某些值验证表单。

我在 phpmyadmin 中创建了一个名称和密码条目,名称='eric',密码='123456'。

我只是不确定如何使用表单进行检查?

是这样的吗?

$sql = "INSERT INTO `userdb`.`users` (`name`, `password`) VALUES ($name, $pw);";

$name$pw 是我从表单名称属性中获取的值。

它告诉我我有 undefined variable ,但显然我在这里弄错了。

有什么帮助吗?

*此处编辑的是完整代码:

index.php

<html> 
<head>
<style>
#main
{
width: 700px;
margin-left: auto;
margin-right: auto;

}
</style>
</head>
<body>
<div id="main">


<?php
$name = "";
$pw = "";
?>

<form action="insert.php" method="post">
Name: <input type="text" name="name"><br>
Password: <input type="text" name="pw"><br>
<input type="submit" value="log in">
</form>



</div>

</body>
</html>

插入.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<?php

$con=mysqli_connect("localhost","userdb","","");

// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

else
{
echo "you are connnected";
}



$sql = "INSERT INTO `userdb`.`users` (`name`, `password`) VALUES ($name, $pw);";
?>

</body>
</html>

最佳答案

您的 POST 变量位于错误的文件中。将它们从 index.php 中取出并放入 insert.php 中,如下所示:

您还以纯文本形式存储密码,但不建议这样做。使用 PHP 的 password_hash()如果您的 PHP 版本是 5.5,则可以使用该函数。否则,请使用crypt()bcrypt()

旁注:有一个密码兼容包available here对于 password_* 函数。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<?php

$con=mysqli_connect("localhost","userdb","","");
$name=$_POST['name']; // <-- right there
$pw = $_POST['pw']; // <-- right there

// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

else
{
echo "you are connnected";
}



$sql = "INSERT INTO `userdb`.`users` (`name`, `password`) VALUES ('$name', '$pw')";
?>

</body>
</html>

如果您想检查插入是否成功,请执行以下操作:

$sql = "INSERT INTO `userdb`.`users` (`name`, `password`) VALUES ('$name', '$pw')";

if (mysqli_query($con,$sql))
{
echo "Database updated successfully";
}
else
{
echo "Error: " . mysqli_error($con);
}

脚注:

为了增加安全性,请更改:

$name=$_POST['name']; // <-- right there
$pw = $_POST['pw']; // <-- right there

至:

$name=mysqli_real_escape_string($con,$_POST['name']);
$pw = mysqli_real_escape_string($con,$_POST['pw']);
<小时/>

登录方法:(旁注:如果可能,请使用顶部显示的密码存储方法)。

如果您想将其用作登录方法,您可以使用以下内容:

$con = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) 
OR die("could not connect");

$user = mysqli_real_escape_string($con,$_POST['name']);
$pass = mysqli_real_escape_string($con,$_POST['pw']);

$query = "SELECT * FROM your_table WHERE name='$user' AND password='$pass'";
$result = mysqli_query($con,$query);


$row = mysqli_fetch_array($result);
if($row["name"]==$user && $row["password"]==$pass){
echo "You are a validated user.";
}

else{
die("Sorry.");
}

关于php - 我如何验证这个 php 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22752526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com