Wiec tak.. Postępowałem według opisu "lukaswoj" z tego tematu http://forum.php.pl/index.php?showtopic=16...mp;hl=aktywacja
Zbudowałem skrypt który będzie wysyłał losowe hasło do użytkownika kiedy go zapomni. Hasła mam w kodowane w md5 w bazie danych dlatego użyłem skryptu który losuje nowe. Skrypt działa w następujący sposób: Wypełniasz formularz, jeśli email sie zgadza, wysyłany jest do Ciebie link z wygenerowanym przy rejestracji hashu. Jeśli klikniesz w link zostajesz przekierowany na strone ktora sprawdza czy hash zgadza sie z tym w bazie danych, jeśli tak to wysyła nowe, losowe hasło na email i generuje nowy hash ktory jest wprowadzany do bazy danych.
Prosze o pomoc, z góry dzięki.
//Edit: Udało mi sie rozwiązać mój problem, niżej podaje gotowy działający skrypt i prosze o przeniesienie do odpowiedniego działu np. z 'gotowcami'
Teraz kod.. pierw lost_pass.php
Kod
<?
// By: KriSsu
// E-mail: krzy49@gmail.com
// Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;)
?>
<br>
<table width="540">
<form action="confirm.php" method="post">
<tr><td>Email:</td><td>
<input type="text" name="email"></td></tr>
<tr><td>
<br>
<input type="submit" value="Wyślij nowe hasło!" />
</td></tr>
</form>
</table>
<br>
// By: KriSsu
// E-mail: krzy49@gmail.com
// Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;)
?>
<br>
<table width="540">
<form action="confirm.php" method="post">
<tr><td>Email:</td><td>
<input type="text" name="email"></td></tr>
<tr><td>
<br>
<input type="submit" value="Wyślij nowe hasło!" />
</td></tr>
</form>
</table>
<br>
confirm.php:
Kod
<?
// By: KriSsu
// E-mail: krzy49@gmail.com
// Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;)
$dbhost = 'localhost'; // Serwer bazy danych
$dbuser = 'root'; // Nazwa użytkownika bazy danych
$dbpass = 'kriss49'; // Hasło użytkownika bazy danych
$dbname = 'users'; // Nazwa bazy danych
// Połącz z bazą danych, jeśli wystąpią problemy, wyświetl błąd
$dbc = @mysql_connect ($dbhost, $dbuser, $dbpass) or die ('Nie można połączyć sie z bazą danych. Przepraszamy z niedogodności.');
mysql_select_db ($dbname) or die ('Problemy z baza danych. Przepraszamy z niedogodności');
// Pobierz dane gdzie email = '$_POST[email]'
$email = $_POST[email];
$uchwyt = mysql_query("SELECT * FROM users WHERE email='$_POST[email]'") or die(mysql_error());
$row = mysql_num_rows($uchwyt);
// Jeśli istnieje, wyślij email z hash'em
if ($row == 1)
{
$query = "SELECT * FROM users WHERE email='$_POST[email]'";
$result = mysql_query ($query);
while($wiersz=mysql_fetch_array ($result))
{
$email_wiadomosc = "http://localhost/new_pass.php?id=$wiersz[id]hash=$wiersz[hash]";
}
$email_temat = "Nowe hasło";
if(mail($email, $email_temat, $email_wiadomosc)){
echo "Twoje nowe hasło zostało wysłane na podany adres e-mail.";
}
else {
echo "Nie udało się wysłać wiadomości, przepraszamy.";
}
}
// Jeśli nie istnieje, wyświetl błąd
elseif ($row == 0)
{
echo 'Podany adres e-mail nie znajduje w naszej bazie danych!';
}
?>
// By: KriSsu
// E-mail: krzy49@gmail.com
// Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;)
$dbhost = 'localhost'; // Serwer bazy danych
$dbuser = 'root'; // Nazwa użytkownika bazy danych
$dbpass = 'kriss49'; // Hasło użytkownika bazy danych
$dbname = 'users'; // Nazwa bazy danych
// Połącz z bazą danych, jeśli wystąpią problemy, wyświetl błąd
$dbc = @mysql_connect ($dbhost, $dbuser, $dbpass) or die ('Nie można połączyć sie z bazą danych. Przepraszamy z niedogodności.');
mysql_select_db ($dbname) or die ('Problemy z baza danych. Przepraszamy z niedogodności');
// Pobierz dane gdzie email = '$_POST[email]'
$email = $_POST[email];
$uchwyt = mysql_query("SELECT * FROM users WHERE email='$_POST[email]'") or die(mysql_error());
$row = mysql_num_rows($uchwyt);
// Jeśli istnieje, wyślij email z hash'em
if ($row == 1)
{
$query = "SELECT * FROM users WHERE email='$_POST[email]'";
$result = mysql_query ($query);
while($wiersz=mysql_fetch_array ($result))
{
$email_wiadomosc = "http://localhost/new_pass.php?id=$wiersz[id]hash=$wiersz[hash]";
}
$email_temat = "Nowe hasło";
if(mail($email, $email_temat, $email_wiadomosc)){
echo "Twoje nowe hasło zostało wysłane na podany adres e-mail.";
}
else {
echo "Nie udało się wysłać wiadomości, przepraszamy.";
}
}
// Jeśli nie istnieje, wyświetl błąd
elseif ($row == 0)
{
echo 'Podany adres e-mail nie znajduje w naszej bazie danych!';
}
?>
generator.php:
Kod
<?
// By: KriSsu
// E-mail: krzy49@gmail.com
// Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;)
$tabelka = '1234567890qwertyuiopasdfghjkklzxcvbnm';
$new_hash = '';
for ($i=0; $i<30; $i++) // 30 to długość ciągu
{
$new_hash .= $tabelka[rand()%(strlen($tabelka))];
}
?>
<?
function random_string($length){
$string = md5(time());
$string = substr($string,0,$length);
return($string);
}
$new_pass = random_string(8);
?>
// By: KriSsu
// E-mail: krzy49@gmail.com
// Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;)
$tabelka = '1234567890qwertyuiopasdfghjkklzxcvbnm';
$new_hash = '';
for ($i=0; $i<30; $i++) // 30 to długość ciągu
{
$new_hash .= $tabelka[rand()%(strlen($tabelka))];
}
?>
<?
function random_string($length){
$string = md5(time());
$string = substr($string,0,$length);
return($string);
}
$new_pass = random_string(8);
?>
i ostatni new_pass.php:
Kod
<?
// By: KriSsu
// E-mail: krzy49@gmail.com
// Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;)
if (strlen($_GET['hash']) != 30){
die();
}
else
{
$dbhost = 'localhost'; // Serwer bazy danych
$dbuser = 'root'; // Nazwa użytkownika bazy danych
$dbpass = ''; // Hasło użytkownika bazy danych
$dbname = 'english_users'; // Nazwa bazy danych
// Połącz z bazą danych, jeśli wystąpią problemy, wyświetl błąd
$dbc = @mysql_connect ($dbhost, $dbuser, $dbpass) or die ('Nie można połączyć sie z bazą danych. Przepraszamy z niedogodności.');
mysql_select_db ($dbname) or die ('Problemy z baza danych. Przepraszamy z niedogodności');
// Pobierz dane gdzie hash = '$_GET[key]'
$uchwyt = mysql_query("SELECT * FROM users WHERE hash='$_GET[hash]'") or die(mysql_error());
$row = mysql_num_rows($uchwyt);
// Jeśli istnieje, wygeneruj nowy hash i wyślij email z nowym wygenerowanym hasłem
if ($row == 1)
{
// Podłączanie skryptu generującego nowy hash i nowe hasło
include('generator.php');
// Pobieranie emaila użytkownika
$query = "SELECT * FROM users WHERE hash='$_GET[hash]'";
$result = mysql_query ($query);
while($wiersz=mysql_fetch_array ($result))
{
$email = "$wiersz[email]";
}
$email_temat = "Temat";
$email_wiadomosc = "$new_pass";
// Wysyłanie wiadomości z hasłem
if(mail($email, $email_temat, $email_wiadomosc)){
echo('Nowe hasło zostało wysłane na twój adres e-mail!');
}
else {
echo "Nie udało się wysłać wiadomości, przepraszamy.";
}
$pytanie = "UPDATE `users` SET `hash`='$new_hash', `pass`='$new_pass' WHERE `id`='$_GET[id]'";
$edit = mysql_query ($pytanie);
}
// Jeśli nie istnieje, wyświetl błąd
elseif ($row == 0)
{
echo('Błędy link potwierdzający!');
}
}
?>
// By: KriSsu
// E-mail: krzy49@gmail.com
// Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;)
if (strlen($_GET['hash']) != 30){
die();
}
else
{
$dbhost = 'localhost'; // Serwer bazy danych
$dbuser = 'root'; // Nazwa użytkownika bazy danych
$dbpass = ''; // Hasło użytkownika bazy danych
$dbname = 'english_users'; // Nazwa bazy danych
// Połącz z bazą danych, jeśli wystąpią problemy, wyświetl błąd
$dbc = @mysql_connect ($dbhost, $dbuser, $dbpass) or die ('Nie można połączyć sie z bazą danych. Przepraszamy z niedogodności.');
mysql_select_db ($dbname) or die ('Problemy z baza danych. Przepraszamy z niedogodności');
// Pobierz dane gdzie hash = '$_GET[key]'
$uchwyt = mysql_query("SELECT * FROM users WHERE hash='$_GET[hash]'") or die(mysql_error());
$row = mysql_num_rows($uchwyt);
// Jeśli istnieje, wygeneruj nowy hash i wyślij email z nowym wygenerowanym hasłem
if ($row == 1)
{
// Podłączanie skryptu generującego nowy hash i nowe hasło
include('generator.php');
// Pobieranie emaila użytkownika
$query = "SELECT * FROM users WHERE hash='$_GET[hash]'";
$result = mysql_query ($query);
while($wiersz=mysql_fetch_array ($result))
{
$email = "$wiersz[email]";
}
$email_temat = "Temat";
$email_wiadomosc = "$new_pass";
// Wysyłanie wiadomości z hasłem
if(mail($email, $email_temat, $email_wiadomosc)){
echo('Nowe hasło zostało wysłane na twój adres e-mail!');
}
else {
echo "Nie udało się wysłać wiadomości, przepraszamy.";
}
$pytanie = "UPDATE `users` SET `hash`='$new_hash', `pass`='$new_pass' WHERE `id`='$_GET[id]'";
$edit = mysql_query ($pytanie);
}
// Jeśli nie istnieje, wyświetl błąd
elseif ($row == 0)
{
echo('Błędy link potwierdzający!');
}
}
?>