2016-02-29 46 views
-1

我试图商店注册数据到数据库中,但东西我不是很了解情况持续发生,该线以下是我register.php形式首先在HTML载入我的代码不登记数据添加到数据库中

之前打印出来

query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $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(); 

     } 
} 
?> 

,这里是我的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> 

请帮助!

+0

你现在得到什么? –

+0

你正在得到什么错误? –

+0

crypt($ upass);这需要声明为$ upass = crypt($ upass); –

回答

1

按看出/在评论中讨论:

你正在运行的文件c:///file.php而不是http://localhost/file.php,因此为什么它显示你的代码,而不是解析它。

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

咨询:

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

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

这被解释为“如果设置会话阵列不等于” ......

相对于“如果会话阵列设置,并且不等于” ...

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

您与形式的编辑似乎缺少收盘</form>标签,并且是未知的,如果这个条件语句if(isset($_POST['signup']))元素确实持有相同的name属性吧。

另外,以下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()功能也是一样的。该列的长度需要足够长以适应哈希。


+0

我已根据您的答案处理其余问题,但似乎无法获得有关如何使用已阅读的{mysqli_escape_string()}的答案,但我确实没有任何答案!你能帮助你知道应该如何吗? – john

+0

@john示例:'$ var = mysqli_real_escape_string($ connection,$ _POST ['var']);' - '$ var = mysqli_real_escape_string($ connection,$ var);'根据手册http://php.net /manual/en/mysqli.real-escape-string.php并为所有你想逃避的人做。 –

+0

谢谢。再次@弗雷德-II的事情终于可以 – john

0
if (password1 == password2){ 

必须

if ($upass == $pass2){ 

,正如你在脚本中没有这样的变量。并且您的INSERT查询必须为:

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

假设$upass是一个字符串。

+0

感谢您看到我已更正并编辑该问题,但同样的事情仍在发生! – john

+0

我改变了'$ upass'变量的错误,但它不起作用。 – john

+0

和你有什么错误? – mitkosoft