提交表单,mysql和php

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了提交表单,mysql和php脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

我是PHPsql以及所有这些东西的新手,我正在关于PHP论坛上关于youtube的教程,并想知道为什么这段代码在提交表单时没有回应“成功”.我也想知道为什么它在我提交表格之前就会回复失败.我已成功连接到数据库.

<!DOCTYPE HTML>
<html>
    <head>
        <tITle>Register</title>
    </head>
    <body>
        <form action="register.PHP" method="POST">
            Username: <input type="text" name="username">
            <br/>
            Password: <input type="password" name="password">
            <br/>
            Confirm Password: <input type="password" name="confirmPassword">
            <br/>
            Email: <input type="text" name="email">
            <br/>
            <input type="submit" name="submit" value="Register"> or <a href="login.PHP">LOG in</a>
        </form>
    </body>
</html>
<?PHP
    require('connect.PHP');
    $username = $_POST['username'];
    $password = $_POST['password'];
    $confirmPassword = $_POST['confirmPassword'];
    $email = $_POST['email'];

    if(isset($_POST["submit"])){
        if($query = MysqL_query("INSERT INTO users ('id', 'username', 'password', 'email') VALUES('', '".$username."', '".$password."', '".$email."')")){
            echo "Success";
        }else{
            echo "Failure" . MysqL_error();
        }
    }
?>

Connect.PHP

<?PHP

$connect = MysqLi_connect("localhost", "root", "") or die("Could not connect to server!");
MysqLi_select_db($connect, "PHP_forum") or die("Could not connect to database!");

?>

解决方法:

这里有一些问题.

您在列中使用了错误identifiers(并且是引号):

('id', 'username', 'password', 'email')

删除它们

(id, username, password, email)

或使用反引号

(`id`, `username`, `password`, `email`)

MysqL_error()应该抛出一个错误,但它没有因为:

>您将MysqL API与MysqLi_混合连接,然后在查询中混合使用MysqL_.

这两种不同的API不会相互混合.

使用MysqLi_ exclusive并将您当前的查询改为

if($query = MysqLi_query($connect, "INSERT...

并将MysqL_error()更改为MysqLi_error($connect)

作为该块的重写:

if(isset($_POST["submit"])){
    if($query = MysqLi_query($connect,"INSERT INTO users ('id', 'username', 'password', 'email') VALUES('', '".$username."', '".$password."', '".$email."')")){
        echo "Success";
    }else{
        echo "Failure" . MysqLi_error($connect);
    }
}

只是为了测试错误,按照我上面的概述进行更改,同时按照现在的方式保留列的引号.然后,您将看到My​​sql将抛出的错误.然后,您可以执行上面已经概述的操作并删除名称周围的引号,或者用反引号替换它们.

您看到的教程可能很好地使用了反引号,但可能无法区分足以让您告诉它们确实是反引号而不是单引号.

但是,您目前的代码SQL injection开放.使用mysqli with prepared statementsPDO with prepared statements,它们更安全.

我注意到你可能用纯文本存储密码.如果是这种情况,则非常气馁.

我建议你使用CRYPT_BLOWFISHPHP 5.5的password_hash()功能.对于PHP< 5.5使用password_hash() compatibility pack.

而且,而不是做:

$connect = MysqLi_connect("localhost", "root", "") or die("Could not connect to server!");
MysqLi_select_db($connect, "PHP_forum") or die("Could not connect to database!");

您应该检查错误,就像手册所述

$link = MysqLi_connect("myhost","myuser","mypassw","mybd") 
or die("Error " . MysqLi_error($link)); 

> http://php.net/manual/en/function.mysqli-connect.php

所以在你的情况下:

$connect = MysqLi_connect("localhost", "root", "","PHP_forum") 
or die("Error " . MysqLi_error($connect)); 

编辑:我将action =“register.PHP”更改为action =“”,因为您在同一页面内使用了整个代码.

<!DOCTYPE HTML>
<html>
    <head>
        <title>Register</title>
    </head>
    <body>
        <form action="" method="POST">
            Username: <input type="text" name="username">
            <br/>
            Password: <input type="password" name="password">
            <br/>
            Confirm Password: <input type="password" name="confirmPassword">
            <br/>
            Email: <input type="text" name="email">
            <br/>
            <input type="submit" name="submit" value="Register"> or <a href="login.PHP">Log in</a>
        </form>
    </body>
</html>
<?PHP
    require('connect.PHP');
    $username = $_POST['username'];
    $password = $_POST['password'];
    $confirmPassword = $_POST['confirmPassword'];
    $email = $_POST['email'];

    if(isset($_POST["submit"])){
        if($query = MysqLi_query($connect,"INSERT INTO users (`id`, `username`, `password`, `email`) VALUES ('', '".$username."', '".$password."', '".$email."')")){
            echo "Success";
        }else{
            echo "Failure" . MysqLi_error($connect);
        }
    }
?>

脚本宝典总结

以上是脚本宝典为你收集整理的提交表单,mysql和php全部内容,希望文章能够帮你解决提交表单,mysql和php所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。