забравена парола

feweR

Registered
Здравейте имам код за забравена парола, работи но изпраща парола от сорта df7767d493cec3e0e2d6 (кодирана) как да го оправя кода е:


Код:
<?php
//попълвате информация за хост , бд потербител , бд парола и база данни
$dbhost='localhost';
$dbusername='root';
$dbuserpass='-----';
$dbname='------';

// свързаваме се с базата данни
mysql_connect ($dbhost, $dbusername, $dbuserpass);

if (!mysql_select_db($dbname)) die(mysql_error());

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'];
$password = $row['password'];

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

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

mail($email, $subject, $message, "From: <your@email.com>\nX-Mailer:PHP/" . phpversion());
echo "<center>Парола изпратена.</center>";
}else{
echo "<center>Въведеният e-mail не съществува в нашата база данни .</center>";
}
}
?>
<html>
<head>
<title>Забравена парола?</title>
</head>
<body>
<center>
Попълни e-mail-а с който си се регистрирал при нас и ние ще ви изпратим вашата парола от нашата база данни.<br />
<form action="forgot.php" method="POST">
E-mail Address: <input type="text" name="email" size="15" />
<input type="submit" value="Send!" />
</form>
</center>
</body>
</html>

от този урок е кода http://web-tourist.net/login/login/view.php?st=992
 
Значи в логин формата ти в скрипта за регистрация на потребител ти криптираш паролата и тя се записва в базата криптирана.
Та махни криптирането на паролата при регистрация на потребител и си готов.
 
Код:
<?php
$empty_fields_message = "<p>Моля попълнете всички неща във формата.</p>Натиснете <a class=\"two\" href=\"javascript:history.go(-1)\">тук</a> за да се върнете назад";
$email_address = $_POST['email_address'];
if (!isset($_POST['email_address'])) {
?>
<h2>Забравена парола</h2>
<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
    <p class="style3"><label for="email_address">Email:</label>
    <input type="text" title="Моля напишете вашият имейл адрес" name="email_address" size="30"/></p>
    <p class="style3"><label title="Нова парола">&nbsp</label>
    <input type="submit" value="Дай" class="submit-button"/></p>
</form>
<?php
}
elseif (empty($email_address)) {
    echo $empty_fields_message;
}
else {
$email_address=mysql_real_escape_string($email_address);
$status = "OK";
$msg="";
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);
if (!stristr($email_address,"@") OR !stristr($email_address,".")) {
$msg="Вашият имейл адрес не е верен<BR>"; 
$status= "NOTOK";}

echo "<br><br>";
if($status=="OK"){  $query="SELECT email,username FROM users WHERE email = '$email_address'";
$st=mysql_query($query);
$recs=mysql_num_rows($st);
$row=mysql_fetch_object($st);
$em=$row->email_address;
 if ($recs == 0) {  echo "<center><font face='Verdana' size='2' color=red><b>Не давам!</b><br> Съжаляваме, този имейл не съществува при нас .  </center>"; exit;}
function makeRandomPassword() { 
          $salt = "abchefghjkmnpqrstuvwxyz0123456789"; 
          srand((double)microtime()*1000000);  
          $i = 0; 
          while ($i <= 7) { 
                $num = rand() % 33; 
                $tmp = substr($salt, $num, 1); 
                $pass = $pass . $tmp; 
                $i++; 
          } 
          return $pass; 
    } 
    $random_password = makeRandomPassword(); 
    $db_password = md5($random_password); 
     
    $sql = mysql_query("UPDATE users SET password='$db_password'  
                WHERE email='$email_address'"); 
     
    $subject = "Вашата парола за sait.com"; 
    $message = "Здравейте, това писмо съдържа новата Ви парола. 
     
    Нова парола: $random_password 
     
 
     
  Благодарим Ви! 
    Администрация
     
    Това е автоматично писмо, моля не отговаряйте!"; 
     
    mail($email_address, $subject, $message, "From: sait.com Forgot Password<admin@sait.com>\n 
        X-Mailer: PHP/" . phpversion()); 
    echo "Изпратихме Ви имейл съдържащ вашата парола.<br />"; 
 } 
 else {echo "<center><font face='Verdana' size='2' color=red >$msg <br><br><input type='button' value='Опитай пак' onClick='history.go(-1)'></center></font>";}
}
?>
 
а можеш и да направиш и да ти генерира нова парола и да я изпраща на съответния потребител
 
Код:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user '-----'@'localhost' (using password: NO) in /home/-----/public_html/-----/forgot.php on line 19

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/-----/public_html/-----/forgot.php on line 19
Къде задавам пътя до базата данни ?
 
Код:
 <?php
//попълвате информация за хост , бд потербител , бд парола и база данни
$dbhost='localhost';
$dbusername='root';
$dbuserpass='-----';
$dbname='------';

// свързаваме се с базата данни
mysql_connect ($dbhost, $dbusername, $dbuserpass);

if (!mysql_select_db($dbname)) die(mysql_error()); 
     
$empty_fields_message = "<p>Моля попълнете всички неща във формата.</p>Натиснете <a class=\"two\" href=\"javascript:history.go(-1)\">тук</a> за да се върнете назад";
$email_address = $_POST['email_address'];
if (!isset($_POST['email_address'])) {
?>
<h2>Забравена парола</h2>
<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
    <p class="style3"><label for="email_address">Email:</label>
    <input type="text" title="Моля напишете вашият имейл адрес" name="email_address" size="30"/></p>
    <p class="style3"><label title="Нова парола">&nbsp</label>
    <input type="submit" value="Дай" class="submit-button"/></p>
</form>
<?php
}
elseif (empty($email_address)) {
    echo $empty_fields_message;
}
else {
$email_address=mysql_real_escape_string($email_address);
$status = "OK";
$msg="";
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);
if (!stristr($email_address,"@") OR !stristr($email_address,".")) {
$msg="Вашият имейл адрес не е верен<BR>";
$status= "NOTOK";}

echo "<br><br>";
if($status=="OK"){  $query="SELECT email,username FROM users WHERE email = '$email_address'";
$st=mysql_query($query);
$recs=mysql_num_rows($st);
$row=mysql_fetch_object($st);
$em=$row->email_address;
 if ($recs == 0) {  echo "<center><font face='Verdana' size='2' color=red><b>Не давам!</b><br> Съжаляваме, този имейл не съществува при нас .  </center>"; exit;}
function makeRandomPassword() {
          $salt = "abchefghjkmnpqrstuvwxyz0123456789";
          srand((double)microtime()*1000000); 
          $i = 0;
          while ($i <= 7) {
                $num = rand() % 33;
                $tmp = substr($salt, $num, 1);
                $pass = $pass . $tmp;
                $i++;
          }
          return $pass;
    }
    $random_password = makeRandomPassword();
    $db_password = md5($random_password);

    $sql = mysql_query("UPDATE users SET password='$db_password' 
                WHERE email='$email_address'");
     
    $subject = "Вашата парола за sait.com";
    $message = "Здравейте, това писмо съдържа новата Ви парола.
     
    Нова парола: $random_password
     
 
     
  Благодарим Ви!
    Администрация
     
    Това е автоматично писмо, моля не отговаряйте!";
     
    mail($email_address, $subject, $message, "From: sait.com Forgot Password<admin@sait.com>\n
        X-Mailer: PHP/" . phpversion());
    echo "Изпратихме Ви имейл съдържащ вашата парола.<br />";
 }
 else {echo "<center><font face='Verdana' size='2' color=red >$msg <br><br><input type='button' value='Опитай пак' onClick='history.go(-1)'></center></font>";}
}
?>
 
Fakeheal каза:
Код:
 <?php
//попълвате информация за хост , бд потербител , бд парола и база данни
$dbhost='localhost';
$dbusername='root';
$dbuserpass='-----';
$dbname='------';

// свързаваме се с базата данни
mysql_connect ($dbhost, $dbusername, $dbuserpass);

if (!mysql_select_db($dbname)) die(mysql_error()); 
     
$empty_fields_message = "<p>Моля попълнете всички неща във формата.</p>Натиснете <a class="two" href="javascript:history.go(-1)">тук</a> за да се върнете назад";
$email_address = $_POST['email_address'];
if (!isset($_POST['email_address'])) {
?>
<h2>Забравена парола</h2>
<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
    <p class="style3"><label for="email_address">Email:</label>
    <input type="text" title="Моля напишете вашият имейл адрес" name="email_address" size="30"/></p>
    <p class="style3"><label title="Нова парола">&nbsp</label>
    <input type="submit" value="Дай" class="submit-button"/></p>
</form>
<?php
}
elseif (empty($email_address)) {
    echo $empty_fields_message;
}
else {
$email_address=mysql_real_escape_string($email_address);
$status = "OK";
$msg="";
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);
if (!stristr($email_address,"@") OR !stristr($email_address,".")) {
$msg="Вашият имейл адрес не е верен<BR>";
$status= "NOTOK";}

echo "<br><br>";
if($status=="OK"){  $query="SELECT email,username FROM users WHERE email = '$email_address'";
$st=mysql_query($query);
$recs=mysql_num_rows($st);
$row=mysql_fetch_object($st);
$em=$row->email_address;
 if ($recs == 0) {  echo "<center><font face='Verdana' size='2' color=red><b>Не давам!</b><br> Съжаляваме, този имейл не съществува при нас .  </center>"; exit;}
function makeRandomPassword() {
          $salt = "abchefghjkmnpqrstuvwxyz0123456789";
          srand((double)microtime()*1000000); 
          $i = 0;
          while ($i <= 7) {
                $num = rand() % 33;
                $tmp = substr($salt, $num, 1);
                $pass = $pass . $tmp;
                $i++;
          }
          return $pass;
    }
    $random_password = makeRandomPassword();
    $db_password = md5($random_password);

    $sql = mysql_query("UPDATE users SET password='$db_password' 
                WHERE email='$email_address'");
     
    $subject = "Вашата парола за sait.com";
    $message = "Здравейте, това писмо съдържа новата Ви парола.
     
    Нова парола: $random_password
     
 
     
  Благодарим Ви!
    Администрация
     
    Това е автоматично писмо, моля не отговаряйте!";
     
    mail($email_address, $subject, $message, "From: sait.com Forgot Password<admin@sait.com>\n
        X-Mailer: PHP/" . phpversion());
    echo "Изпратихме Ви имейл съдържащ вашата парола.<br />";
 }
 else {echo "<center><font face='Verdana' size='2' color=red >$msg <br><br><input type='button' value='Опитай пак' onClick='history.go(-1)'></center></font>";}
}
?>
Бях го пропуснал :?:
 
искам да попитам за този скрипт като опитам да го използвам работи без
грешка обновява паролата в база данни но не изпраща имеил на потребителя дава ми следното:

5537573q.jpg


http://prikachi.com/images/573/5537573q.jpg -линк към снимката.
та това smpt сървъра които ползвам ли го прави този проблем или проблема идва от самия скрипт.

тази грешка от index.php online 76 където пише идва от следния ред:

Код:
X-Mailer: PHP/" . phpversion());

благодаря ви за отговора.
 
аз малко го преправих може от тук да идва ето го и целия скрипт:

но немога да разбера в базата с данни променя паролата но неизпраща емаил до потребителя къде ми е грешката.
или пък smpt прави целия проблем благодаря предварително.

Код:
<?php
//попълвате информация за хост , бд потербител , бд парола и база данни
$dbhost='dbhost';
$dbusername='dbuser';
$dbuserpass='dbpass';
$dbname='db';
require_once("pvpgn_hash.php");
// свързаваме се с базата данни
mysql_connect ($dbhost, $dbusername, $dbuserpass);

if (!mysql_select_db($dbname)) die(mysql_error()); 
     
$empty_fields_message = "<p>Моля попълнете всички неща във формата.</p>Натиснете <a class=\"two\" href=\"javascript:history.go(-1)\">тук</a> за да се върнете назад";
$email_address = $_POST['email_address'];
if (!isset($_POST['email_address'])) {
?>
<h2>Забравена парола</h2>
<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
    <p class="style3"><label for="email_address">Email:</label>
    <input type="text" title="Моля напишете вашият имейл адрес от които е регистриран акаунта" name="email_address" size="30"/></p>
    <p class="style3"><label title="Нова парола">&nbsp</label>
    <input type="submit" value="изпрати нова парола" class="submit-button"/></p>
</form>
<?php
}
elseif (empty($email_address)) {
    echo $empty_fields_message;
}
else {
$email_address=mysql_real_escape_string($email_address);
$status = "OK";
$msg="";
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);
if (!stristr($email_address,"@") OR !stristr($email_address,".")) {
$msg="Вашият имейл адрес не е верен<BR>";
$status= "NOTOK";}

echo "<br><br>";
if($status=="OK"){  $query="SELECT * FROM pvpgn_bnet WHERE acct_email = '$email_address'";
$st=mysql_query($query);
$recs=mysql_num_rows($st);
$row=mysql_fetch_object($st);
$em=$row->email_address;
 if ($recs == 0) {  echo "<center><font face='Verdana' size='2' color=red><b>Не давам!</b><br> Съжаляваме, този имейл не съществува при нас .  </center>"; exit;}
function makeRandomPassword() {
          $salt = "abchefghjkmnpqrstuvwxyz0123456789";
          srand((double)microtime()*1000000); 
          $i = 0;
          while ($i <= 7) {
                $num = rand() % 33;
                $tmp = substr($salt, $num, 1);
                $pass = $pass . $tmp;
                $i++;
          }
          return $pass;
    }
    $random_password = makeRandomPassword();
    $db_password = pvpgn_hash($random_password);

    $sql = mysql_query("UPDATE pvpgn_bnet SET acct_passhash1='$db_password' 
                WHERE acct_email='$email_address'");
     
    $subject = "Вашата парола за sait.com";
    $message = "Здравейте, това писмо съдържа новата Ви парола.
     
    Нова парола: $random_password
     
 
     
  Благодарим Ви!
    Администрация
     
    Това е автоматично писмо, моля не отговаряйте!";
     
    mail($email_address, $subject, $message, "From: d.blackdevil-bg.info Forgot Password<admin@sait.com>\n
        X-Mailer: PHP/" . phpversion());
    echo "Изпратихме Ви имейл съдържащ вашата парола.<br />";
 }
 else {echo "<center><font face='Verdana' size='2' color=red >$msg <br><br><input type='button' value='Опитай пак' onClick='history.go(-1)'></center></font>";}
}
?>
 
Тази грешка идва от хостинга не е от кода ти ! преди време имах същия проблем просто самия хост не поддържа SMTP сървъри ! :)
 
благодаря ви и аз така си мислех намерих нов скрипт които работи с smpt.

ето го ако на някои му потрябва подобен скрипт които работи с smpt:
единствения му проблем при изпращане на емаила текста трябва да е на латиница.
иначе ако е на кирилица го дава на маимуница.

Код:
<?php 
if(!$_POST['submit']) echo "<form method='post'>
   Вашия имейл<input type='text' name='maill'/>
   <input type='submit' name='submit' value='Изпрати'/>
   </form>";
  if(isset($_POST['submit'])) {
  $maill= htmlspecialchars($_POST['maill']);
  $qu = mysql_query("SELECT * FROM `users` WHERE `email`='$maill'")or die(mysql_error()."Грешка:".__LINE__);
  $num=mysql_num_rows($qu);
  if($num==0) {echo 'Няма потребител с този имаил адрес';}
  else{
   $dyl="5";
   function randStr($length) {
        $key = "";
        $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
        for($i=0;$i<$length;$i++) {
         $key .= $pattern{rand(0,35)};
        }
        return $key;
   }
   $pass = randStr($dyl);
   $to    = $maill;
   $subject =  'Site.com --- Password ';
   $message = "Здравейте пиша ви по повод, че сте забравили вашата парола.Вашата нова парола за <a href='http://site.com'>site.com</a> е ".$pass." . <br> Моля сменете я при първа възможност!";
   $headers = 'From: support@site.com' . "\r\n" .
        'Reply-To: support@site.com' . "\r\n" .
        'Content-type: text/html; charset=UTF-8' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
   $mail=mail($to, $subject, $message, $headers);
   if($mail==true) echo "Вашата нова парола е изпратена на имейл <b>".$maill."</b>";
   else echo 'Има проблем с пращането на паролата ви.Моля свържете се с администратор :)';
   $password = md5($pass);
   $query = mysql_query("UPDATE `users` SET `password`='$password' WHERE `email`='$maill' ")or die(mysql_error()."Грешка:".__LINE__);
   }
}
}
?>
 

Back
Горе