PHP没有向数据库提交用户详细信息?

时间:2015-07-11 19:32:09

标签: php mysql

在我的网站上,我有一份注册表。用户只需输入电子邮件,密码并重新输入密码即可。

然而,即使我填写了所有字段,我仍然得到一个错误回应,说我没有填写表格。我不明白我做错了什么(相对较新的PHP)

请注意我没有尝试清理用户输入,因此我知道我的代码很容易受到SQL注入的攻击!!!

<?php
include("database.php");
include("requirements.php");

if(isset($_POST['register'])) {
$email = $_POST['email'];
$password = $_POST['password'];
$confpassword = $_POST['confpassword'];
}

if(isset($password) && isset($email) && isset($confpassword)){
if($password != '' && $email != '' && $confpassword != ''){
    if($password == $confpassword){
        if(strlen($password) <= 20 && strlen($password) >= 6){
            if(strlen($email) > 6){
                $hash = password_hash($password, PASSWORD_DEFAULT);             
                $insert_user = mysqli_query($con, "INSERT INTO users (email, password, salt) VALUES ('".$email."', '".$password."', '".$salt."')");
                    if($insert_user)
                    {
                    echo "Thank you for registering, you can now login to your account and create a listing.";
                    }
                    else
                    {
                    echo "Sorry there was an error - please try again later. If the issue continues please contact support.";
                    }
                }
                else
                {
                echo "You need to insert an email.";
                }
            }
            else
            {
            echo "The entered email address needs to be above 6 characters.";
            }
        }
        else
        {
        echo "The password must be between 6 and 20 characters long.";
        }
    }
    else
    {
    echo "The two passwords you have entered do not match.";
    }
}
else
{
echo "You have not inserted all of the required fields that were needed.";
}

它只是跳到最后说“你还没有插入所需的所有必填字段。”甚至没有尝试查询数据库。

Database.php只是连接数据库信息(表,密码等)

谢谢!

3 个答案:

答案 0 :(得分:1)

我会尝试手动将值分配给PHP变量($ email,$ password,$ confpassword)。

    if(isset($_POST['register'])) {
$email = $_POST['email'];
$password = $_POST['password'];
$confpassword = $_POST['confpassword'];
}

//Test variables
$email = 'test@email.com';
$password = 'testpassword';
$confpassword = 'testpassword';

if(isset($password) && isset($email) && isset($confpassword)){
if($password != '' && $email != '' && $confpassword != ''){

提交表单后,如果工作正常,您就会知道问题在于您的$ _POST数据被分配给PHP变量。如果这不起作用,您就会知道您的逻辑存在问题以及它如何处理变量。这至少会缩小您需要查看的范围。

答案 1 :(得分:0)

为了理解发生了什么,你应该使用&#34; var_dump($ variable)&#34;在代码开始时起作用。 它是一个显示变量内容的调试函数(对数组有用)。

1)如果只有一个字段为空,则该字段的名称在某处出现问题。

2)如果所有字段都为空,则表单或提交按钮出现问题。

只是一个提示:而不是使用&#34; isset&#34;然后检查你的字段是否已填满,你可以使用&#34;!empty($ variable)&#34;,在一个函数调用中它确实是相同的;)

狐猴

答案 2 :(得分:0)

顺便说一下,我复制了你的代码,并使用:

调用它
<form action="test.php" method="post">
    <input type="text" name="email" />
    <input type="text" name="password" />
    <input type="text" name="confpassword" />
    <input type="submit" name="register" />
</form>

完美无缺。我认为您的错误在HTML表单中。