Master dan Suhu DWH...
Bolehkan saya minta pencerahan sedikit terkait pembuatan "FORGOT PASSWORD" atau lupa password,
Saya sudah migrasi web member area dari MySQL ke MySQLi, namun ada yang terlewatkan tentang kode "FORGOT PASSWORD" yang masih pakai MySQL, mau saya migrasikan ke MySQL
Kode Forgot.php Sebelumnya MySQL :
Saya ubah menjadi MySQLi :
Setelah kami ubah, ketika user klik tombol Forgot Password (lupa password), password baru sudah berhasil terkirim ke email user, namun ketika login, ternyata password belum berubah...
Saya curiga kesalahan pada kode :
// update password baru ke database (jika pengiriman email sukses)
$query = "UPDATE SET password='$password' WHERE UserId = '$UserId'";
$hasil = mysqli_query($x, $query);
Adakah kode MySQLi kami yang salah ??
Semoga Suhu dan master berkenan memberi pencerahannya...
Bolehkan saya minta pencerahan sedikit terkait pembuatan "FORGOT PASSWORD" atau lupa password,
Saya sudah migrasi web member area dari MySQL ke MySQLi, namun ada yang terlewatkan tentang kode "FORGOT PASSWORD" yang masih pakai MySQL, mau saya migrasikan ke MySQL
Kode Forgot.php Sebelumnya MySQL :
Code:
<html>
<head>
<title>Reset Password</title>
<style>
body {background:#20B2AA; padding:0px; margin:0px}
h3,h4 {color:#ffffff; text-align:center; font-family:Arial, Helvetica, sans-serif; font-size:20px; margin:20px;}
.wrapper-f{width:300px; margin:auto; padding:40px 20px 20px 20px; background:#E84C3D; margin-top:5%; min-height:120px;}
.wrapper-f label {color:#ffffff;}
.wrapper-f input {padding:5px; background:#eeeeee; border:0px; color:#333; width:98%; margin-bottom:10px;}
.wrapper-f input:focus{ background:#ccc;}
.wrapper-f .button {padding:10px 20px 10px 20px; color:#ffffff; background:#191970; margin-top:10px; cursor:pointer}
.wrapper-f .button:hover {background:#00BFFF;}
.warning {background:#FF9900; color:#ffffff; padding:10px; border-radius:5px; border:1px; text-align:center;margin:auto;
width:400px; margin-top:20px;}
</style>
</head>
<body>
<h3>FORGOT PASSWORD</h3>
<h4>Forgotten your password? Enter your email address below to begin the reset process.</h4>
<div class="wrapper-f">
<form action="forgot.php" method="post">
<label>Masukkan Email anda</label>
<input name="email" type="email" placeholder="Enter Email" required oninvalid="this.setCustomValidity('Masukkan Email Dengan benar oke Tuan')">
<input class="button" name="act_resset" type="submit" value="Submit">
</form>
</div>
<div style="width:600px; margin:auto">
<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = 'XXXXXXXXX';
$mysql_database = 'databaseku';
$x = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die(mysql_error());
mysql_select_db($mysql_database,$x);
///////////////////////////////////////////////////////////////////////
if (isset($_POST['act_resset'])) {
$password="1A2B4HTjsk5kwhadbwlff"; $panjang='8'; $len=strlen($password);
$start=$len-$panjang; $xx=rand('0',$start);
$yy=str_shuffle($password);
$passwordbaru=substr($yy, $xx, $panjang);
$email = trim(strip_tags($_POST['email']));
$password = mysql_real_escape_string(htmlentities((MD5($passwordbaru))));
// mencari alamat email si user
$query = "SELECT * FROM pengguna WHERE email ='$email'";
$hasil= mysql_query($query);
$data = mysql_fetch_array($hasil);
$cek = mysql_num_rows($hasil);
$UserId = strip_tags($data['UserId']);
$email = strip_tags($data['email']);
$nama = strip_tags($data['nama']);
$username =trim(strip_tags($data['user']));
if ($cek == 1) {
// title atau subject email
$title = "Permintaan Password Baru";
// isi pesan email disertai password
$pesan = "Kami telah reset ulang password ".$nama." Dan anda dapat login kembali ke member area kami \n\n
DETAIL AKUN ANDA :
\nUsername : ".$username."
\nNew Password: ".$passwordbaru."
\n\n PESAN NO-REPLY";
// header email berisi alamat pengirim
$header = "From: New Password Unmetered.co.id - <[email protected]>";
// mengirim email
$kirimEmail = mail($email, $title, $pesan, $header);
// cek status pengiriman email
if ($kirimEmail) {
// update password baru ke database (jika pengiriman email sukses)
$query = "UPDATE pengguna SET password='$password' WHERE UserId = '$UserId'";
$hasil = mysql_query($query);
if ($hasil)
echo'
<div class="warning">Password baru berhasil direset dan dikirim ke email "'.$email.'" Silahkan cek di kotak inbox atau kotak SPAM email</div></br><hr>';
}
else {
echo'<div class="warning">Pengiriman Password baru ke email gagal</div>';
}
}
else {
echo'<div class="warning">Alamat Email tidak ditemukan</div>';
}}
?>
</div>
</body>
</html>
Saya ubah menjadi MySQLi :
Code:
<html>
<head>
<title>Reset Password</title>
<style>
body {background:#20B2AA; padding:0px; margin:0px}
h3,h4 {color:#ffffff; text-align:center; font-family:Arial, Helvetica, sans-serif; font-size:20px; margin:20px;}
.wrapper-f{width:300px; margin:auto; padding:40px 20px 20px 20px; background:#E84C3D; margin-top:5%; min-height:120px;}
.wrapper-f label {color:#ffffff;}
.wrapper-f input {padding:5px; background:#eeeeee; border:0px; color:#333; width:98%; margin-bottom:10px;}
.wrapper-f input:focus{ background:#ccc;}
.wrapper-f .button {padding:10px 20px 10px 20px; color:#ffffff; background:#191970; margin-top:10px; cursor:pointer}
.wrapper-f .button:hover {background:#00BFFF;}
.warning {background:#FF9900; color:#ffffff; padding:10px; border-radius:5px; border:1px; text-align:center;margin:auto;
width:400px; margin-top:20px;}
</style>
</head>
<body>
<h3>FORGOT PASSWORD</h3>
<h4>Forgotten your password? Enter your email address below to begin the reset process.</h4>
<div class="wrapper-f">
<form action="forgot.php" method="post">
<label>Masukkan Email anda</label>
<input name="email" type="email" placeholder="Enter Email" required oninvalid="this.setCustomValidity('Masukkan Email Dengan benar oke Tuan')">
<input class="button" name="act_resset" type="submit" value="Submit">
</form>
</div>
<div style="width:600px; margin:auto">
<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = 'XXXXXXXXXXXXXX';
$mysql_database = 'databaseku';
$x = mysqli_connect($mysql_host,$mysql_user,$mysql_password, $mysql_database);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
///////////////////////////////////////////////////////////////////////
if (isset($_POST['act_resset'])) {
$password="1A2B4HTjsk5kwhadbwlff"; $panjang='8'; $len=strlen($password);
$start=$len-$panjang; $xx=rand('0',$start);
$yy=str_shuffle($password);
$passwordbaru=substr($yy, $xx, $panjang);
$email = trim(strip_tags($_POST['email']));
$password = mysqli_real_escape_string(htmlentities((MD5($passwordbaru))));
// mencari alamat email si user
$query = "SELECT * FROM pengguna WHERE email ='$email'";
$hasil= mysqli_query($x, $query);
$data = mysqli_fetch_array($hasil);
$cek = mysqli_num_rows($hasil);
$UserId = strip_tags($data['UserId']);
$email = strip_tags($data['email']);
$nama = strip_tags($data['nama']);
$username =trim(strip_tags($data['user']));
if ($cek == 1) {
// title atau subject email
$title = "Permintaan Password Baru";
// isi pesan email disertai password
$pesan = "Kami telah reset ulang password ".$nama." Dan anda dapat login kembali ke member area kami \n\n
DETAIL AKUN ANDA :
\nUsername : ".$username."
\nNew Password: ".$passwordbaru."
\n\n PESAN NO-REPLY";
// header email berisi alamat pengirim
$header = "From: New Password Unmetered.co.id - <[email protected]>";
// mengirim email
$kirimEmail = mail($email, $title, $pesan, $header);
// cek status pengiriman email
if ($kirimEmail) {
// update password baru ke database (jika pengiriman email sukses)
$query = "UPDATE SET password='$password' WHERE UserId = '$UserId'";
$hasil = mysqli_query($x, $query);
if ($hasil)
echo'
<div class="warning">Password baru berhasil direset dan dikirim ke email "'.$email.'" Silahkan cek di kotak inbox atau kotak SPAM email</div></br><hr>';
}
else {
echo'<div class="warning">Pengiriman Password baru ke email gagal</div>';
}
}
else {
echo'<div class="warning">Alamat Email tidak ditemukan</div>';
}}
?>
</div>
</body>
</html>
Setelah kami ubah, ketika user klik tombol Forgot Password (lupa password), password baru sudah berhasil terkirim ke email user, namun ketika login, ternyata password belum berubah...
Saya curiga kesalahan pada kode :
// update password baru ke database (jika pengiriman email sukses)
$query = "UPDATE SET password='$password' WHERE UserId = '$UserId'";
$hasil = mysqli_query($x, $query);
Adakah kode MySQLi kami yang salah ??
Semoga Suhu dan master berkenan memberi pencerahannya...
Last edited: