Tạo trang đăng ký qua các bước như tạo table users, tạo form, kiểm lỗi, lưu data vào table, kiểm tra username bằng ajax, gửi mail kích hoạt.
1. Tạo database và bảng users (nếu chưa có)
- Tạo database hocPHP
- Tạo table users có 11 field : id, tendangnhap, matkhau, hoten, email, ngaysinh, phai, ngaydangky, idgroup, active, randomkey
- Nhập vài users:
- ratvui/Vu1TungPhutG1@y
- ratbuon/Bu0nTungPhutG1@y
2. Tạo form đăng ký
- Sử dụng code hỗ trợ của bootstrap:
- Chú ý sử dụng các thuộc tính: method của form, placeholder, autocomplete=”new-password” , for của label
3. Xử lý khi submit
- Hiện $_POST bằng print_r
- Lấy 6 giá trị trong $_POST : hoten, tendangnhap, matkhau, email, ngaysinh, phai
- Lưu vào db và thông báo
- Tạo trang thongbao.php và chuyển đến trang thông báo bằng 2 cách : php và javascript
4. Kiểm tra lỗi dữ liệu trong form (validate)
- Kiểm tra và hiện lỗi trong các field
- Hiện lại giá trị mà user đã nhập khi có lỗi
5. Kiểm tra nóng user/email tồn tại hay không
- Tạo file kiểm tra username theo tham số
- Viết hàm kiểm tra khi user nhập xong
- Code kiểm tra
6. Kích hoạt tài khoản
- Tạo mã ngẫu nhiên khi chèn user vào bảng users và lấy id của user mới chèn
- Download https://github.com/PHPMailer/PHPMailer rồi ciải nén và chép vào folder website
- Code gửi mail
require "PHPMailer-master/src/PHPMailer.php";
require "PHPMailer-master/src/SMTP.php";
require 'PHPMailer-master/src/Exception.php';
$mail = new PHPMailer\PHPMailer\PHPMailer(true);//true:enables exceptions
try {
$mail->SMTPDebug = 0; //0,1,2: chế độ debug. khi chạy ngon thì chỉnh lại 0 nhé
$mail->isSMTP();
$mail->CharSet = "utf-8";
$mail->Host = 'smtp.gmail.com'; //SMTP servers
$mail->SMTPAuth = true; // Enable authentication
$mail->Username = 'emailCủaBạnỞGmail'; // SMTP username
$mail->Password = 'MậtKhẩuEmailCuaBan'; // SMTP password
$mail->SMTPSecure = 'ssl'; // encryption TLS/SSL
$mail->Port = 465; // port to connect to
$mail->setFrom('emailCủaBạnỞGmail', 'Tên người gửi' );
$mail->addAddress('emailNguoiNhan', 'TênNgườiNhận'); //mail và tên người nhận
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Tiêu đề thư';
$noidungthu = 'Nội dung thư';
$mail->Body = $noidungthu;
$mail->smtpConnect( array(
"ssl" => array(
"verify_peer" => false,
"verify_peer_name" => false,
"allow_self_signed" => true
)
));
$mail->send();
echo 'Đã gửi mail xong';
} catch (Exception $e) {
echo 'Error: ', $mail->ErrorInfo;
}
7. Mã hóa mật khẩu
- Dùng giải thuật md5, sha1, bcrypt (hàm password_hash)
- Tạo giá trị salt ngẫu nhiên
- Kết hợp mã hóa mật khẩu và salt