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

Php 我的代码不会将注册数据添加到数据库中,php,mysql,Php,Mysql,我试图将注册数据存储到数据库中,但一些我不太理解的事情一直在发生,我的register.php表单下面的行在加载HTML之前首先打印出来 query($sql)==TRUE){echo“新记录已成功创建”}否则{echo”错误:“.$sql” “$dbcon->error;}$dbcon->close();}}} 这是我的代码,我还想检查正在使用的电子邮件是否已注册,在这种情况下,应该会出现一个错误,显示“电子邮件已注册” 以下是我的PHP代码: <?php session_start()

我试图将注册数据存储到数据库中,但一些我不太理解的事情一直在发生,我的register.php表单下面的行在加载HTML之前首先打印出来

query($sql)==TRUE){echo“新记录已成功创建”}否则{echo”错误:“.$sql” “$dbcon->error;}$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();

        }
 }   
?>

一定是

if ($upass == $pass2 ){
因为脚本中没有这样的变量。您的插入查询必须是:

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

假设
$upass
是一个字符串。

如评论中所述:

您运行的文件是
c:///file.php
而不是
http://localhost/file.php
,因此它向您显示代码,而不是解析代码

然后
mysqli\u escape\u string()
该函数需要传递数据库连接,并作为第一个参数:

咨询:

会话的条件语句将给您一个假阳性:

if(isset($_SESSION['user'])!="")
这被解释为“如果设置会话数组不等于”

与“如果会话数组已设置且不等于”

您对表单的编辑似乎缺少结束标记
,如果此条件语句的元素
if(isset($\u POST['signup'))
确实具有相同的name属性,则该标记未知

此外,以下POST数组的输入也未包含在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>
$upass = $_POST['upass'];
$pass2 = $_POST['pass2'];
通过PHP检查错误,因为您已经在使用MySQL进行检查

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

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

// Then the rest of your code

密码

使用以下选项之一:

  • PHP5.5的函数
  • 兼容性包(如果PHP<5.5)
其他链接:

关于列长度的重要旁注:

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

您需要更改列的长度,并使用新的哈希重新开始,以使其生效。否则,MySQL将以静默方式失败

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



您现在得到的是什么??您得到的是什么错误??crypt($upass);这需要声明为$upass=crypt($upass);请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,您可以使用
密码\u hash()
。太正确了Ralph。太对了@Fred ii感谢您看到我更正并编辑了问题,但同样的事情仍在发生!我已经更改了“$upass”变量上的错误,但它不起作用。它仍然没有将我的数据添加到数据库中,我得到以下代码:query($sql)==TRUE){echo“新记录创建成功”;}否则{echo”错误:“.$sql.”“$dbcon->错误;}$dbcon->close();}?>。在HTML加载之前仍然显示我已经按照您的答案解决了其余的问题,但是我似乎没有得到关于如何使用{mysqli_escape_string()}的答案,我已经读过了,但是我真的什么都没有得到!!!你能帮我知道它应该是什么样子吗?@johnexamples:
$var=mysqli\u real\u escape\u string($connection,$\u POST['var')-
$var=mysqli\u real\u escape\u字符串($connection,$var)按照手册,对所有想要逃跑的人都这样做。谢谢。再一次@Fred ii一切终于好了
$upass = $_POST['upass'];
$pass2 = $_POST['pass2'];
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code
header("Location: index.php");
exit;