2016-03-15 4 views
-4
<?php 
session_start(); 
include_once ('connection.php'); 

if (isset($_POST['login'])){ 
    $uemail = $_POST['email']; 
    $upassword = $_POST['password']; 
} 

    $query = "SELECT * FROM users WHERE email = $uemail and password = $upassword"; 
    $result = mysqli_query($connection, $query); 


    if(mysql_num_rows($query) == 1){ 
     $_SESSION['email'] = $email; 
     header('Location: newfeeds.php'); 
     exit(); 

     }else{ 
     while ($row = mysql_fetch_assoc($result)) { 
     echo $row["email"]; 
     echo $row["password"]; 
     } 
    } 
    ?> 

У меня есть руководство по php, оно говорит, что перестает использовать sql и заменяет sqli, но это не сработало. Он бросает ошибки.Ошибка входа в систему php строки

Connected Successfully Fatal error: Call to undefined function mysql_num_rows() in D:\XAMPP\htdocs\codeinventor\login.php on line 14

+1

Изменить на mysqli_num_rows(). Ваш запрос не является безопасным или безопасным. Взгляните на подготовленные заявления –

+0

Также см. Http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php?rq=1 – MECU

+2

[Ваш скрипт подвержен риску для SQL-инъекций. ] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

ответ

1

Измените все функции mysql_ * на функции mysqli_ *.

0

Вы не можете использовать mysql и mysqli вместе. Они представляют собой отдельные API-интерфейсы, и создаваемые ими ресурсы несовместимы друг с другом. Так что заменить mysql_* на mysqli_* поможет!

0

Я согласен со всем здесь, что вы должны изменить все функции mysql_ * на функции mysqli_ *.

К вашему коду с API mysql. Пожалуйста, используйте следующий код:

<?php 
session_start(); 
include_once ('connection.php'); 

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 

    if ($_POST['email'] != "" AND $_POST['password'] != ""){ 

     $uemail = $_POST['email']; 
     $upassword = $_POST['password']; 

     $query = "SELECT * FROM users WHERE email = '$uemail' and password = '$upassword'"; 

     $result = mysqli_query($connection, $query); 

     if(mysql_num_rows($query) == 1){ 

     $_SESSION['email'] = $email; 
     header('Location: newfeeds.php'); 
     exit(); 

     }else{ 

     while ($row = mysql_fetch_assoc($result)) { 

      echo $row["email"]; 
      echo $row["password"]; 

     } 
     } 
    }else{ 

    echo "mail or password is not valid"; 
    } 

}else{ 

echo "The form has been not submitted"; 

} 


    ?> 

Если один пользователь ввел следующую строку в качестве имени пользователя:

' or uid like '%admin%

Ваш запрос будет выглядеть следующим образом:

$query = "SELECT * FROM users WHERE email = '' or uid like '%admin%' and password = '$upassword'"; 

Вот почему мы говорили вам, вам нужно изменить все функции mysql_ * на функции mysqli_ *.

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