Cytat(artuross @ 2.04.2013, 13:31:00 )

Moze nie poprawnie zapisujesz? Tzn. moze haslo wygenerowane przez Ciebie nie ma takiego samego algorytmu sprawdzania jak haslo uzywane do logowania?
Raczej nie, wszystko jest chyba dobrze użyte. Sprawdzałem plik logowania i tworzenia użytkownika i wykorzystywałem tamte funkcje.
Jak napisałem skrypt z podaniem tylko nowego hasła bez sprawdzania starego wszystko dobrze się zmienia.
A oto ten skrypt:
<?php
require 'header.php'; // Dołącz początkowy kod HTML
require 'config.php'; // Dołącz plik konfiguracyjny i połączenie z bazą
require_once 'user.class.php';
/**
* Sprawdź czy formularz został wysłany
*/
if ($_POST['send'] == 1) {
// Zabezpiecz dane z formularza przed kodem HTML i ewentualnymi atakami SQL Injection
// Zapisz dane użytkownika o podanym ID, do zmiennej $profile
$id = $_GET['id'];
/**
* Jeśli wystąpiły jakieś błędy, to je pokaż
*/
if ($errors != '') {
echo '<p class="error">Zmiana hasła nie powiodła się:<br />'.$errors.'</p>'; }
else {
// Posól i zasahuj hasło
$pass = user::passSalter($pass);
// Zapisz dane do bazy
mysql_query("UPDATE `users` SET `pass`='$newpass' WHERE `id`='$id';") or
die ('<p class="error">Wystąpił błąd podczas zmiany hasła.</p>'); echo '<p class="success">Hasło zostało poprawnie zmienione</p>'; }
}
?>
<?php
if (user::isLogged()) {
echo '<center><form method="post" action=""> <label for="pass">Hasło:</label>
<input maxlength="32" type="password" name="pass" id="pass" />
<input type="hidden" name="send" value="1" />
<input type="submit" value="Zmień" />
</form></br>
<a href="panel.php">Wróć do panelu</a>';
}
else {
echo 'Funkcja dostępna tylko dla zalogowanych. <a href="index.php">Logowanie</a>'; }
?>
A to skrypt z sprawdzaniem starego hasła i jeżeli ono się zgadza to zmienia na nowe - no i tu jest problem bo zapisuje jakoś inaczej zakodowane hasło (nie wiem czemu).
Oto kod:
<?php
require 'header.php'; // Dołącz początkowy kod HTML
require 'config.php'; // Dołącz plik konfiguracyjny i połączenie z bazą
require_once 'user.class.php';
/**
* Sprawdź czy formularz został wysłany
*/
if ($_POST['send'] == 1) {
// Zabezpiecz dane z formularza przed kodem HTML i ewentualnymi atakami SQL Injection
// Zapisz dane użytkownika o podanym ID, do zmiennej $profile
$id = $_GET['id'];
// Posól i zasahuj hasło
$pass = user::passSalter($pass);
// Posól i zasahuj hasło
$newpass = user::passSalter($newpass);
/**
* Jeśli wystąpiły jakieś błędy, to je pokaż
*/
if ($errors != '') {
echo '<p class="error">Zmiana hasła nie powiodła się:<br />'.$errors.'</p>'; }
// Sprawdź, czy użytkownik o podanym haśle isnieje w bazie danych
if ($userExists[0] == 0) {
// Użytkownik nie istnieje w bazie
echo '<center><p class="error">Hasło nie zostało zmienione - podałeś złe hasło!</p></center>'; }
else {
// Zapisz dane do bazy
mysql_query("UPDATE `users` SET `pass`='$newpass' WHERE `id`='$id';") or
die ('<p class="error">Wystąpił błąd podczas zmiany hasła.</p>'); echo '<p class="success">Hasło zostało poprawnie zmienione</p>'; }
}
?>
<?php
if (user::isLogged()) {
echo '<center><form method="post" action=""> <label for="pass">Stare hasło:</label>
<input maxlength="32" type="password" name="pass" id="pass" />
<label for="newpass">Nowe hasło:</label>
<input maxlength="32" type="password" name="newpass" id="newpass" />
<input type="hidden" name="send" value="1" />
<input type="submit" value="Zmień" />
</form></br>
<a href="panel.php">Wróć do panelu</a>';
}
else {
echo 'Funkcja dostępna tylko dla zalogowanych. <a href="index.php">Logowanie</a>'; }
?>