无法使用PHP

时间:2016-07-02 19:34:32

标签: php mysql mysqli

我正在开展一个学校项目,无法正确完成注册页面。它只是没有在表格中插入数据。

Here is a screenshot for database and table

我添加了HTML,在完成所有答案后,我认为我正在使用过时的视频和学习资料来学习(PHP,HTML,CSS,网站安全)。

 <!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Register</title>
  </head>
  <body>
    <div class="form">
      <h2>Registeration</h2>
      <form action="" method="post">
              Name<input type="text" name="name" placeholder="First & Last name" required><br><br>
              Username<input type="text" name="username" placeholder="Username"required><br><br>
              Password<input type="password" name="password" placeholder="Keep it Strong"required><br><br>
              Confirm Password<input type="password" name="confirm-pass" placeholder="Re-Enter Password"required><br><br>
              Email<input type="email" name="email" placeholder="Email"required><br><br>
              Phone No.<input type="text" name="phone-no" placeholder="Phone No"required><br><br>
              Gender<input type="text" name="gender" placeholder="Male or Female"required><br><br>
              State<input type="text" name="state" placeholder="State"required><br><br>
              <button type="submit" name="home">Home</button>
              <button type="submit" name="sub">Submit</button>
              <button type="submit" name="reset">Reset</button>
            </form>
    </div>
  </body>
</html>
<?php
$con=mysqli_connect('localhost','root','123456789','eedb');
if ($con)
{
    if (isset($_POST['sub']))
    {
        $n= $_POST['name'];
        $un=$_POST['username'];
        $p=$_POST['password'];
        $cp=$_POST['confirm-pass'];
        $e=$_POST['email'];
        $pn=$_POST['phone-no'];
        $g=$_POST['gender'];
        $s=$_POST['state'];
        mysqli_query($con,"SELECT * FROM `register`");
        $insert= mysqli_query($con,"INSERT INTO `register`(`name`, `username`, `password`, `confirm-pass`, `email`, `phone-no`, `gender`, `state`) VALUES ('$n','$un','$p','$cp','$e','$pn','$g','$s')");
        if ($insert)
        {
            echo "<center>Data Successfully Submitted</center>";
        }
        else
        {
            echo "<center>Data Not Submitted</center>";
        }
    }
}
else
{
    echo "<center>Oh!no there is an error.<br><br>But don't worry we have an army of trained chimpanzies to deal with it.<br><br> <image src='images/chimps.jpg'><br><br>Come Back Soon</center>";
}
if (isset($_POST['home']))
{
    header("location:index.php");
}
if (isset($_POST['reset']))
{
    header("location:register.php");
}
?>

2 个答案:

答案 0 :(得分:1)

由于您没有发布您的HTML表单,我发布了以下答案,这是您的HTML表单应该(基本上)的样子,btw只包含一个示例元素。

您需要填写其余内容并遵循相同的惯例。

<form method="post" action="handler.php">

First name:
<input type="text" name="name">
<br>
<input type="submit" name="sub" value="Submit">

</form>

如果包含MySQL可能抱怨的任何字符,例如撇号,则转义您的值。

即:Doug's Bar & Grill

然后:

$n= mysqli_real_escape_string($con, $_POST['name']);

您应该使用的东西或准备好的语句,因为您的代码目前对SQL注入开放。

对所有其他POST阵列也这样做。

使用纯PHP和HTML表单的post方法时,POST数组需要name属性。

旁注:您的整个代码取决于以下条件语句
if (isset($_POST['sub'])){...}。因此,请确保该表单元素具有相同的名称属性。

  • 也检查错误。

因为这对你没有帮助:

echo "<center>Data Not Submitted</center>";

参考文献:

目前还不清楚你要用这条线做什么:

mysqli_query($con,"SELECT * FROM `register` ");

如果目标是检查是否存在行,请参阅Stack上的一个答案:

<强>密码

我还注意到您可能以纯文本格式存储密码。不建议这样做。

使用以下其中一项:

关于列长的重要说明:

如果您决定使用password_hash()或兼容包(如果PHP <5.5)https://github.com/ircmaxell/password_compat/,请务必注意,如果您当前的密码列的长度低于60 ,它需要更改为(或更高)。手册建议长度为255。

您需要更改列的长度并重新开始使用新哈希才能使其生效。否则,MySQL将无声地失败。

其他感兴趣的链接:

HTML stickler:

{@ 1}}标记已弃用,已从Web标准中删除。

有关详细信息,请访问以下内容:

答案 1 :(得分:0)

你可以试试这个

$insert= mysqli_query($con,"INSERT INTO `register`(`name`, `username`, `password`, `confirm-pass`, `email`, `phone-no`, `gender`, `state`)VALUES ('$n','$un','$p','$cp','$e','$pn','$g','$s')");

您可以尝试使用notepad ++或任何其他编辑器(例如netbeans),这将使开放式和封闭式括号更加明显。