banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Xin code demo Login với PHP sử dụng Session  XML
  [Question]   Xin code demo Login với PHP sử dụng Session 05/01/2008 12:24:34 (+0700) | #1 | 108440
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Mình không biết hiện giờ nhiều website thường áp dụng Session và cookie như thế nào là an toàn và cách viết code ra sao ?
Mình muốn viết 1 site đăng nhập với 3 file
1. Dĩ nhiên là có 2 form gồm username và password
2. File để kiểm tra
3. File admin.php
Nếu áp dụng kỹ thuật viết dùng session id thì viết code như thế nào vậy các Bác. MÌnh chỉ biết căn bản về nguyên tắc thôi, còn chi tiết viết thì không rành lắm.....
[Up] [Print Copy]
  [Question]   Re: Xin code demo Login với PHP sử dụng Session 05/01/2008 12:41:34 (+0700) | #2 | 108443
[Avatar]
onlinehack
Member

[Minus]    0    [Plus]
Joined: 04/12/2007 23:07:12
Messages: 116
Location: Ma maison
Offline
[Profile] [PM]

Bạn tham khảo bài viết http://vuongquocphp.net/forum/viewtopic.php?f=13&t=4&sid=4308ddf1dba060d6264b9d2251f3afa2 hoặc PHP Manual .
[Up] [Print Copy]
  [Question]   Re: Xin code demo Login với PHP sử dụng Session 05/01/2008 14:36:13 (+0700) | #3 | 108461
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
hic! Site có open được đâu .......
[Up] [Print Copy]
  [Question]   Re: Xin code demo Login với PHP sử dụng Session 05/01/2008 14:54:50 (+0700) | #4 | 108465
alexdn143
Member

[Minus]    0    [Plus]
Joined: 01/01/2008 04:50:13
Messages: 5
Offline
[Profile] [PM]
Trong file kiểm tra bạn nên tạo một biến session id chẳng hạn. Sau đó bạn thực hiện kiểm tra session id này trước nếu id này tồn tại thì cho phép đi tiếp, nếu không thì bắt đăng ký, nếu đăng ký thành công thì gán sesion id này với user đăng ký lúc trước.
[Up] [Print Copy]
  [Question]   Re: Xin code demo Login với PHP sử dụng Session 05/01/2008 22:08:26 (+0700) | #5 | 108485
[Avatar]
onlinehack
Member

[Minus]    0    [Plus]
Joined: 04/12/2007 23:07:12
Messages: 116
Location: Ma maison
Offline
[Profile] [PM]

phstiger wrote:
hic! Site có open được đâu ....... 

Tớ đã kiểm tra, link hoàn toàn bình thường .
[Up] [Print Copy]
  [Question]   Re: Xin code demo Login với PHP sử dụng Session 06/01/2008 04:34:11 (+0700) | #6 | 108568
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]

alexdn143 wrote:
Trong file kiểm tra bạn nên tạo một biến session id chẳng hạn. Sau đó bạn thực hiện kiểm tra session id này trước nếu id này tồn tại thì cho phép đi tiếp, nếu không thì bắt đăng ký, nếu đăng ký thành công thì gán sesion id này với user đăng ký lúc trước. 

Thì biết là thế nhưng mình cần demo cơ. Chứ nói như thế thì mình đọc nhiều rùi.
Và còn kết hợp với time to live của session nữa chứ
[Up] [Print Copy]
  [Question]   Re: Xin code demo Login với PHP sử dụng Session 06/01/2008 04:49:03 (+0700) | #7 | 108570
[Avatar]
onlinehack
Member

[Minus]    0    [Plus]
Joined: 04/12/2007 23:07:12
Messages: 116
Location: Ma maison
Offline
[Profile] [PM]

phstiger wrote:

alexdn143 wrote:
Trong file kiểm tra bạn nên tạo một biến session id chẳng hạn. Sau đó bạn thực hiện kiểm tra session id này trước nếu id này tồn tại thì cho phép đi tiếp, nếu không thì bắt đăng ký, nếu đăng ký thành công thì gán sesion id này với user đăng ký lúc trước. 

Thì biết là thế nhưng mình cần demo cơ. Chứ nói như thế thì mình đọc nhiều rùi.
Và còn kết hợp với time to live của session nữa chứ 


Bồ nên đọc kĩ, rồi tự làm smilie Có vẻ bồ chưa hiểu rõ lắm đâu smilie
[Up] [Print Copy]
  [Question]   Re: Xin code demo Login với PHP sử dụng Session 06/01/2008 11:57:46 (+0700) | #8 | 108674
Genetic
Member

[Minus]    0    [Plus]
Joined: 11/07/2006 13:17:17
Messages: 114
Location: Hưng Yên
Offline
[Profile] [PM]
Đơn giản nhất mình có thể demo như thế này, nội dung của 3 file và giải thích

login.php
Code:
<?php
// Đừng bao giờ quên dòng này để khởi động session
session_start();
// UserId và password đặt trước
$userId='demo';
$password='demo';
$errorMessage = '';

if (isset($_POST['txtUserId']) && isset($_POST['txtPassword'])) {
  if (($userId==$_POST['txtUserId']) && ($password==$_POST['txtPassword'])) {
		// ID và password đúng, 
		// set session
		$_SESSION['db_is_logged_in'] = true;
                //set cookie
                setcookie('UserCookie', $userId, time()+3600);  /* hết hạn trong 1 giờ */
		
		// sau khi login thì chuyển qua admin.php
		header('Location: admin.php');
		exit;
	} else {
		$errorMessage = 'Sai id hoặc password, mời nhập lại';
	          }
 }

?>
<html>
<head>
<title>Login</title>
</head>

<body>
<?php
if ($errorMessage != '') {
   echo $errorMessage; 
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="frmLogin" id="frmLogin">
 <table width="400" border="1" align="center" cellpadding="2" cellspacing="2">
  <tr>
   <td width="150">User Id</td>
   <td><input name="txtUserId" type="text" id="txtUserId"></td>
  </tr>
  <tr>
   <td width="150">Password</td>
   <td><input name="txtPassword" type="password" id="txtPassword"></td>
  </tr>
  <tr>
   <td width="150"> </td>
   <td><input name="btnLogin" type="submit" id="btnLogin" value="Login"></td>
  </tr>
 </table>
</form>
</body>
</html>

Nhiệm vụ của file trên là để gõ vào UserId và password, thông thường thì 2 thứ đó phải được lấy ra từ database

admin.php
Code:
<?php
session_start();

// is the one accessing this page logged in or not?
if (!isset($_SESSION['db_is_logged_in']) || $_SESSION['db_is_logged_in'] !== true) {

   // Chưa login, chuyển qua trang login
   header('Location: login.php');
   exit;
}

?>
<html>
<head>
<title>Admin Page</title>
</head>

<body>
<p>Chào bạn <b> <?php echo $_COOKIE['UserCookie']; ?> </b></p> 
<p>Bạn đang ở trang Admin</p>
<p><a href="logout.php">Click here to Logout</a> </p>
</body>
</html>

Nếu chưa login thì giá trị session chưa được set, nó sẽ chuyển qua trang login.php

logout.php

Code:
<?php
session_start();
if (isset($_SESSION['db_is_logged_in']))  {
   unset($_SESSION['db_is_logged_in']);
   setcookie('UserCookie', "", -1);
}

// trở về trang login
header('Location: login.php');
?>


[Up] [Print Copy]
  [Question]   Re: Xin code demo Login với PHP sử dụng Session 08/01/2008 12:45:25 (+0700) | #9 | 109014
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Cảm ơn các bạn rất nhiều, mình vẫn còn một chỗ chưa rõ là: Thường thì các website hay forum sẽ load user and pass của user từ CSDL lên. Vậy code để load lên đó có nên đặt ở trong file login.php này luôn hay phải đặt ở một file khác.
Và nếu đặt ở một file khác thì việc truyền info user and pass của user đó qua POST sẽ cần hash lại tùy coder đúng ko bạn? Vì mình thấy trong code của bạn gọi lại chính file login.php để lấy info từ method POST.
Mình nghĩ như thế này. Với 3 file như trên. Ta có thể viết thêm một file mới nữa để nhận thông tin từ login.php để chứng thực user đó. Nếu đúng thì tạo session và load site admin.php. Nếu không thì gọi lại file login.php.
Mình nói vậy có đúng không vậy mấy Bác......

[Up] [Print Copy]
  [Question]   Re: Xin code demo Login với PHP sử dụng Session 08/01/2008 14:18:32 (+0700) | #10 | 109043
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]

phstiger wrote:
Cảm ơn các bạn rất nhiều, mình vẫn còn một chỗ chưa rõ là: Thường thì các website hay forum sẽ load user and pass của user từ CSDL lên. Vậy code để load lên đó có nên đặt ở trong file login.php này luôn hay phải đặt ở một file khác.
Và nếu đặt ở một file khác thì việc truyền info user and pass của user đó qua POST sẽ cần hash lại tùy coder đúng ko bạn? Vì mình thấy trong code của bạn gọi lại chính file login.php để lấy info từ method POST.
Mình nghĩ như thế này. Với 3 file như trên. Ta có thể viết thêm một file mới nữa để nhận thông tin từ login.php để chứng thực user đó. Nếu đúng thì tạo session và load site admin.php. Nếu không thì gọi lại file login.php.
Mình nói vậy có đúng không vậy các bạn......

 

Hic! nhờ MOD xóa dùm cái relay này. Lỡ tay bấm nhầm "Trích" thay vì "Chỉnh"....hic
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|