2014-10-02 2 views
0

Прежде всего. Я новичок как в PHP/SQL, так и в StackOverflow, поэтому мне жаль, если мой пост странный. Мне сложно понять, что не так с моим кодом. Я зарегистрировал несколько пользователей (каждый с паролем ofc), но я только получил логин. Это мое, если это неправильно?Аутентификация пользователя PHP/SQL

спасибо.

<?php 

session_start(); 

    //Connecting and choosing DB 
    $connection = mysql_connect("link", "user", "pw");   
    mysql_select_db("user", $connection); 

    $username = mysql_real_escape_string($_POST['brukernavn']); 
    $password = mysql_real_escape_string($_POST['passord']); 


    // Check the users input against the DB. 
    $sql = "SELECT * FROM brukere WHERE brukernavn = '$username' AND passord = '$password'"; 
    $result = mysql_query($sql) or die ("Unable to verify user because " . mysql_error()); 

    $row = mysql_fetch_assoc($result); 

    if($row['total'] == 1) 

    { 
     $_SESSION['loggedIn'] = "true"; 
     header("Location: insertlink"); 
    } 
    else 
    { 
     $_SESSION['loggedIn'] = "false"; 
     echo "<p>Login failed, username or password incorrect.</p>"; 
    } 

?> 
+0

Я знаю, что вы сказали, что вы новичок в PHP/MySQL, поэтому я рекомендую начинать правильно и НЕ использовать функции mysql_ *. Посмотрите на mysqli или PDO (последнее - мое личное предпочтение). Нам также нужно будет увидеть ваш регистрационный код. Вы шифруете пароли при их сохранении? – muttley91

+4

1. 'mysql_ *' устарел, используйте 'mysqli_' или' PDO'. 2. Вы храните в своей базе данные с открытым текстом, что очень плохо. – lxg

+0

@ lxg - Хотелось бы, чтобы я мог рассказать о 100 upvotes ... –

ответ

3

Там нет total поля в массиве, возвращенный mysql_fetch_assoc().

Если вы хотите узнать количество результатов, используйте count функцию:

if(count($rows) === 1) 
… 

BTV, как уже упоминалось:

  1. mysql_* является устаревшим, используйте mysqli_* или PDO.
  2. Вы храните в своей базе данных пароли с четким текстом, что очень плохо. Пожалуйста, прочитайте о хэшировании и засовывании сохраненных паролей.
+1

[php-документация по шифрованию паролей] (http://php.net/manual/en/faq.passwords.php) –

+0

@lxg Большое вам спасибо, сэр! Я собираюсь проверить mysqli_ и PDO. –

+0

хорошая ссылка @ gloomy.penguin. Не знал, что у PHP есть специальная статья об этом. – lxg

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