Witam.

Mam mały problem z zalogowaniem użytkownika. A mianowicie po rejestracji użytkownika i zapisaniu w bazie danych hasła próbuje zalogować tego samego użytkownika ale niestety kod nie znajduje go w bazie - sprawdziłem i problem jest w pobieraniu hasła i porównywaniu go.

Pole hasła w tabeli :
  1. $query.="user_password VARCHAR(16) BINARY NOT NULL,";


Rejestracja użytkownika poprzez mysql :
  1. function InsertRecord($TableName, $Record )
  2. {
  3. if(!mysql_query("INSERT INTO $TableName VALUES ($Record)")) die('Błąd w funkcji InsertRecord : '. mysql_error());
  4. //else echo "- Dodano rekord do tabeli : \"$TableName\".<br>";
  5. }
  6.  
  7. $Baza->InsertRecord('user', "NULL, '$user_email', password('$user_pass'), '$user_name', '$user_country', '$user_profile', now(), curdate()");


Logowanie użytkownika :
  1. if(!isset($_SESSION['user_id']))
  2. {
  3. if(isset($_POST['submit']))
  4. {
  5. include_once("ClassBazaMySQL.inc.php");
  6. include_once("mysqlbaseinfo.php");
  7.  
  8. $Baza = new BazaMySQL();
  9. $link_id = db_connect();//Baza->Connect();
  10. if(!$link_id) die('Nastapił błąd w zapytaniu do bazy w funkcji link_id: '. mysql_error());
  11.  
  12. // Łączenie się z bazą danych.
  13. //$dbc = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  14.  
  15. // Pobieranie danych logowania wpisanych przez użytkownika.
  16. $user_name = mysql_real_escape_string(trim($_POST['user_name']));
  17. $user_password = mysql_real_escape_string(trim($_POST['user_password']));
  18.  
  19. echo $user_name.'<br>';
  20. echo $user_password.'<br>';
  21.  
  22. if(!empty($user_name) && !empty($user_password))
  23. {
  24. // Wyszukiwanie nazwy użytkownika i hasła w bazie danych.
  25. $query = "SELECT user_id, user_name, user_password FROM user
  26. WHERE user_name = '$user_name' AND user_password = password('$user_password')";
  27.  
  28. $data = mysql_query($query, $link_id);
  29.  
  30. $test = mysql_num_rows($data);
  31.  
  32. echo $test; // test zasze == 0 (czyli nie ma takiego usera z taką nazwą i hasłem) !!!!!!!!!
  33.  
  34. if($test == 1)
  35. {
  36. // Dane logowania są poprawne, dlatego należy ustawić zmienne (i pliki cookie) sesji z
  37. // identyfikatorem i nazwą użytkownika, a następnie przejść do strony głównej.
  38. $row = mysql_fetch_array($data);
  39. $_SESSION['user_id'] = $row['user_id'];
  40. $_SESSION['user_name'] = $row['user_name'];
  41.  
  42. setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30)); // Wygasa za 30 dni.
  43. setcookie('user_name', $row['user_name'], time() + (60 * 60 * 24 * 30)); // Wygasa za 30 dni.
  44.  
  45. $home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
  46. header('Location: ' . $home_url);
  47. }else{
  48. $error_msg = '1 : Musisz podać poprawną parę nazwa - hasło, aby się zalogować.';
  49. };
  50. }else{
  51. $error_msg = '2 : Musisz podać parę nazwa - hasło, aby się zalogować.';
  52. };
  53. }
  54. }


Wszystko ładnie tylko nie wiem czemu nie chce znaleźć takiego samego użytkownika. Próbowałem już nawet zapisać hasło poprzez SHA w mysql ale ten sam efekt.

Możecie mi powiedzieć co źle robię i jak to poprawić ? Będę bardzo wdzięczny.

Znalazłem błąd - pole hasła miało tylko 16 miejsc a powinno wiecej bo kodowane sha potrzebuje 40 miejsc na haslo. smile.gif

Można zamknąć lub usunąć smile.gif