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 :
$query.="user_password VARCHAR(16) BINARY NOT NULL,";
Rejestracja użytkownika poprzez mysql :
function InsertRecord($TableName, $Record )
{
//else echo "- Dodano rekord do tabeli : \"$TableName\".<br>";
}
$Baza->InsertRecord('user', "NULL, '$user_email', password('$user_pass'), '$user_name', '$user_country', '$user_profile', now(), curdate()");
Logowanie użytkownika :
if(!isset($_SESSION['user_id'])) {
if(isset($_POST['submit'])) {
include_once("ClassBazaMySQL.inc.php");
include_once("mysqlbaseinfo.php");
$Baza = new BazaMySQL();
$link_id = db_connect();//Baza->Connect();
if(!$link_id) die('Nastapił błąd w zapytaniu do bazy w funkcji link_id: '. mysql_error());
// Łączenie się z bazą danych.
//$dbc = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// Pobieranie danych logowania wpisanych przez użytkownika.
echo $user_password.'<br>';
{
// Wyszukiwanie nazwy użytkownika i hasła w bazie danych.
$query = "SELECT user_id, user_name, user_password FROM user
WHERE user_name = '$user_name' AND user_password = password('$user_password')";
echo $test; // test zasze == 0 (czyli nie ma takiego usera z taką nazwą i hasłem) !!!!!!!!!
if($test == 1)
{
// Dane logowania są poprawne, dlatego należy ustawić zmienne (i pliki cookie) sesji z
// identyfikatorem i nazwą użytkownika, a następnie przejść do strony głównej.
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['user_name'] = $row['user_name'];
setcookie('user_id', $row['user_id'], time() + (60
* 60
* 24
* 30
)); // Wygasa za 30 dni. setcookie('user_name', $row['user_name'], time() + (60
* 60
* 24
* 30
)); // Wygasa za 30 dni.
$home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']); header('Location: ' . $home_url); }else{
$error_msg = '1 : Musisz podać poprawną parę nazwa - hasło, aby się zalogować.';
};
}else{
$error_msg = '2 : Musisz podać parę nazwa - hasło, aby się zalogować.';
};
}
}
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. (IMG:
style_emoticons/default/smile.gif)
Można zamknąć lub usunąć (IMG:
style_emoticons/default/smile.gif)