2017-06-22 128 views
0

我正在测试新的东西在PHP中,但有困难的时候我的PHP代码有什么问题。 因此,基本上当我输入正常注册登录只有字符,我的PHP会抛出msg“注册=无效”,即代码中的第18行。请帮忙。PHP注册系统

<?php 

if (isset($_POST['submit'])) { 

    include_once 'dbc.php'; 

    $login = mysqli_real_escape_string($conn, $_POST['login']); 
    $pwd = mysqli_real_escape_string($conn, $_POST['pwd']); 

    //Error handler 
    //Check for empty fields 
    if (empty($login) || empty($pwd)) { 
     header("Location: register.php?signup=empty"); 
     exit(); 
    } else { 
     //Check if input characters are valid 
     if (preg_match("/^[a-zA-Z]*$/", $first)) { 
      header("Location: register.php?signup=invalid"); 
      exit(); 
     } else { 
      $sql   = "SELECT * FROM user WHERE name='$login'"; 
      $result  = mysqli_query($conn, $sql); 
      $resultCheck = mysqli_num_rows($result); 

      if ($resultCheck > 0) { 
       header("Location: register.php?signup=nametaken"); 
       exit(); 
      } else { 
       //hash 
       $hashedPwd = password_hash($pwd, PASSWORD_DEFAULT); 
       //Insert user into database 
       $sql  = "INSERT INTO user (user_login, user_pwd) VALUES ('$login', '$hashedPwd');"; 

       mysqli_query($conn, $sql); 
       header("Location: register.php?signup=success"); 
       exit(); 

      } 
     } 
    } 

} else { 
    header("Location: register.php"); 
    exit(); 
} 
+1

为什么'preg_match'中的'$ first'? –

+0

PHP正在抛出什么错误。可以分享完整的错误文本? –

+0

http://bobby-tables.com还了解SQL注入以及如何防止它们。你的代码不安全。 – Twinfriends

回答

0

此行

if (preg_match("/^[a-zA-Z]*$/", $first)) { 

应该

if (!preg_match("/^[a-zA-Z]*$/", $login)) { 

由于$先不宣布,这将永远是真实的,因为它仅包含数字!意思是如果它不等于

+0

,但仍然是同样的错误。任何其他的想法。我只是新的PHP –

+0

更新的答案,请立即尝试 –

+0

是的,它现在工作。非常感谢 –