我的代码不会将注册数据添加到数据库中

时间:2016-02-29 12:36:05

标签: php mysql

我正在尝试将注册数据存储到数据库中,但我无法理解的事情仍在发生,下面的行在我的register.php表格中,在HTML加载之前首先打印出来

  

query($ sql)=== TRUE){echo“新记录创建成功”; } else {echo“错误:”。 $ sql。 “   “。$ dbcon->错误;} $ dbcon-> close();}}?>

这是我的代码,我还想检查所使用的电子邮件是否已注册,在这种情况下,应该收到错误消息“电子邮件已经注册”

这是我的PHP代码:

<?php
session_start();
if(isset($_SESSION['user'])!="")
{
    header("Location: index.php");
}

include_once 'dbconnect.php';

if(isset($_POST['signup']))
{
    //performing verfication
    $upass = $_POST['upass'];
    $pass2 = $_POST['pass2'];

    if ($upass == $pass2){

            $fullName=mysqli_escape_string($_POST['fullName']);
            $tphon=mysqli_escape_string($_POST['telephone']);
            $email=mysqli_escape_string($_POST['email']);
            $role=mysqli_escape_string($_POST['role']);
            $upass=mysqli_escape_string($upass);
            $pass2=mysqli_escape_string($pass2);

            $upass = crypt($upass);

            $sql = "INSERT INTO users (fullname, telephone, email, role, pass)
            VALUES ('$fullName', '$tphon', '$email', '$role', '$upass')";

            if ($dbcon->query($sql) === TRUE) {
                echo "New record created successfully";
            } else {
                echo "Error: " . $sql . "<br>" . $dbcon->error;
            }

            $dbcon->close();

        }
 }   
?>

这是我的HTML表单:

    <form id="wizardForm" action="register.php" method="POST">
   <div class="row m-b-lg">
      <div class="col-md-4 center">
         <div class="login-box">
            <a href="register.php" class="logo-name text-lg text-center">Timewise</a>
            <p class="text-center m-t-md">Enter the following Details to Register</p>
         </div>
         <div class="form-group col-md-12">
            <label for="exampleInputName">Full Name</label>
            <input type="text" class="form-control" name="fullName" id="exampleInputName" placeholder="Full Name">
         </div>
         <div class="form-group  col-md-12">
            <label for="telephone">Telephone</label>
            <input type="text" class="form-control" name="telephone" id="telephone" placeholder="Telephone" >
         </div>
         <div class="form-group col-md-12">
            <label for="exampleInputEmail">Email Address</label>
            <input type="email" class="form-control" name="email" id="exampleInputEmail" placeholder="Enter email" >
         </div>
         <div class="form-group col-md-12">
            <label for="role">Role</label>
            <input type="radio" name="role" value="N" /> NORMAL <input type="radio" name="role" value="C" /> COMPANY <br/>
         </div>
         <div class="form-group col-md-12">
            <label for="exampleInputPassword1">Password</label>
            <input type="password" class="form-control" name="upass" id="exampleInputPassword1" placeholder="Password" >
         </div>
         <div class="form-group col-md-12">
            <label for="exampleInputPassword2">Confirm Password</label>
            <input type="password" class="form-control" name="pass2" id="exampleInputPassword2" placeholder="Confirm Password">
         </div>
         <div class="form-group col-md-12">
            <input type="submit"  name="signup" value="Submit" class="btn btn-success btn-block">
         </div>
         <p class="no-s text-center">2015 &copy; Timewise Errand Services</p>
      </div>
   </div>
</form>

请帮助!!!

2 个答案:

答案 0 :(得分:1)

根据评论中所见/讨论:

您将文件作为c:///file.php而不是http://localhost/file.php运行,因此它为什么会向您显示代码,而不是解析它。

然后mysqli_escape_string()该函数需要传递数据库连接并作为第一个参数:

请教:

你的会话的条件陈述会给你一个误报:

if(isset($_SESSION['user'])!="")

被解释为&#34;如果设置会话数组不等于&#34; ...

与#34相反;如果会话数组已设置且不等于&#34; ...

if(isset($_SESSION['user']) && $_SESSION['user'] != '')

您对表单的编辑似乎缺少结束</form>标记,如果此条件语句if(isset($_POST['signup']))的元素确实包含相同的名称属性,则不知道。

另外,以下POST数组的输入也未包含在HTML表单的编辑中:

$upass = $_POST['upass'];
$pass2 = $_POST['pass2'];

通过PHP检查错误,因为您已经在使用MySQL进行检查。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

脚注:

您应该在标头之后添加exit;,否则您的代码可能希望继续执行。

header("Location: index.php");
exit;

<强>密码

使用以下其中一项:

其他链接:

关于列长的重要说明:

如果您决定使用password_hash()或隐藏,请务必注意,如果您当前的密码列长度低于60,则需要将其更改为(或更高)。手册建议长度为255。

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

使用crypt()函数也是如此。列的长度需要足够长才能容纳哈希值。

答案 1 :(得分:0)

if (password1 == password2){

必须是

if ($upass == $pass2 ){

因为脚本中没有这样的变量。您的INSERT查询必须是:

$sql = "INSERT INTO users (fullname, telephone, email, role, pass)
            VALUES ('$fullName', '$tphon', '$email', '$role', '$upass')";

假设$upass是一个字符串。