2016-02-15 5 views
0

Не может показаться, что это так, не знаю, связано ли это с тем, что я использую v5 +, но «mysqli_num_rows ($ result)> 0» не работает так, как это предположим, что ... все же он все еще вводит переменные в базу данных.Проверьте базу данных, если имя пользователя уже существует. PHP v5

Ошибка я получаю это " Предупреждение: mysqli_num_rows() ожидает параметр 1, чтобы быть mysqli_result, булево приведены в C: \ XAMPP \ HTDOCS \ lichie \ register.php на линии 22 "

Другие примеры, которые я видел в stackoverflow, работают с методом «mysql_query», но я пытаюсь использовать его с «mysqli_query».

Вот код:

<?php 

include "connect_db_users.php"; 

@$username = strtolower($_POST['user']); 
@$email = strtolower($_POST['email']); 
@$pass = $_POST['pass']; 
@$confirmPass = $_POST['confirmPass']; 

$ins_user = "INSERT INTO lichie_user(user_user,user_pass,user_email, user_date)" 
      . "VALUES ('" . $username . "' , '" . $pass . "' , '" . $email . "' , NOW())"; 

if(isset($_POST['submit'])){ 
    if($username == !''){ 
     if($email == !''){ 
      if($pass == !''){ 
       if($pass == $confirmPass){ 

        $query = 'SELECT user_user FROM lichie_user WHERE user_user=$username'; 
        $result = mysqli_query($connect,$query); 

        if (mysqli_num_rows($result) > 0){ 
         echo "Username already exists!"; 
        }else{ 
         if(mysqli_query($connect, $ins_user)){ 
          mysqli_close($connect); 
          /*header("Location: Success.php");*/ 
          echo "INSERTED"; 
         }else{ 
          echo "FAILED!"; 
         } 
        } 

       }else{ 
        echo "Passwords do not match!"; 
       } 
      }else{ 
       echo "Password can not be empty!"; 
      } 
     }else{ 
      echo "Email can not be empty!"; 
     } 
    }else{ 
     echo "Username can not be empty!"; 
    } 
} 




?> 




<form method="POST"> 

    <h2 align="center"> Register</h2> 

    <table id="table1"; cellspacing="5px" cellpadding="5%"; align="center"> 

      <tr> 
       <td align="right">Username:</td> 
       <td><input type="text" name="user" /></td> 
      </tr> 

      <tr> 
       <td valign="top" align="right">Email:</td> 
       <td><input type="email" name="email" /></td> 
      </tr> 

      <tr> 
       <td valign="top" align="right">Password:</td> 
       <td><input type="password" name="pass" autocomplete="off" /></td> 
      </tr> 

      <tr> 
       <td valign="top" align="right">Confirm Password:</td> 
       <td><input type="password" name="confirmPass" autocomplete="off"/></td> 
      </tr> 

      <tr> 
       <td><input type="submit" name="submit" value="submit"/></td> 
      </tr> 

    </table> 
</form> 
+0

[. Ваш скрипт находится в опасности для SQL Injection атак] (http://stackoverflow.com/questions/60174/how- can-i-prevent-sql-injection-in-php) Узнайте о запросах [подготовленных] (http://en.wikipedia.org/wiki/Prepared_statement) для [MySQLi] (http://php.net/manual/ о/mysqli.quickstart.prepared-statements.php). –

+0

Для защиты паролей используйте встроенные функции PHP (http://jayblanchard.net/proper_password_hashing_with_PHP.html). Если вы используете версию PHP менее 5.5, вы можете использовать 'password_hash()' [пакет совместимости] (https://github.com/ircmaxell/password_compat). –

ответ

1

Ваш запрос на выборку неправильно. Вам не хватает ' около $username.

Попробуйте это:

$query = "SELECT user_user FROM lichie_user WHERE user_user='$username'"; 

см Также в этом: How can I prevent SQL injection in PHP?

+0

Отлично! Не могу поверить, что я этого не видел! Спасибо! :) Посмотрите на SQL-инъекцию - вы лучшие;) –

Смежные вопросы