<![CDATA[Latest posts for the topic "Tạo trang đăng ký và đăng nhập - ST"]]> /hvaonline/posts/list/23.html JForum - http://www.jforum.net Tạo trang đăng ký và đăng nhập - ST Bạn cần phải thay đổi thông tin ở 3 biến $db_name, $db_username, $db_password cho phù hợp với thông tin database của bạn. 1.1. Tạo table "members" dùng dể chứa thông tin thành viên: Sau đó bạn tạo file "create_members_table.php" có code như sau: Bạn tiếp tục chạy luôn file "create_members_table.php" này để tiến hành tạo table "members", sau khi tạo xong thì xóa file này đi. Nếu bạn đã quen sử dụng phpMyAdmin thì bạn có thể tự tạo table này, còn đối với newbie thì nên làm theo cách của tôi, sau này bạn có thể tự tìm hiểu thêm. 2. Tạo trang đăng ký: Tạo file "register.php" có code như sau: Nhấp vào đây để quay trở lại"; exit; } // Kiểm tra mật khẩu, bắt buộc mật khẩu nhập lúc đầu và mật khẩu lúc sau phải trùng nhau if ( $password != $verify_password ) { print "Mật khẩu không giống nhau, bạn hãy nhập lại mật khẩu. Nhấp vào đây để quay trở lại"; exit; } // Tiến hành tạo tài khoản @mysql_query("INSERT INTO members (username, password, email) VALUES ('{$username}', '{$password}', '{$email}')"); // Thông báo hoàn tất việc tạo tài khoản print "Tài khoản {$username} đã được tạo. Nhấp vào đây để đăng nhập"; } else { // Form đăng ký print << Tên truy nhập: Mật khẩu: Xác nhận mật khẩu: Địa chỉ E-mail: EOF; } ?> 3. Tạo trang đăng nhập: Tạo file "login.php" có code như sau: Nhấp vào đây để quay trở lại"; exit; } // Nếu username này tồn tại thì tiếp tục kiểm tra mật khẩu if ( $password != $member['password'] ) { print "Nhập sai mật khẩu. Nhấp vào đây để quay trở lại"; exit; } // Khởi động phiên làm việc (session) session_start(); $_SESSION['user_id'] = $member['id']; // Thông báo đăng nhập thành công print "Bạn đã đăng nhập với tài khoản {$member['username']} thành công. Nhấp vào đây để vào trang chủ"; } else { // Form đăng nhập print << Tên truy nhập: Mật khẩu: EOF; } ?> 4. Tạo trang chủ: Tạo file "index.php" với code như sau: Nhấp vào đây để đăng nhập EOF; } else { $user_id = intval($_SESSION['user_id']); $sql_query = @mysql_query("SELECT * FROM members WHERE id='{$user_id}'"); $member = @mysql_fetch_array( $sql_query ); print << ]]> /hvaonline/posts/list/398.html#947 /hvaonline/posts/list/398.html#947 GMT Tạo trang đăng ký và đăng nhập - ST print << trong các file login.php và index.php ? Bạn có thể giải thích giùm chứ. Mình đã sai bước nào chăng ???]]> /hvaonline/posts/list/398.html#1346 /hvaonline/posts/list/398.html#1346 GMT Tạo trang đăng ký và đăng nhập - ST

cigcof wrote:
Mình đã thực hành từng bước rất chính xác theo bạn. Nhưng nó lại báo lỗi ở dòng print << trong các file login.php và index.php ? Bạn có thể giải thích giùm chứ. Mình đã sai bước nào chăng ??? 
Bạn cần thay đổi thông tin giống như thông tin trong MySQL của bạn mới chạy đc. :)]]> /hvaonline/posts/list/398.html#1396 /hvaonline/posts/list/398.html#1396 GMT Tạo trang đăng ký và đăng nhập - ST Code:
// Nếu username này không tồn tại thì.... 
if ( @mysql_num_rows( $sql_query ) <= 0 )
Mình thì chưa thấy @mysql_num_rows( $sql_query ) <0 bao giờ nên cũng hơi buồn cười khi thấy code này . . . thường thì mình làm là Code:
if ( @mysql_num_rows( $sql_query ) == 0 )
Thứ 2 : Để đỡ tốn thời gian của user cũng như "bớt việc" cho server, mình kiểm tra toàn bộ thông tin người dùng ngay trên trang đăng kí, chứ không để lên trên server mới làm. Như vậy theo mình sẽ bỏ: Code:
// Kiểm tra 4 thông tin, nếu có bất kỳ thông tin chưa điền thì sẽ báo lỗi 
if ( ! $username || ! $password || ! $verify_password || ! $email ) 
{ 
print "Xin vui lòng nhập đầy đủ các thông tin. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>"; 
exit; 
} 

// Kiểm tra mật khẩu, bắt buộc mật khẩu nhập lúc đầu và mật khẩu lúc sau phải trùng nhau 
if ( $password != $verify_password ) 
{ 
print "Mật khẩu không giống nhau, bạn hãy nhập lại mật khẩu. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>"; 
exit; 
}
Cũng vừa để cho chắc ăn, vừa chống flood, vừa kiểm tra được user đã đăng kí hay chưa (cái kiểm tra user exists trên code chưa có à nha), em dùng một type=hidden, name="anti_flood", value=một dẫy số do em tạo ra(theo một quy luật nào đó mà mình có thể kt được nó đúng hay sai). Nếu như dẫy số này trên server kt là đúng thì sẽ : Code:
$kt_user = @mysql_query("SELECT id FROM members WHERE username='$username'"); 
if(@mysql_num_rows($kt_user)!=0)
{
echo "UserName này đã tồn tại. Mời bạn chọn User Nam khác !";
exit;
}
else 
{
// Tiến hành tạo tài khoản 
@mysql_query("INSERT INTO members (username, password, email) VALUES ('{$username}', '{$password}', '{$email}')"); 

// Thông báo hoàn tất việc tạo tài khoản 
print "Tài khoản {$username} đã được tạo. <a href='login.php'>Nhấp vào đây để đăng nhập</a>"; 
}
Còn việc Code:
if ( !$_SESSION['user_id'] ) 
{ 

print <<<EOF 
Bạn chưa đăng nhập! <a href='login.php'>Nhấp vào đây để đăng nhập</a> 
EOF; 

}
Thì chuối một tí (sorry, nếu em sai !). Như mọi người đã biết giá trị của session sẽ xuyên suốt trong quá trình user làm việc với 1 cửa sổ, cho dù user chuyển từ trang này sang trang kia, trừ khi giá trị đó bị thay đổi hoặc phá huỷ. Như vậy chỗ này, em chỉ cần tạo một cái Code:
$_SESSION['user_id']=1;//thường của admin :D
trên máy (hay trên host) rồi cũng từ cửa sổ đó chuyển sang trang đăng nhập này . . . hê hê . . . bạn đoán xem chuyện gì sẽ xảy ra ????? Theo mình là dùng setcokie (mặc dù không được tiện khi người dùng tắt cookie trên duyệt trình). Sau khi kiểm tra các bước đăng nhập xong ta sẽ : Code:
@setcookie("user","$member[1]",time()+30*24*60*60,"tendomain") //sét trong 1 tháng :D
@setcookie("pw","$member[2]",time()+30*24*60*60,"tendomain") //sét trong 1 tháng :D
và đoạn này Code:
if ( !$_SESSION['user_id'] ) 
{ 

print <<<EOF 
Bạn chưa đăng nhập! <a href='login.php'>Nhấp vào đây để đăng nhập</a> 
EOF; 

}
thay bằng Code:
if ( ! $_COOKIE["user"] || !$_COOKIE["pw"] ) 
{ 

print <<<EOF 
Bạn chưa đăng nhập! <a href='login.php'>Nhấp vào đây để đăng nhập</a> 
EOF; 

} 
else
{
...... <== kt cookie. Nếu đúng thì thông báo đã đăng nhập, nếu sai thì echo "Thằng nào thích fake hả ?"; :D
}
^_^ đó là những gì trong cái đầu bé ít chữ của em . . . các bác tham khảo nếu có sai thì các bác đừng vác đá táng đầu em :D HAVE FUN!]]>
/hvaonline/posts/list/398.html#1484 /hvaonline/posts/list/398.html#1484 GMT
Tạo trang đăng ký và đăng nhập - ST

phamquoc_truong wrote:
Thứ 2 : Để đỡ tốn thời gian của user cũng như "bớt việc" cho server, mình kiểm tra toàn bộ thông tin người dùng ngay trên trang đăng kí, chứ không để lên trên server mới làm. Như vậy theo mình sẽ bỏ: Code:
// Kiểm tra 4 thông tin, nếu có bất kỳ thông tin chưa điền thì sẽ báo lỗi 
if ( ! $username || ! $password || ! $verify_password || ! $email ) 
{ 
print "Xin vui lòng nhập đầy đủ các thông tin. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>"; 
exit; 
} 

// Kiểm tra mật khẩu, bắt buộc mật khẩu nhập lúc đầu và mật khẩu lúc sau phải trùng nhau 
if ( $password != $verify_password ) 
{ 
print "Mật khẩu không giống nhau, bạn hãy nhập lại mật khẩu. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>"; 
exit; 
}
 
ehèm, cái thứ hai của bạn đóa , đành rằng công việc kiếm tra nên để ở phía client thì tốt hơn nhưng mà cũng không thể nào không kiểm tra ở phía Server, hãy tưởng tượng, nếu dữ liệu được gửi đến Server của bạn không thông qua trình duyệt (nơi mà có sẵn các mã JavaScript xử lý trước dữ liệu) mà được gửi lên từ một ứng dụng thứ ba thì sao ? Khi đó thì rõ ràng bạn không thể kiểm soát được cái nào được gửi lên và dĩ nhiên khả năng xảy ra lỗi là rất lớn. Thật ra việc để cho trình duyệt phía Client tự kiếm tra dữ liệu trước chỉ là một thủ thuật để nhằm tiết kiệm thời gian cho USER và phần nào giúp đỡ Server đỡ mệt mỏi thôi. Chúng ta không thể phủ định tầm quan trọng của việc kiếm tra dữ liệu phía Server. ]]>
/hvaonline/posts/list/398.html#2180 /hvaonline/posts/list/398.html#2180 GMT
Re: Tạo trang đăng ký và đăng nhập - ST Thì chuối một tí (sorry, nếu em sai !). Như mọi người đã biết giá trị của session sẽ xuyên suốt trong quá trình user làm việc với 1 cửa sổ, cho dù user chuyển từ trang này sang trang kia, trừ khi giá trị đó bị thay đổi hoặc phá huỷ. Như vậy chỗ này, em chỉ cần tạo một cái Code:
$_SESSION['user_id']=1;//thường của admin
trên máy (hay trên host) rồi cũng từ cửa sổ đó chuyển sang trang đăng nhập này . . . hê hê . . . bạn đoán xem chuyện gì sẽ xảy ra ?????  
làm cách nào mà tạo 1 biến session trên máy vậy? còn tạo trên host = local attack? :shock: ]]>
/hvaonline/posts/list/398.html#2767 /hvaonline/posts/list/398.html#2767 GMT
Tạo trang đăng ký và đăng nhập - ST /hvaonline/posts/list/398.html#2853 /hvaonline/posts/list/398.html#2853 GMT Tạo trang đăng ký và đăng nhập - ST ehèm, cái thứ hai của bạn đóa , đành rằng công việc kiếm tra nên để ở phía client thì tốt hơn nhưng mà cũng không thể nào không kiểm tra ở phía Server, hãy tưởng tượng, nếu dữ liệu được gửi đến Server của bạn không thông qua trình duyệt (nơi mà có sẵn các mã JavaScript xử lý trước dữ liệu) mà được gửi lên từ một ứng dụng thứ ba thì sao ? Khi đó thì rõ ràng bạn không thể kiểm soát được cái nào được gửi lên và dĩ nhiên khả năng xảy ra lỗi là rất lớn. Thật ra việc để cho trình duyệt phía Client tự kiếm tra dữ liệu trước chỉ là một thủ thuật để nhằm tiết kiệm thời gian cho USER và phần nào giúp đỡ Server đỡ mệt mỏi thôi. Chúng ta không thể phủ định tầm quan trọng của việc kiếm tra dữ liệu phía Server.   Thế bạn đã đọc cái dòng này chưa ?
Cũng vừa để cho chắc ăn, vừa chống flood, vừa kiểm tra được user đã đăng kí hay chưa (cái kiểm tra user exists trên code chưa có à nha), em dùng một type=hidden, name="anti_flood", value=một dẫy số do em tạo ra(theo một quy luật nào đó mà mình có thể kt được nó đúng hay sai). Nếu như dẫy số này trên server kt là đúng thì sẽ : .... 
Chỉ khi nào user submit bằng chính web của mình thì cái anti_flood mới được gán. Và nó sẽ được kiểm tra trên server. Nếu nó chưa được gán hoặc gán sai giá trị <== Flood và sẽ bị loại ngay. Như vậy sẽ không thể có chuyện :
dữ liệu được gửi đến Server của bạn không thông qua trình duyệt (nơi mà có sẵn các mã JavaScript xử lý trước dữ liệu) mà được gửi lên từ một ứng dụng thứ ba 
Điều thứ 2 : Code:
theo minh biet la nhuoi ta dung cookie de luu thong tin tren may client ma, lam gi co chien tao session tren may cua user
Cookie có một vài vấn đề không thích hợp brower trong trường hợp brower của người dùng không chấp nhận cookie. Người dùng có thể vô hiệu hoá cookie trong brower. Do cookie lưu thông tin cá nhân trên máy khách nên hầu hết người dùng đều không muốn. Đó là lý do người dùng có thể vô hiệu hoá chức năng chấp nhận cookie. :D lam gi co chien tao session tren may cua user . . . hì hì câu này mình đâu có nói. :D Do máy mình cài apache + php nên hoàn toàn mình có thể tạo 1 session. @TO Mr An Luong & iceface Có thể mình nhầm. Mình vừa tạo và vừa kiểm tra session ngay trên localhost của mình, nên có thể đã dẫn đến hiện tượng trên. Cảm ơn 2 bạn. P/S : Xin lưu ý bác : Bigball_hacker. Bê bài của người khác từ nơi khác sang mà không đề tên tác giả là thế nào ? HAVE FUN !]]>
/hvaonline/posts/list/398.html#3034 /hvaonline/posts/list/398.html#3034 GMT
Tạo trang đăng ký và đăng nhập - ST Code:
if ( @mysql_num_rows( $sql_query ) == 0 )
Code:
if ( @mysql_num_rows( $sql_query ) <= 0 )
Mình cảm thấy không có gì đáng cười khi cẩn thận kiểm tra cả trường hợp âm lẫn trường hợp = 0 :)
Để đỡ tốn thời gian của user cũng như "bớt việc" cho server, mình kiểm tra toàn bộ thông tin người dùng ngay trên trang đăng kí, chứ không để lên trên server mới làm. Như vậy theo mình sẽ bỏ: Code:
// Kiểm tra 4 thông tin, nếu có bất kỳ thông tin chưa điền thì sẽ báo lỗi 
 if ( ! $username || ! $password || ! $verify_password || ! $email ) 
 { 
 print "Xin vui lòng nhập đầy đủ các thông tin. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>"; 
 exit; 
 } 
 
 // Kiểm tra mật khẩu, bắt buộc mật khẩu nhập lúc đầu và mật khẩu lúc sau phải trùng nhau 
 if ( $password != $verify_password ) 
 { 
 print "Mật khẩu không giống nhau, bạn hãy nhập lại mật khẩu. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>"; 
 exit; 
 }
 
Và Bạn đã rất ẩu khi thay code mà không kiểm tra lại những gì mình viết, như vậy ở đoạn code của bạn thay lại đã thiếu: 1. Kiểm tra mật khẩu nhập lần đầu, và mật khẩu xác nhận có khớp với nhau hay không ( cũng chẳng thèm kiểm tra coi có nhập mật khẩu chưa :D ). 2. Kiểm tra email có điền chưa. Code:
if ( !$_SESSION['user_id'] ) 
 { 
 
....
 
 }
Đúng là đầu bạn bé và ít chữ như bạn đã thừa nhận, nên bạn đã không hiểu dụng ý của mình khi viết đoạn này - mục đích của đoạn này chỉ là để kiểm tra xem có đăng nhập hay chưa thôi bạn ạ.
Thì chuối một tí (sorry, nếu em sai !). Như mọi người đã biết giá trị của session sẽ xuyên suốt trong quá trình user làm việc với 1 cửa sổ, cho dù user chuyển từ trang này sang trang kia, trừ khi giá trị đó bị thay đổi hoặc phá huỷ. Như vậy chỗ này, em chỉ cần tạo một cái trên máy (hay trên host) rồi cũng từ cửa sổ đó chuyển sang trang đăng nhập này . . . hê hê . . . bạn đoán xem chuyện gì sẽ xảy ra ?????  
Tớ không phủ định nhận định của bạn, nhưng bạn có thể test lại :) Tui chắc là bạn chưa test thì phải :)) ]]>
/hvaonline/posts/list/398.html#3062 /hvaonline/posts/list/398.html#3062 GMT
Tạo trang đăng ký và đăng nhập - ST mình kiểm tra toàn bộ thông tin người dùng ngay trên trang đăng kí  Em nói ngắn gọn lại thế này nhé : 1) Nếu như user vào trang đăng kí, mình sẽ gắn cho họ một cái flag (người thì cookie, người thi session ...) còn em, em sẽ tạo ra một giá trị của biến anti_flood. Và nếu như người dùng không vào trang đăng kí thì sẽ không được nhận giá trị này. Nếu trên server kiểm tra, không có giá trị flood hoặc giá trị này sai, truy vấn sẽ bị loại bỏ. Cái giá trị này của anti_flood này một phần em dựa vào quy luật một phần dựa vào session => mỗi giá trị gần như là duy nhất => không thể nào làm giả được => người dùng bắt buộc phải vào trang đăng kí thật để đăng kí. 2) Mình sẽ kiểm tra
//Kiểm tra 4 thông tin, nếu có bất kỳ thông tin chưa điền thì sẽ báo lỗi // Kiểm tra mật khẩu, bắt buộc mật khẩu nhập lúc đầu và mật khẩu lúc sau phải trùng nhau  
Tất tần tật bằng javascript như mình đã nói
mình kiểm tra toàn bộ thông tin người dùng ngay trên trang đăng kí 
như vậy dòng này :
Và Bạn đã rất ẩu khi thay code mà không kiểm tra lại những gì mình viết, như vậy ở đoạn code của bạn thay lại đã thiếu: 1. Kiểm tra mật khẩu nhập lần đầu, và mật khẩu xác nhận có khớp với nhau hay không ( cũng chẳng thèm kiểm tra coi có nhập mật khẩu chưa ). 2. Kiểm tra email có điền chưa.  
mình hoàn toàn phủ nhận. Xin mọi người hãy đọc kĩ nhé ! Form đăng kí như thế này : Code:
<form action="register.php?act=do" method="post" name="form_reg" onsubmit="return kiemtra();"> 
Tên truy nhập: <input type="text" name="username" value=""> 
Mật khẩu: <input type="password" name="password" value=""> 
Xác nhận mật khẩu: <input type="password" name="verify_password" value=""> 
Địa chỉ E-mail: <input type="text" name="email" value=""> 
<input type="submit" name="submit" value="Đăng ký tài khoản"> 
</form>
Và đây là đoạn code kiểm tra bằng javascript mà bài trước em chỉ nói qua(mình nghĩ rằng nó rất dễ chỉ cần nói ra là mọi người đã hiểu . . .) Code:
function ktEmail(s)
{   
  if (s=="") return false;
  if(s.indexOf(" ")>0) return false;
  if(s.indexOf("@")==-1) return false;
  var i = 1;
  var dodai = s.length;
  if (s.indexOf(".")==-1) return false;
  if (s.indexOf("..")!=-1) return false;
  if (s.indexOf("@")!=s.lastIndexOf("@")) return false;
  if (s.lastIndexOf(".")==s.length-1) return false;
  var str="0123456789abcdefghikjlmnopqrstuvwxyz-@._"; 
  for(var j=0;j<s.length;j++)
	if(str.indexOf(s.charAt(j))==-1)
		return false;
   return true;
}
function trong(s)
{   
	return ((s == null) || (s.length == 0))
}
function khoangtrang (s)
{   
	var whitespace = " \t\n\r";
	var i;

  if (trong(s)) return true;
  for (i = 0; i < s.length; i++)
  {   
    var c = s.charAt(i);
    if (whitespace.indexOf(c) == -1) return false;
  }
  return true;
}
function so(c){
	return (c>="0" && c<="9");
}
function sos(str)
{
var kt=true;
for(var i=0;i<str.length;i++)
	{
		if(!isNumer(str.charAt(i)))
			{
				kt=false;
				break;
			}
	}
	return kt;	
}
function kiemtra()
{
	sai=0;
	for(i=0;i<document.form_reg.elements.length-1;i++)
	{
		if(form_reg.elements[i].value=='')
		{
			alert('Bạn phải nhập đầy đủ thông tin !');
			form_reg.elements[i].focus();
			sai=1;
			break;
		}
	}
	if(form_reg.password.value!=form_reg.verify_password.value && sai==0)
	{
		alert('2 mật khẩu không trùng nhau !');
		form_reg.password.focus();
		sai=1;
	}
	if (!ktEmail(form_reg.email.value) && sai==0)
	{
		alert("Bạn đã nhập sai email !");
		form_reg.email.focus();
		sai=1;
	}
	if(sai==1)
		return false;
	else
		return true;
}
Đoạn code của bác không kt user đã tồn tại hay chưa, email nhập vào cũng không kiểm tra xem nó có nhập vào là 1 email hay không, cũng chưa chống flood nốt. Nếu như mình còn có gì chưa đúng, xin mọi người tiếp tục chỉ dạy . . . HAVE FUN !]]>
/hvaonline/posts/list/398.html#3190 /hvaonline/posts/list/398.html#3190 GMT
Tạo trang đăng ký và đăng nhập - ST

Mr An Luong wrote:
theo minh biet la nhuoi ta dung cookie de luu thong tin tren may client ma, lam gi co chien tao session tren may cua user 
Chán. Thế tui để chữ ST làm chi nhỉ? :-/]]>
/hvaonline/posts/list/398.html#3248 /hvaonline/posts/list/398.html#3248 GMT
Tạo trang đăng ký và đăng nhập - ST Tất tần tật bằng javascript như mình đã nói   Lại ẩu :) Mình sẽ disable javascript thì bạn kiểm tra bằng cách gì ? Làm theo kiểu bạn là trường hợp trăm năm hiếm thấy :D Và bạn nên nhớ rằng đây là một bài viết cơ bản về PHP, bạn lại bỏ đi PHP mà dùng Javascript thay thế thì... bó tay :roll: Các bác mod, admin làm ơn khoá bài này lại hộ, kẻo lại dài ngoằn vì những nhận xét không thực tế :( ]]> /hvaonline/posts/list/398.html#3304 /hvaonline/posts/list/398.html#3304 GMT Tạo trang đăng ký và đăng nhập - ST

Bigball_hacker wrote:

Mr An Luong wrote:
theo minh biet la nhuoi ta dung cookie de luu thong tin tren may client ma, lam gi co chien tao session tren may cua user 
Chán. Thế tui để chữ ST làm chi nhỉ? :-/ 
The chu ST nghi la gi vay, khong hieu ???? Con bac phamquoc_truong bao rang neu user truy cap vao trang dang ky thi moi duoc gan bien anti_flood cho gi, nhung neu user ko vao trang do bang trinh duyet ma cung bang mot ung dung thu 3 thi sao ???]]>
/hvaonline/posts/list/398.html#3888 /hvaonline/posts/list/398.html#3888 GMT
Tạo trang đăng ký và đăng nhập - ST Con bac phamquoc_truong bao rang neu user truy cap vao trang dang ky thi moi duoc gan bien anti_flood cho gi, nhung neu user ko vao trang do bang trinh duyet ma cung bang mot ung dung thu 3 thi sao ???  Thế thì cho nó vào đến trình duyệt thứ 100 hay một nghìn thì làm gì được vậy ? Bạn có hiểu bạn nói cái gì không ?
Và nếu như người dùng không vào trang đăng kí thì sẽ không được nhận giá trị này. Nếu trên server kiểm tra, không có giá trị flood hoặc giá trị này sai, truy vấn sẽ bị loại bỏ. Cái giá trị này của anti_flood này một phần em dựa vào quy luật một phần dựa vào session => mỗi giá trị gần như là duy nhất => không thể nào làm giả được => người dùng bắt buộc phải vào trang đăng kí thật để đăng kí. 
@To bác lyhuuloi. Vâng bác thử dít-sa-bờ-lết cái cookie đi rồi vào mấy diễn đàn mà đăng nhập xem ! => IPB không thực tế, VBB không thực tế, *forum không thực tế. Còn bác thì thực tế đến nỗi một user có thể có mấy thằng đăng kí. Bác thực tế quá ! Cái gì mọi người góp ý, em xin ghi nhận . . . và cũng xin chào topic này. Em chả muốn anh em căng thẳng thêm nữa đâu nha. . . HAVE FUN !]]>
/hvaonline/posts/list/398.html#4011 /hvaonline/posts/list/398.html#4011 GMT
Re: Tạo trang đăng ký và đăng nhập - ST /hvaonline/posts/list/398.html#4040 /hvaonline/posts/list/398.html#4040 GMT Tạo trang đăng ký và đăng nhập - ST @To bác lyhuuloi. Vâng bác thử dít-sa-bờ-lết cái cookie đi rồi vào mấy diễn đàn mà đăng nhập xem ! => IPB không thực tế, VBB không thực tế, *forum không thực tế. Còn bác thì thực tế đến nỗi một user có thể có mấy thằng đăng kí. Bác thực tế quá !   Không biết bạn có từng xem qua sources của IPB và VBB ở phần login và register chưa nhỉ :) Họ cũng sẽ kiểm tra xem có nhập: tên, mật khẩu và email thôi bạn à :) Bạn không tin thì bạn disable javascript rồi đăng ký mà không nhập gì vào xem coi có báo lỗi không. Nếu có thì chứng minh rằng đoạn PHP kiểm tra các thông tin nhập khi đăng ký là hoàn toàn đúng bạn à. Và dường như bạn đã nhầm khi không xem rõ đoạn code mà trước giờ bàn là nằm ở phần đăng ký chứ không phải phần đăng nhập ;)]]> /hvaonline/posts/list/398.html#4112 /hvaonline/posts/list/398.html#4112 GMT Tạo trang đăng ký và đăng nhập - ST micr0vnn
ạ !]]> /hvaonline/posts/list/398.html#4138 /hvaonline/posts/list/398.html#4138 GMT Re: Tạo trang đăng ký và đăng nhập - ST register.php thì có hiện tượng như sau: (Mời các huynh xem lại code ạ) 2. Tạo trang đăng ký: Tạo file "register.php" có code như sau: <?php // Tải file mysql.php lên require_once("mysql.php"); if ( $_GET['act'] == "do" ) { // Dùng hàm addslashes() để tránh SQL injection, dùng hàm md5() để mã hóa password $username = addslashes( $_POST['username'] ); $password = md5( addslashes( $_POST['password'] ) ); $verify_password = md5( addslashes( $_POST['verify_password'] ) ); $email = addslashes( $_POST['email'] ); // Kiểm tra 4 thông tin, nếu có bất kỳ thông tin chưa điền thì sẽ báo lỗi if ( ! $username || ! $password || ! $verify_password || ! $email ) { print "Xin vui lòng nhập đầy đủ các thông tin. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>"; exit; } // Kiểm tra mật khẩu, bắt buộc mật khẩu nhập lúc đầu và mật khẩu lúc sau phải trùng nhau if ( $password != $verify_password ) { print "Mật khẩu không giống nhau, bạn hãy nhập lại mật khẩu. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>"; exit; } // Tiến hành tạo tài khoản @mysql_query("INSERT INTO members (username, password, email) VALUES ('{$username}', '{$password}', '{$email}')"); // Thông báo hoàn tất việc tạo tài khoản print "Tài khoản {$username} đã được tạo. <a href='login.php'>Nhấp vào đây để đăng nhập</a>"; } else { // Form đăng ký print <<<EOF <form action="register.php?act=do" method="post"> Tên truy nhập: <input type="text" name="username" value=""> Mật khẩu: <input type="password" name="password" value=""> Xác nhận mật khẩu: <input type="password" name="verify_password" value=""> Địa chỉ E-mail: <input type="text" name="email" value=""> <input type="submit" name="submit" value="Đăng ký tài khoản"> </form> EOF; } ?> Thì nó báo lỗi: Parse error: parse error in e:\appserv\www\hoa\register.php on line 34 . Em ko hiểu vì sao nữa. Dòng 34 là dòng print <<<EOF . Có phải là nó ko hiểu dòng đó ko hả các huynh. Lần trước em nhớ cũng dùng câu lệnh print <<<EOF...EOF; và nó cũng báo lỗi tương tự như thế (vẫn chưa giải thích được lỗi đó). Và thực tế em cũng chưa hiểu thật sự nó có ý nghĩa gì? Mong các huynh giải thích giùm em. Thanks.]]> /hvaonline/posts/list/398.html#95303 /hvaonline/posts/list/398.html#95303 GMT Re: Tạo trang đăng ký và đăng nhập - ST

hoaitvn wrote:
Các huynh ơi cho em hỏi cái ạ. Em cũng thử làm như bác hướng dẫn nhưng mà khi tạo file register.php thì có hiện tượng như sau: (Mời các huynh xem lại code ạ) 2. Tạo trang đăng ký: Tạo file "register.php" có code như sau: <?php // Tải file mysql.php lên require_once("mysql.php"); if ( $_GET['act'] == "do" ) { // Dùng hàm addslashes() để tránh SQL injection, dùng hàm md5() để mã hóa password $username = addslashes( $_POST['username'] ); $password = md5( addslashes( $_POST['password'] ) ); $verify_password = md5( addslashes( $_POST['verify_password'] ) ); $email = addslashes( $_POST['email'] ); // Kiểm tra 4 thông tin, nếu có bất kỳ thông tin chưa điền thì sẽ báo lỗi if ( ! $username || ! $password || ! $verify_password || ! $email ) { print "Xin vui lòng nhập đầy đủ các thông tin. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>"; exit; } // Kiểm tra mật khẩu, bắt buộc mật khẩu nhập lúc đầu và mật khẩu lúc sau phải trùng nhau if ( $password != $verify_password ) { print "Mật khẩu không giống nhau, bạn hãy nhập lại mật khẩu. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>"; exit; } // Tiến hành tạo tài khoản @mysql_query("INSERT INTO members (username, password, email) VALUES ('{$username}', '{$password}', '{$email}')"); // Thông báo hoàn tất việc tạo tài khoản print "Tài khoản {$username} đã được tạo. <a href='login.php'>Nhấp vào đây để đăng nhập</a>"; } else { // Form đăng ký print <<<EOF <form action="register.php?act=do" method="post"> Tên truy nhập: <input type="text" name="username" value=""> Mật khẩu: <input type="password" name="password" value=""> Xác nhận mật khẩu: <input type="password" name="verify_password" value=""> Địa chỉ E-mail: <input type="text" name="email" value=""> <input type="submit" name="submit" value="Đăng ký tài khoản"> </form> EOF; } ?> Thì nó báo lỗi: Parse error: parse error in e:\appserv\www\hoa\register.php on line 34 . Em ko hiểu vì sao nữa. Dòng 34 là dòng print <<<EOF . Có phải là nó ko hiểu dòng đó ko hả các huynh. Lần trước em nhớ cũng dùng câu lệnh print <<<EOF...EOF; và nó cũng báo lỗi tương tự như thế (vẫn chưa giải thích được lỗi đó). Và thực tế em cũng chưa hiểu thật sự nó có ý nghĩa gì? Mong các huynh giải thích giùm em. Thanks. 
Kiểm lại xem sau <<<EOF, và sau EOF; có khoảng trắng (space) nào không, nếu có khi parse sẽ gây ra lỗi trên. Ref: http://php.net/heredoc http://www.php.net/manual/en/function.print.php]]>
/hvaonline/posts/list/398.html#95307 /hvaonline/posts/list/398.html#95307 GMT