HTML / PHP表单问题

时间:2014-02-22 16:54:36

标签: php html mysql forms

我对网络编码比较陌生,但我知道的很多,我之前正在制作一个注册表,它还会检查字段是否为空。它出现确定,但似乎没有任何工作,当字段为空时,消息不会出现,当字段很好时,它只是加载但实际上并没有将它插入数据库。此外,一旦我按下提交按钮,表单也会消失。任何帮助将不胜感激。

<form method="post">
<?php
if(isset($_POST['submit'])){
    $username=$_POST['username'];
    $password=$_POST['password'];
    $password=md5(hash("sha512",$password));
    if(empty($username) or empty($password)){
        $message="Please enter information into the fields.";
    } else {
        mysql_query("INSERT INTO `users` VALUES('',$username,$password)");
        $message="Register successful!";
    }
    echo "<div id='box>$message</div>";
}
?>
Username: <input type="text" name="username" /><br>
Password: <input type="password" name="password" /><br>
<input type="submit" name="submit" value="Sign Up">
</form>

5 个答案:

答案 0 :(得分:2)

看起来您没有打印出mysql错误,您只需要在查询结尾添加or die(mysql_error());,就像我的示例一样。无论如何,你应该用quotes包围你的字符串。按下时页面显示为空白,因为如果满足条件。所以改变如下

mysql_query("INSERT INTO `users` VALUES('','$username','$password')") or die(mysql_error());

作为旁注,我将停止使用mysql_函数,因为它们已被删除,而是使用PDOmysqli准备语句,以避免任何mysql注入的风险,因为您的代码是高度的脆弱。 LEARN MORE HERE

正如CodeBird正确陈述

  

空字符串的md5将返回32个字符串,因此您测试的密码永远不会为空

答案 1 :(得分:1)

将查询语句更改为

mysql_query("INSERT INTO `users` VALUES('','$username','$password')");

开始使用mysqli_ *函数而不是mysql_ *,因为后者已被弃用

答案 2 :(得分:1)

check this out "(`id`, `username`, `password`)" example column name use what you have made it.
<?php
if(isset($_POST['submit']))
{
    $username=$_POST['username'];
    $password=$_POST['password'];
    enter code here
    if(empty($username) || empty($password)){
        $message="Please enter information into the fields.";
    } else {
        $password=md5(hash("sha512",$password));
        mysql_query("INSERT INTO `users` (`id`, `username`, `password`) VALUES('','$username','$password');");
        $message="Register successful!";
    }
    echo "<div id='box'>".$message."</div>";
}
?>
<form method="post" action="">
    <input type="text" name="username" /><br>
    <input type="password" name="password" /><br>
    <input type="submit" name="submit" value="Sign Up">
</form>

答案 3 :(得分:0)

您的插入查询错误,请使用:

INSERT INTO tablename (col1, col2) VALUES('data1', 'data2' )

或者您可以使用

INSERT INTO tablename SET col1 = "data1", col2 = "data2"

答案 4 :(得分:0)

您遇到了问题,因为您滥用 empty()

  

如果变量不存在或者其值等于FALSE

,则该变量被视为空

此外,您应该在||

中为使用双管if()

:此:

if(empty($username) or empty($password)){

应该是:

if($username === '' || $password === ''){