Witam! Jak zwykle gdy wszystkie źródła i mózg zawodzą, zawsze można znaleźć tu pomoc :P
Tym razem kwestia dotyczy PHP, a konkretniej logowania. Otóż mam działający kod rejestracji, który działa i wpisuje wszystkie konkretne dane do do bazy danych, łącznie z zaszyfrowanym hasłem.
SQL: SHA('$password1') < - tym sposobem szyfruję zmienną hasła, przez co w bazie danych dodaje się ciąg cyfr zamiast prawdziwego hasła.
Problem natomiast jest z logowaniem. Przy wpisywaniu danych wyskakuje, że nazwa lub hasło jest błędne. Po głębszym studiowaniu problemu doszedłem do wniosku, iż wina tkwi w logowaniu. Mój kod, który przetwarza zaszyfrowaną postać na normalną, jakoś tego nie robi... natomiast jeśli wpisze ciąg cyfr w polu hasła, loguje się pomyślnie. Problem tkwi więc w tym, że mój skrpyt nie jest jakoś w stanie rozszyfrować hasła. Używam SHA, choć próbowałem zmieniać na sha1 czy md5... Dorzucam kod i liczę na pomoc, z góry dziękuję ;)
PHP:
/ Jeśli użytkownik nie jest zalogowany, należy spróbować go zalogować.
if (!isset($_SESSION['user_id'])) {
if (isset($_POST['submit'])) {
// Łączenie się z bazą danych.
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// Pobieranie danych logowania wpisanych przez użytkownika.
$user_username = mysqli_real_escape_string($dbc, trim($_POST['username']));
$user_password = mysqli_real_escape_string($dbc, trim($_POST['password']));
if (!empty($user_username) && !empty($user_password)) {
// Wyszukiwanie nazwy użytkownika i hasła w bazie danych.
$query = "SELECT user_id, username FROM gracze WHERE (username = '$user_username' AND password = SHA('$user_password'))";
$query = "SELECT user_id, username FROM gracze WHERE (username = '$user_username' AND password = '$user_password')";
$data = mysqli_query($dbc, $query);
if (mysqli_num_rows($data) == 1) {
// Dane logowania są poprawne, dlatego należy ustawić zmienne sesji z
// identyfikatorem i nazwą użytkownika, a następnie przejść do strony głównej.
$row = mysqli_fetch_array($data);
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['username'] = $row['username'];
setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30)); // Wygasa za 30 dni.
setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30)); // Wygasa za 30 dni.
$home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/tribe.php';
header('Location: ' . $home_url);
}
else {
// Para nazwa użytkownika - hasło jest nieprawidłowa, dlatego należy ustawić komunikat o błędzie.
$error_msg = 'Musisz podać poprawną parę nazwa - hasło, aby się zalogować.';
}
}
else {
// Użytkownik nie podał pary nazwa - hasło, dlatego należy ustawić komunikat o błędzie.
$error_msg = 'Musisz podać parę nazwa - hasło, aby się zalogować.';
}
}
}
HTML:
form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<fieldset>
<legend><b>LOGOWANIE</b></legend>
<label for="username">Nazwa użytkownika:</label>
<input type="text" name="username" value="<?php if (!empty($user_username)) echo $user_username; ?>" /><br />
<label for="password">Hasło:</label>
<input type="password" name="password" />
<br />
<br />
<input type="submit" value="Zaloguj" name="submit" />
</fieldset>
</form>