Code lấy lại password trong php 2008-04-08 10:52:52

Em đang làm trang đăng kí bằng php,nhưng không biết làm thế nào để gửi lại password cho user khi mà họ quên password và yêu cầu gửi lại cho họ. Mong các bác giúp giùm em với,em cảm ơn.

Tra loi 14 comment(s) dinhhoangson 2008-04-08 10:52:52

gaulucky92 2008-04-08 11:39:57

trong mấy code web thông thường thì người ta tạo thêm 1 column "newpass" trong table members, khi người dùng đăng ký thành viên thì tự động tạo 1 dãy số bất kì để chèn vào newpass...
Nếu là tui thì cơ bản tui làm kiểu thế này:
- Tạo thêm column (field) newpass trong table members, trong code đăng ký thì cho generate 1 dãy số hay kí tự gì đấy, sau đó lưu dãy kí tự ngẫu nhiên đó vào column newpass
- Khi người dùng quên pass thì vào trang quên pass ghi email, nếu email khớp thì sẽ send giá trị trong newpass tương ứng về email người dùng đó, đồng thời cho run thêm câu query update: cập nhật lại pass gốc với giá trị của newpass, sau đó thì lại tiếp tục tạo 1 dãy kí tự mới cập nhật cho newpass cũ.
Về lý thuyết thì như vậy!
Tui cũng chưa làm thử nữa ^^ Bạn cứ thử xem ;))

@gaulucky92

dinhhoangson 2008-04-10 12:21:01


Mình mới học php nên chưa rành lắm, mình đã làm như thế này nhưng mà không chạy được. Bạn thử xem nó có sai chỗ nào không,nếu có thì sữa giùm mình với.
<?php
$email
= $_POST['email'];
include
"connect.php";
$sql = @mysql_query("select * from members where email = '$email'");
$result = @mysql_query($sql,$link);
if(
$email!="" )
{
if( @
mysql_num_rows($result) != 0)
{
print
"<center>Ban nhap sai hoac khong dung xin hay nhap lai</center>";
print
"<center><a href='login.php'>Dang Nhap</a> - <a href='register.php'>Dang Ky</a></center>";
}
else
{
$xuat = @mysql_fetch_object($result);
print
"<center>Username: ".$xuat->$username."</center>";
print
"<center>Password: ".$xuat->$password."</center>";
print
"<center>Hay <a href='login.php'>Dang Nhap</a> Lai</center>";
}
}
mysql_close();
?>

@dinhhoangson

hoangcn02 2008-04-10 10:37:23

Sửa chỗ này if( $email!="" ) thành if( $email!=="" )

= : gán
== : mới là so sánh :P

@hoangcn02

dinhhoangson 2008-04-10 11:10:00

không phải, if($email != "") là kiểm tra xem email nhập vào có phải là khoảng trắng hay không mà.

@dinhhoangson

hoangcn02 2008-04-10 11:44:10

Sorry, không thấy dấu ! nên cứ tưởng pạn so sánh. Thắc mắc chỗ này : tại sao  if( @mysql_num_rows($result) != 0) thì báo lỗi??

@hoangcn02

dinhhoangson 2008-04-10 05:35:37

à,mình làm bị sai chỗ này,phải là if( @mysql_num_rows($result) == 0)chứ không phải là != 0, và phải sữa lại chỗ này nữa
$sql = "select * from members where email = '$email'";
bỏ @mysql_query đi. Mình nghĩ như vậy là đúng, nhưng ngặt cái là nó không chịu chạy. Nhờ bạn góp ý giùm.

@dinhhoangson

gaulucky92 2008-04-10 10:27:50


hic bạn code lạ quá tui chưa thấy bao giờ :-S thêm @ vào trước code để làm gì vậy nhỉ..?
Đây là code mình vừa viết, đã test thử --> work khá tốt ^^.
<?php
mysql_connect
("localhost","root","");
mysql_select_db("post");
echo
"<center><H1>Lấy lại mật khẩu</H1>";
if (isset(
$_POST['email']) && $_POST['email'] != "")
{
$query = mysql_query("SELECT * FROM members WHERE email = \"$_POST[email]\"");
$count = mysql_num_rows($query);
if (
$count==0)
{
echo
"Email không có thật!";
}
else
{
while (
$row = mysql_fetch_array($query))
{
echo
"Bạn đã điền đúng email. Đây là thông tin tài khoản của bạn:<BR>";
// Có thể đặt code gửi mail ở đây. yêu cầu host hỗ trợ email...
//-------------------------------
// Cập nhật mật khẩu mới (pass), với giá trị của newpass đã được mã hóa md5 (cho bảo mật)
$pass = md5($row['newpass']); // Mã hóa md5 giá trị của newpass
mysql_query("UPDATE members SET pass = \"$pass\"");
// Tạo mật khẩu mới thay thế cho newpass
$newpass = rand(0123456789,9876543210); // Tạo dãy số ngẫu nhiên
mysql_query("UPDATE members SET newpass = \"$newpass\"");
echo
"Tên truy cập: <B>".$row['name']."</B><BR>";
echo
"Mật khẩu: <B>".$row['newpass']."</B>";
}
}
}
else
{
?>
Điền email của bạn vào đây:
<form method=post><input type=text size=40 name="email"><input type=submit value="Xác nhận"></form>
<?php
}
echo
"</center>";
?>


Nếu muốn, bạn có thể đặt thêm đoạn code gửi email để tăng tính bảo mật...

@gaulucky92

dinhhoangson 2008-04-11 02:59:20

Cảm ơn gaulucky92 rất nhiều, mình làm được rồi. Nếu có gì thì mình sẽ nhờ bạn giúp thêm.

@dinhhoangson

nguyenhuucuong484@yahoo.com 2011-11-30 09:44:02

có người nào biết làm ckeditor bằng php không cho mình xin đoạn code với hoặc gởi qua yahoo:nguyenhuucuong484@yahoo.com
cảm ơn rất nhiều

@nguyenhuucuong484@yahoo.com

Apache 2011-11-30 09:59:49

Hi ku Gấu :D.
cách của u cũng tạm ổn nhưng phải là run query đó sau khi check mail. nếu như ai chơi xấu u, cố tình vào chức năng quên pass, thì lúc đó pass của u bị đổi (do ko biết để check mail, nên ko biết; và gây phiền phức). nên qui trình fix lại theo mình như sau: sử dụng chức năg quên pass.
1. check email có đúng với khi reg ko? --> đúng gửi link kích hoạt (có mã hóa)
2. mở email và kích hoạt cái link đó; link này có tác dụng đổi pass mới (như gaulucky92); Còn ko kích hoạt thì vẫn dùng pass cũ.

@Apache

Bạn ơi cho mình hỏi tý 2013-01-23 15:57:13

@gaulucky92: Mình muốn đặt them đoạn code gửi mail thì phải làm thế nào bạn nhỉ

@Bạn ơi cho mình hỏi tý

nguyen quoc nhut 2013-03-01 13:21:55

jnhabfjkajksfafad

@nguyen quoc nhut

vodanh 2013-03-02 17:47:30

gaulucky92 oy?cho mình hỏi tí là sao mình nhập đúng email mà nó cứ bảo là email k có thật là sao?

@vodanh

ronn 2017-06-03 20:46:27

@gaulucky92: bạn ơi chỉ làm trang này mình với
.... nếu có thể https://www.facebook.com/Ron7.Realmadrid bạn ib mình nha..cmon nhiều a

@ronn

Reply