Cytat(Michael2318 @ 14.04.2013, 20:06:51 )

do tabeli z userami:
ALTER TABLE `users` ADD `hash_change_password` varchar(200) NOT NULL DEFAULT '0';
Po wypełnieniu formularza generujesz sobie losowy ciąg znaków i wysylasz go gościowi na maila + aktualizujesz w bazie przy tym userze pole `hash_change_password` na wartość ciągu, który przed chwila wygenerowales.
User wchodzi na ta twoja strone, podaje email i losowy ciag znakow. Sprawdzasz czy user o takim adresie email ma przypisany taki ciag znakow jaki user podal. Jesli tak to generujesz sobie nowy losowy ciag znakow, wyswietlasz go userowi na ekran, a w bazie aktualizujesz mu to haslo na nowo-wygenerowane (w md5) + zmieniasz `hash_change_password` na 0.
Do tego dorzuc warunek, ze jesli hash_change_password jest równe 0 to z góry zakładasz, ze podany ciag jest niepoprawny (takie zabezpieczenie, na wypadek jakby ktos podal Ci adres email i jako wygenerowany ciag znakow cyfrę 0).
Nie bardzo to ogarne...
Możesz mi bardziej to wyjaśnić mam taki kod do przypominania i wysylania danych na maila:
<?php
if (!isset($_SESSION['id'])) { // dostęp dla niezalogowanego użytkownika
include 'inc/db.php'; // połączenie się z bazą danych
$tabela = 'user'; // zdefiniowanie tabeli MySQL
$tabela2 = 'kody_haslo'; // zdefiniowanie tabeli MySQL
if ($_POST['wyslane']) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
// użytkownikowi zostaje zmienione hasło, które system wygenerował
$kod = uniqid('haslo_'); // tworzenie kodu
$wynik = mysql_query("INSERT INTO $tabela2 VALUES('', '$kod', '$email')");
//-------------------------------------------------------------------------------//
$wynik = mysql_query("SELECT * FROM $tabela WHERE mail='$email'");
$email = $informacja["mail"];
$id = $informacja["id"];
$haslo = $informacja["haslo"];
$list="
$email,
Aby zakończyć proces resetowania hasła w naszym serwisie, odwiedź ten adres:
<a href="http://strona.pl/zmienhaslo" target="_blank">http://strona.pl/zmienhaslo</a>
i podaj poniższe dane, potrzebne do zresetowania hasła:
Identyfikator: $id
Kod aktywacji: $kod
Dziękujemy.
";
mail($email, "Przypomnienie hasla", $list, "From: <noreply@strona.pl>");
echo "<div
class='msg success'>E
-mail zawierający dalsze instrukcje został wysłany
. Powinieneś go otrzymać w ciągu
5 minut
(zwykle trwa to krócej
).</div
>"; } else {
echo '<div class="msg error">Nie możemy znaleźć reklamy na podstawie wpisanego adresu e-mail. Proszę sprawdź te informacje i wypełnij ponownie formularz.</div>';
}
mysql_close($polaczenie);
}
// tworzenie formularza HTML
echo <<< KONIEC
<form class="form" action="przypomnij" method="post">
<input type="hidden" name="wyslane" value="TRUE" />
<p>
<div class="label"><label for="email">E-mail</label></div>
<input type="text" name="email" id="email" />
</p>
<p class="zaloguj"><input type="submit" value="Przypomnij" /></p>
KONIEC;
} else {
header('Location: /index.php'); // zalogowany użytkownik zostaje przekierowany na stronę główną
}
?>