Trung Tâm Đào Tạo Mạng Máy Tính Nhất Nghệ   Trung Tâm Đào Tạo Mạng Máy Tính Nhất Nghệ
Trang Chủ Giới Thiệu Chương Trình Học Tài Liệu Tin Tức F.A.Q Lịch Khai Giảng Học Phí Việc Làm Liên Hệ

Go Back   Trung Tâm Đào Tạo Mạng Máy Tính Nhất Nghệ > WEB - ĐỒ HỌA - LẬP TRÌNH > Web Development > PHP
Đăng Ký Thành Viên Thành Viên Lịch Ðánh Dấu Ðã Ðọc

Vui lòng gõ từ khóa liên quan đến vấn đề bạn quan tâm vào khung dưới , trước khi đặt câu hỏi mới.


Ðề tài đã khoá
 
Ðiều Chỉnh
  #1  
Old 16-11-2009, 18:34
hoangth hoangth vẫn chưa có mặt trong diễn đàn
PHP Support
 
Tham gia ngày: Jun 2007
Bài gởi: 555
Thanks: 12
Thanked 477 Times in 130 Posts
Xác nhận địa chỉ mail cho form đăng ký thành viên

Khi người dùng đăng ký thành viên bạn có thể xác minh địa chỉ email của họ bằng cách gửi liên kết xác nhận đến địa chỉ email của họ từ website của bạn. Bài viết dưới đây sẽ hướng dẫn bạn làm điều này.

Trong hướng dẫn này tạo ra 4 file 2 bảng trong cơ sở dữ liệu

Các file
1. signup.php
2. signup_ac.php
3. confirmation.php
4. config.php
Chúng ta phải tạo 2 cơ sở dữ liệu
1. temp_members_db
2. registered_members
Cách thức làm việc
1. Khi người dùng đăng ký. Phát sinh ngẫu nhiên một bộ mã xác nhận.

2. Giữ thông tin của họ và mã xác nhận trong bảng "temp_members_db". Đây là bảng tạm thời, chúng ta sẽ di chuyển thông tin này qua bảng "registered_members" sau khi địa chỉ email đã được xác minh.

3. Sau khi đưa dữ liệu thành công vào bảng "temp_membes_db", gửi liên kết xác nhận đến email mà người dùng sử dụng để đăng ký, nếu email không hợp lệ họ sẽ không nhận được email kèm mã xác nhận.

4. người phải nhấp vào liên kết xác nhận để kích hoạt tài khoản của họ. ( thông tin tài khoản sẽ di chuyển dữ liệu từ bảng "temp_member_db" đến bảng "registered_members" và xóa dữ liệu từ bảng "temp_members_db" ở bước này)
1. Tạo table "temp_members_db" và table "registered_members"

Table "temp_members_db"
PHP Code:
CREATE TABLE `temp_members_db` (
`
confirm_codevarchar(65NOT NULL default '',
`
namevarchar(65NOT NULL default '',
`
emailvarchar(65NOT NULL default '',
`
passwordvarchar(15NOT NULL default '',
`
countryvarchar(65NOT NULL default ''
ENGINE=MyISAM DEFAULT CHARSET=latin1
Table "registered_members"
PHP Code:
CREATE TABLE `registered_members` (
`
idint(4NOT NULL auto_increment,
`
namevarchar(65NOT NULL default '',
`
emailvarchar(65NOT NULL default '',
`
passwordvarchar(65NOT NULL default '',
`
countryvarchar(65NOT NULL default '',
PRIMARY KEY (`id`)
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=
2. signup.php - Tạo form đăng ký



PHP Code:
<table width="350" border="0" align="center" cellpadding="0" cellspacing="0">
<
tr>
<
td><form name="form1" method="post" action="signup_ac.php">
<
table width="100%" border="0" cellspacing="4" cellpadding="0">
<
tr>
<
td colspan="3"><strong>Sign up</strong></td>
</
tr>
<
tr>
<
td width="76">Name</td>
<
td width="3">:</td>
<
td width="305"><input name="name" type="text" id="name" size="30"></td>
</
tr>
<
tr>
<
td>E-mail</td>
<
td>:</td>
<
td><input name="email" type="text" id="email" size="30"></td>
</
tr>
<
tr>
<
td>password</td>
<
td>:</td>
<
td><input name="password" type="password" id="password" size="30"></td>
</
tr>
<
tr>
<
td>Country</td>
<
td>:</td>
<
td><input name="country" type="text" id="country" size="30"></td>
</
tr>
<
tr>
<
td>&nbsp;</td>
<
td>&nbsp;</td>
<
td><input type="submit" name="Submit" value="Submit"> &nbsp;
<
input type="reset" name="Reset" value="Reset"></td>
</
tr>
</
table>
</
form></td>
</
tr>
</
table
3. signup_ac.php - đưa thông tin đăng ký vào database

Trong bước này
1. Mã xác nhận ngẫu nhiên
2. Chèn dữ liệu và mã xác nhận vào cơ sở dữ liệu
3. Gửi email cho người dùng với liên kết xác nhận



PHP Code:
include('config.php');

// tên bảng dữ liệu
$tbl_name=temp_members_db;

// mã xác nhận ngẫu nhiên
$confirm_code=md5(uniqid(rand()));

// giá trị nhập từ người dùng
$name=$_POST['name'];
$email=$_POST['email'];
$country=$_POST['country'];

// chèn dữ liệu vào database
$sql="INSERT INTO $tbl_name(confirm_code, name, email, password, country)VALUES('$confirm_code', '$name', '$email', '$password', '$country')";
$result=mysql_query($sql);

// nếu chèn thành công sẽ gởi link xác nhận vào email người đăng ký
if($result){

// ---------------- Form gởi mail ----------------

// gởi mail đến địa chỉ mail mà người dùng sử dụng đăng ký ...
$to=$email;

// Tiêu Đề Email
$subject="Xác Nhận Tài Khoản Từ Website xxxx";

// gởi từ
$header="from: tên website <địa chỉ mail của bạn>";

// nội dung mail
$message="Xác Nhận Tài Khoản \r\n";
$message.="Vui lòng bấm vào link dưới đề hoàn tất việc đăng ký \r\n";
$message.="http://www.webcuaban.com/confirmation.php?passkey=$confirm_code";

// Tiến hành gởi
$sentmail mail($to,$subject,$message,$header);

}

// nếu ko tìm thấy
else {
echo 
"không tìm thấy địa chỉ mail này trong cơ sở dữ liệu";
}

// nếu gởi mail thành công
if($sentmail){
echo 
"Để hoàn tất việc đăng ký vui lòng kiểm tra thư và bấm vào link xác nhận.";
}
else {
echo 
"Không thể gởi link xác nhận !";

4. confirmation.php

khi người đăng ký mở email sẽ có đường dẫn tới file "confirmation.php" bao gồm mã xác nhận trong url.

Trong bước này
1. Kiểm tra mã xác nhận ( passkey )
2. Nếu tìm thấy passkey trong cơ sở dữ liệu, di chuyển tất cả các dữ liệu trong dòng đó từ bảng "temp_members_db" sang bảng "registered_members"
3. Xóa passkey từ bảng "temp_members_db"



PHP Code:
include('config.php');

// mã xác nhận lấy từ link
$passkey=$_GET['passkey'];

$tbl_name1="temp_members_db";

// Lấy dòng dữ liệu phù hợp vơi passkey này trong database
$sql1="SELECT * FROM $tbl_name1 WHERE confirm_code ='$passkey'";
$result1=mysql_query($sql1);

// Nếu có dữ liệu 
if($result1){

// đếm xem có bao nhiêu  passkey này 
$count=mysql_num_rows($result1);

// nếu tìm thấy, lấy dữ liệu từ table "temp_members_db"
if($count==1){

$rows=mysql_fetch_array($result1);
$name=$rows['name'];
$email=$rows['email'];
$password=$rows['password']; 
$country=$rows['country'];

$tbl_name2="registered_members";

// chèn dữ liệu vừa lấy bên bảng "temp_members_db" đưa vào bảng "registered_members" 
$sql2="INSERT INTO $tbl_name2(name, email, password, country)VALUES('$name', '$email', '$password', '$country')";
$result2=mysql_query($sql2);
}

// nếu ko tìm thấy  passkey, hiễn thị thông báo "Sai Mã Xác Nhận" 
else {
echo 
"Sai Mã Xác Nhận";
}

// nếu di chuyển thành công  dữ liệu từ bảng "temp_members_db" sang bảng "registered_members" hiển thị thông báo "tài khoản của bạn đã được kích hoạt" và đừng quên để xóa mã xác nhận từ bảng "temp_members_db"
if($result2){

echo 
"tài khoản của bạn đã được kích hoạt";

// Xoá thông tin của người dùng này từ bảng "temp_members_db" có passkey này
$sql3="DELETE FROM $tbl_name1 WHERE confirm_code = '$passkey'";
$result3=mysql_query($sql3);

}



5. config.php - config your database

PHP Code:
$host="localhost"// Host name 
$username=""// Mysql username 
$password=""// Mysql password 
$db_name=""// tên Database 


//kế nối đến sever và chọn db
mysql_connect("$host""$username""$password")or die("ko thể kết nối đến sever"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

Vậy là xong. Chúc các bạn thành công.
phù mệt quá
__________________
Come back ... !

thay đổi nội dung bởi: hoangth, 16-11-2009 lúc 19:00
Đã có 7 người gửi lời cảm ơn hoangth vì bài viết hữu ích này:
Sponsored links
  #2  
Old 16-11-2009, 19:14
Tony_nguyen19 Tony_nguyen19 vẫn chưa có mặt trong diễn đàn
Đam Mê
 
Tham gia ngày: Dec 2007
Bài gởi: 506
Thanks: 141
Thanked 80 Times in 41 Posts
thanks, óanh dấu lại để mai mốt xem
__________________
Học, Học Nữa, Học Mãi
Hỏi, Hỏi Nữa, Hỏi Mãi
Những người sau đây đã gửi lời cảm ơn Tony_nguyen19 vì bài viết hữu ích này:
Sponsored links
Ðề tài đã khoá

Bookmarks

Ðiều Chỉnh

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người Gởi Chuyên mục Trả lời Bài mới gởi
[Tutorial] Form đăng nhập ngầu hơn hoangth Web Development 4 27-03-2010 19:19
Viết Tay Form Đăng Nhập Sử Dụng PHP - MYSQL hoangth PHP 2 31-01-2010 13:57
Cho em hỏi cách tạo nút Remembers cho form đăng nhập ! kinhkha1984 PHP 2 18-11-2009 14:13
giúp dùm về làm form đăng nhập bằng ajax trucdemo Web Development 0 03-06-2009 14:29
Hỏi về Form đăng ký thành viên trong PHP bibimimi83 Web Development 1 05-05-2009 08:21



Múi giờ GMT +7. Hiện tại là 17:53
Powered by: vBulletin Version 3.8.7
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Ad Management by RedTyger