PHP代码不断将空值插入数据库。

时间:2013-07-29 20:58:31

标签: php mysql

所以我正在尝试创建这个表单,每次我尝试创建一个虚拟用户时,它会在数据库中创建一个empy。

这是php代码 create.php

<?php
  session_start();
  include ('connection.php');

  $username = $_POST['usernamesignup'];
  $email = $_POST['emailsignup'];
  $password = $_POST['passwordsignup'];

  mysql_query("INSERT INTO users (usernamesignup, passwordsignup, emailsignup) 
         VALUES ('$username', '$password', '$email')")or die (mysql_error());
  header('Location: login.html');
  mysql_close($db);
?>

以下是 Login.html 形式的部分:

<form  action="create.php" autocomplete="on"> 
  <h1> Sign up </h1> 
  <p><label for="usernamesignup" class="uname" data-icon="u">Your username</label>
  <input id="usernamesignup" name="usernamesignup" required="required" type="text" placeholder="mysuperusername690" /></p>
  <p><label for="emailsignup" class="youmail" data-icon="e" > Your email</label>
  <input id="emailsignup" name="emailsignup" required="required" type="email" placeholder="mysupermail@mail.com"/></p>
  <p><label for="passwordsignup" class="youpasswd" data-icon="p">Your password </label>
  <input id="passwordsignup" name="passwordsignup" required="required" type="password" placeholder="eg. X8df!90EO"/></p>
  <p><label for="passwordsignup_confirm" class="youpasswd" data-icon="p">Please confirm your password </label>
  <input id="passwordsignup_confirm" name="passwordsignup_confirm" required="required" type="password" placeholder="eg. X8df!90EO"/></p>
  <p class="signin button"><input type="submit" value="Sign up"/></p>
  <p class="change_link">Already a member?<a href="#tologin" class="to_register"> Go and log in </a></p>
</form>

非常感谢任何帮助。

编辑:添加方法:“post”成功了。非常感谢大家的快速响应以及关于安全性的非常有效的建议,以及我应该如何更改为更新的形式而不是我在这里使用的形式。

6 个答案:

答案 0 :(得分:2)

您需要在您的案例中指定POST方式。尝试

<form action="create.php" autocomplete="on" method="POST"> 

答案 1 :(得分:1)

您必须检查表单发送的值是否为空或字符串为空。请小心你的代码容易受到sql注入,并在sha512或类似的东西中哈希你的密码。

查看此功能:http://php.net/manual/en/function.empty.php

并尝试在表单中添加:

<form  action="create.php" autocomplete="on" method="post"> 

答案 2 :(得分:1)

尝试将此添加到您的表单标记

method='post'

答案 3 :(得分:0)

表单的默认方法是GET,你试图从POST获取你的值,所以它们是空的......

你应该这样做:

$password = $_GET['password'];
// etc.

或者,如果您不知道:

$password = $_REQUEST['password'];
// etc.

答案 4 :(得分:0)

请考虑加入<form action="create.php" autocomplete="on" method="POST">

请原谅,请不要将原始密码存储在数据库中,只需使用加密方法即可。 并使用PDO代替mysql_*

见这里:http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

答案 5 :(得分:0)

  1. 我建议你使用mysqli类。我自己在较小的项目中使用过这个:https://github.com/ajillion/PHP-MySQLi-Database-Class

  2. 您的代码中缺少“表单验证”。如果您将验证正确地集成到表单和后端代码中,这可以防止空表和恶意表单提交

  3. 如何确保在特定字段中输入数据的简单示例,请尝试以下操作:

  4. <?php
    if (empty($_POST['usernamesignup']), empty($_POST['...']))
    {
        echo 'Not all required data was submitted';
    }
    else
    {
        // Process the form, all data was received
    }
    

    4。你考虑过使用php框架吗?如果您想要更先进和可用的东西,请尝试CodeigniterLaravel之类的内容。