Промяна на паролата...

bobbykokala

Registered
Здравейте!
Имам си система за регистрация, имам и потребителски профили и възможност за промяна на профила. Нямам обаче форма за промяна на паролата и "Забравена парола". Ако е възможно, как да го направя това?
 
bobbykokala каза:
Здравейте!
Имам си система за регистрация, имам и потребителски профили и възможност за промяна на профила. Нямам обаче форма за промяна на паролата и "Забравена парола". Ако е възможно, как да го направя това?
Принципно промяна на паролата е лесно за изграждане а забравена парола не мога да кажа но според мен е малко по-трудно защото трябва да се създаде нова на случаен принцип и да се изпрати на имейлът.За да ти помогне някой с конкретен код трябва да покажеш кода от твоята система за регистрация. :?:
 
ето малко спретнато скриптче за забравена парола , по email :lol:

HTML:
<form method='post'><input name='email' /><input type='submit' name='go' value='Изпрати'/></form>
PHP:
<?
if(isset($_POST['go'])){ // ако е цакнат бутона
$nik = $_POST['email']; / /да вземе мейла от полето
if(mysql_num_rows(mysql_query("Select * from tablicata where email='$nik' ")) >= 1){ // проверяваме дали съществова такъв запис

$newpass  = rand(000000,999999); // произволни 6 чила за парола

$to      = $nik; // емаила на който ще праща
$subject = 'Forgot your password'; // заглавието на майла
$message = 'twoqta parola e $newpass , ne q zabrawqi !!!!'; // съобщението дето ще получава
mysql_query("Update tablicata set password = $newpass" where email='$email'"); // променяме старата парола с новата 
$headers = 'From: admin@tvoqtsait.com' . "\r\n" . // от кого е писмото
    'Reply-To: admin@tvoqtsait.com' . "\r\n";  // към кого да се обърне в случай че иска да отговори

mail($to, $subject, $message, $headers); // изпращаме всичко
echo "Gotowo"; // показваме , че е готово
}else{
echo "Няма такъв емайл .. "; // извеждаме грешка
}

}
?>

така този скрипт няма да ти работи точно по ради простата причина че фунцията ранд като я сложиш на 2 места и тя генерира числа 2 пъти демек в ДБ-то ти ще е една парола а в емайла ще е друга.. просто промени това с някоя друга функция и ще проработи , ще ме извиняваш ако имам грешка ама , за 3 мин.. толкова.. :)
 
ето ти една функция за генериране на парола ;)

PHP:
function GenPwd($length = 7)
{
  $password = ""; // Парола по подразбиране
  $possible = "0123456789bcdfghjkmnpqrstvwxyz"; // Позволени символи при генериране на парола
  
  $i = 0; 
    
  while ($i < $length) {    
    $char = substr($possible, mt_rand(0, strlen($possible)-1), 1);  
    if (!strstr($password, $char)) { 
      $password .= $char;
      $i++;
    }
  }
  return $password;
}
function GenKey($length = 7)
{
  $password = "";
  $possible = "0123456789abcdefghijkmnopqrstuvwxyz"; 
  
  $i = 0;   
  while ($i < $length) {    
    $char = substr($possible, mt_rand(0, strlen($possible)-1), 1);  
    if (!strstr($password, $char)) { 
      $password .= $char;
      $i++;
    }
  }
  return $password;

}
 
Използвах функцията на Мари0 и паролата не се сменя, а се изчиства полето. Друг проблем е, че текста в мейла е на маймуница.

Код:
<?php
if($_POST['email']) 
{ 
	$email = $_POST['email']; 
	$checkemail = mysql_query("SELECT username,password FROM users WHERE email='$email'"); 
	$row = mysql_fetch_array($checkemail); 
	$numrows = mysql_num_rows($checkemail); 
	if ($numrows!=0) { 
	$name = $row['username']; 
 

	function GenPwd($length = 7)
		{
			$password = ""; // Парола по подразбиране
			$possible = "0123456789bcdfghjkmnpqrstvwxyz"; // Позволени символи при генериране на парола

			$i = 0; 

			while ($i < $length) {    
				$char = substr($possible, mt_rand(0, strlen($possible)-1), 1);  
				if (!strstr($password, $char)) { 
					$password .= $char;
					$i++;
				}
			}
			return $password;
		}
	function GenKey($length = 7)
		{
			$password = "";
			$possible = "0123456789abcdefghijkmnopqrstuvwxyz"; 

			$i = 0;   
			while ($i < $length) {    
				$char = substr($possible, mt_rand(0, strlen($possible)-1), 1);  
				if (!strstr($password, $char)) { 
					$password .= $char;
					$i++;
					}
			}
			return $password;
		}

	
	// изпращаме паролата 
	$subject = "Вашата Парола"; 
	$message = "Уважаем $name, този e-mail е изпратен, защото вие сте забравили вашата парола. 
	Информация за вашия акаунт: 
	Username: $name 
	Password: $password

	Благодарим ви , 
	site.com"; 

	mail($email, $subject, $message, "From: admin@site.com");
	echo "<center>Парола е изпратена.</center>"; 
	}else{ 
	echo "<center>Въведеният e-mail не съществува в нашата база данни.</center>"; 
	} 
	
	mysql_query("UPDATE users SET password='$password' WHERE email='$email'");
} 
	
?>
 
ще го пишеш на EN бе.. :D
добавяш това кум майла..
PHP:
 $header. = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n";
и си ready
 
това след като е функция,как мислиш,че се използва.не слагай в мейла променливата а самото генериране :idea:

PHP:
$pwd = GenPwd();
	$hash = PwdHash($pwd);

и после в мейла:
PHP:
Парола: $pwd \n

при мен тази функция работи безотказно ;)
 
Значи, вместо да използвам функцията, която ми даде по рано да сложа
Код:
$pwd = GenPwd();

	$hash = PwdHash($pwd);
?
Съжалявам за неинформираността ми, но незнам как се работи с функции.
 
еми виж как се казва функцията и ще разбереш,че съм ти написал едно и също :D

function GenPwd() == $pwd= GenPwd

това не е код,а просто искам да ти покажа,че двете неща със едно и също име ;)
 

Back
Горе