2017-06-14 146 views
-2

你能解释为什么我的sql请求验证不起作用吗? 它始终显示“的问题......”即使新用户加入我的数据库..验证请求sql

<?php 
include 'conn_mysql.php'; 
if (isset($_POST['Login_fieldR']) && isset($_POST['Password_fieldR'])){ 
    $login_fieldR = $_POST['Login_fieldR']; 
    $password_fieldR = $_POST['Password_fieldR']; 
    $dateregister=NULL; 
    try{  
     $bdd = new PDO($conStr,$user,$pass); 
    } catch (PDOException $e){ 
     die('could not connect to the database'.$e->getMessage()); 
    } 
    $req = $bdd->prepare('INSERT INTO users(login, password, dateregister) VALUES(?, ?, NOW())'); 
    $req->execute(array($login_fieldR,$password_fieldR)); 

    $result = $req->fetch(); 
    if (!$result) 
    { 
     echo '<p id="popup_text">Problem..</p>'; 
    } 
    else 
    { 
     echo '<p id="popup_text">You are registered ! You can logged in now'; 
    } 
} 
?> 
+3

**决不* *存储纯文本密码。请使用['password_hash()'](http://us3.php.net/manual/en/function.password-hash.php)和['password_verify()'](http://us3.php.net) /manual/en/function.password-verify.php)。如果您使用的是5.5之前的PHP版本,请不要**使用MD5或SHA1来散列密码。相反,您可以使用[此兼容包](https://github.com/ircmaxell/password_compat)。 –

+0

@AlexHowansky好的,谢谢,我会用它! :) – Melinsuna

+1

'fetch()'需要'SELECT',而不是'INSERT'。 –

回答

1

检查成功执行函数的返回值/失败消息

$res = $req->execute(array($login_fieldR,$password_fieldR)); 
    if (!$res) 
    { 
     echo '<p id="popup_text">Problem..</p>'; 
    } 
    else 
    { 
     echo '<p id="popup_text">You are registered ! You can logged in now'; 
    } 
+2

以及它们的'$ result = $ req-> fetch();'?你为什么他们的代码失败了。编辑:他们的问题是:*“你能解释为什么我的sql请求的验证不起作用吗?”* - 他们想在这里验证,所以它比发布的更深。 –

+0

工作!谢谢 :) – Melinsuna