php şifremi unuttum yapımı

sifre_sifirlama.php

<?php

/*ini_set('display_errors', 1);
error_reporting(E_ALL);*/
header('Content-Type: text/html; charset=utf-8');
$dbhost ="localhost";
$dbveritabani = "deneme";
$dbkullanici = "root";
$dbsifre = "";
$dbadi = "deneme";
 $baglanti = mysql_connect($dbhost,$dbkullanici,$dbsifre);
 $dbsec = mysql_select_db('deneme');
 mysql_query("SET NAMES UTF8");  // veri tabanından türkçe yazıları bozmadan çekme işlemi yapması için
 

 $length = 32;
$string = "";
$characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-=+"; // change to whatever characters you want
while ($length > 0) {
    $string .= $characters[mt_rand(0,strlen($characters)-1)];
    $length -= 1;
}
 $sifirlama_anahtar = $string;

if (true === isset($_POST['email'])) {
	
  $sifirlama_anahtar = sha1($_POST['email'] . $sifirlama_anahtar);
  $email = $_POST['email'];
} else {
	
	echo 'email girilmedi';
	return;
}

$host = $_SERVER['HTTP_HOST'];

$emailSorgu = mysql_query("SELECT * FROM uyelik WHERE email = '" . $email . "'");

// Eğer email sistemde mevcut ise parola sıfırlama maili gönnder
if (mysql_num_rows($emailSorgu) > 0) {
	
	require 'PHPMailerAutoload.php';
	
	$emailBilgileri = mysql_fetch_assoc($emailSorgu);
	$isim			= $emailBilgileri['isim'];
	$soyisim		= $emailBilgileri['soyisim'];
	$sifirlamaAdres = 'sifre_yenile.php?anahtar=' . $sifirlama_anahtar;
	$konu			= 'Şifre Hatırlatma';
	$mesaj			= '<p>Sayın&nbsp;' . $isim . ' ' . $soyisim . ',</p>
						<p>Şifremi sıfırlama adresi aşağıdadır...</p>
						<p>Şifre sıfırlama adresi:&nbsp; <a href="http://' . $host . '/deneme/sifre_yenile.php?anahtar=' . $sifirlama_anahtar . '">Tıklayınız</a></p>
						';
	$headers  = 'MIME-Version: 1.0' . "rn";
	$headers .= 'Content-type: text/html; charset=utf-8' . "rn";
	
	$mail = new PHPMailer;

	$mail->isSMTP();                                      // Set mailer to use SMTP
	$mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
	$mail->SMTPAuth = true;    
	//$mail->SMTPDebug = 1;// Enable SMTP authentication
	$mail->Username = 'sedakilic13@gmail.com';                 // SMTP kullanıcı
	$mail->Password = 'aliseda1329';                           // SMTP sifre
	$mail->SMTPSecure = 'tls';                            // Enable encryption, 'ssl' also accepted
    $mail->Port = 587;
	$mail->CharSet = 'UTF-8';
	$mail->From = 'sedakilic13@gmail.com';
	$mail->FromName = 'Seda KILIÇ';
	$mail->addAddress('sedakilic13@gmail.com');     // Add a recipient
	//$mail->addCC('cmrysseda@gmail.com');     // Add a recipient
	$mail->addReplyTo('sedakilic13@gmail.com');

	$mail->isHTML(true);                                  // Set email format to HTML

	$mail->Subject = $konu;
	$mail->Body    = $mesaj;
	
	if(!$mail->send()) {
		echo 'Message could not be sent.';
		echo 'Mailer Error: ' . $mail->ErrorInfo;
	} else {
		$simdi = new DateTime();
		$simdi = $simdi->format('Y-m-d H:i:s');
		
		mysql_query("UPDATE `uyelik` SET `sifirlama_anahtar` = '" . $sifirlama_anahtar . "' , sifirlama_tarihi = '" . $simdi . ", onay_durum = 0' WHERE `email` = '" . $email . "'");
		echo 'Mail gönderildi.';
	}
	
} else {
	echo 'email sistemde mevcut değil';
	return;
}

	?>

sifre_yenile.php

<?php 
include 'baglanti.php';

$sifirlama_anahtar	 = $_GET['anahtar'];

$kayitvarmi = mysql_query('SELECT id FROM uyelik WHERE sifirlama_anahtar = "'. $sifirlama_anahtar. '"');

if (mysql_num_rows($kayitvarmi) == 0) {
	
	header('Location: index.php');
}
?>

HTML kısmını ise aşağıdaki kodları kullanarak oluşturabilir, kendinize göre düzenleyebilirsiniz.

<div class="container">
		  <div class="row text-center">
			  <form class="form-signin col-md-6 col-md-offset-3" role="form" method="post" action="sifre_degistir.php">
        <h2 class="form-signin-heading">Şifre Değiştirme</h2>
 <div class="form-group">
        <input type="text" class="form-control" name="parola" id="exampleInputEmail1" placeholder="Yeni Parola" />
 </div> 
 <div class="form-group">
        <input type="text" class="form-control" name="parolaonay" id="exampleInputEmail2" placeholder="Parola onay" />
 </div> <br>
 <button class="btn btn-lg btn-primary btn-block" type="submit">Parola Değiştir</button>
      </form> 
		  </div>
		  <div class="row">
	   <hr class="featurette-divider">
		<footer>	
        <p class="pull-right"><a href="#">Gizlilik </a> &middot; </p>
	        <p>Copyright &copy; 2014</p> 
		      </footer>
		  </div>

Şifresini unutanlar için ise şu dosyayı kullanmak mümkün:

sifre_hatirlatma.php

<div class="container">
		  <div class="row text-center">
			  <form class="form-signin col-md-6 col-md-offset-3" role="form" method="post" action="sifre_sifirlama.php">
        <h2 class="form-signin-heading">Şifre Hatırlatma</h2>
 <div class="form-group">
        <input type="email" class="form-control" name="email" id="exampleInputEmail1" placeholder="email" />
 </div> <br>
 <button class="btn btn-lg btn-primary btn-block" type="submit">Parolayı sıfırla</button>
      </form> 
		  </div>
		  <div class="row">
	   <hr class="featurette-divider">
		<footer>	
        <p class="pull-right"><a href="#">Gizlilik </a> &middot; </p>
	        <p>Copyright &copy; 2014</p> 
		      </footer>
		  </div>
	  </div>

sifre_degistir.php

<?php
include 'baglanti.php';

$sifre1 = $_POST["parola"]; // 1. sifreyi cek --
$sifre2 = $_POST["parolaonay"]; // 2. sifreyi cek --
$sifirlama_anahtar = $_POST['anahtar'];

if ($sifre1 != $sifre2){
	echo "İki şifre birbirine uyuşmuyor"; 
	header("Location: sifre_yenile.php?anahtar=" . $sifirlama_anahtar);
}

$sifre1 = sha1($sifre1);

$sorgu = "UPDATE uyelik SET sifre = '" . $sifre1.  "', onay_durum = '1', sifirlama_anahtar = '', sifirlama_tarihi = '0000-00-00 00:00:00' WHERE  sifirlama_anahtar = '" . $sifirlama_anahtar . "' ";
$dogrulama  = mysql_query($sorgu);

?>

 

Yorum Yazın

Email adresiniz yayınlanmayacak.