09/10/2018, 23:07

[Q] PHP Login/Logout using Cookie?

co bac nao bit lam trang login+logout dung cookies trong PHP khong? La`m on cho tho giao..
bpmtri viết 01:17 ngày 10/10/2018
Tham khảo 4 file sau cho bạn hình dung cách hiện thực Login/Log out đơn giản bằng Cookie nè.

File 1: login.html
Code:
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form action="login.php" method="POST">
Username: <INPUT TYPE="text" name="username"><br>
Password: <INPUT TYPE="password" name="password"><br>
<INPUT TYPE="submit" name="submit" value="Login">
</form>
</body>
</html>
File 2: login.php
Code:
<?php
// check for login
stripslashes($_POST['username']);
stripslashes($_POST['password']);

// kiểm tra xem nếu username & password hợp lệ thì
// set cookie để lần sau dùng
if (Login($_POST['username'], $_POST['password']))
{
 if (!setcookie('UserID',$_POST['username']))
      echo "Error on setcookie()";
 else
     header('Location: index.php'); // redirect to index.php
}
// replace by your self
function Login($theUsername, $thePassword)
{
// bạn tự viết phần đọc CSDL để kiểm tra username & password nhé
 return true;
}
?>
File 3: index.php
Code:
<?php
CheckLogin();

function CheckLogin()
{
 if (isset($_COOKIE['UserID']) && strlen($_COOKIE['UserID']) > 0)
 {
  echo "You are logged in as: ".$_COOKIE['UserID'];
 }
 else
 {
  header("Location: login.html");
 }
}
?>
File 4: logout.php
Code:
<?
// xoá cookie bằng mẹo, nghĩa là cho cookie hết hạn vào khoảng 1 giờ trước
setcookie ('UserID', '', time() - 3600);
header('Location: login.html');
?>
Chúc bạn thành công nhé!
Deathly Smile viết 01:13 ngày 10/10/2018
Sao ko sử dụng luôn setcookie('UserID') để logout mà lại phải "xoá bằng mẹo" như bpmtri nói ?
bpmtri viết 01:07 ngày 10/10/2018
Hihi, để chắc chắn Browser xoá luôn file cookies trên đĩa thôi. Tại mình hỏng chắc dùng setcookie('UserID') nó có xoá sạch sẽ luôn không nên phải làm như vậy. Nếu nó xoá sạch sẽ cookies thì làm như bạn Deathly Smile sẽ đơn giản hơn.
redskin viết 01:18 ngày 10/10/2018

Nhân tiện các bạn bàn về cách login vào web dùng PHP thì cho mình hỏi là ngoài cách dùng cookies nói trên có thể làm login/logout bằng cách dùng biến session (nói cho rõ là giả sử mình có một trang web với nhiều nội dung khác nhau nếu không login thì chỉ xem được trang home của nó ->phần login nằm ở trang home mà không xem được các nội dung còn lại trên trang . Nếu login thì mới xem được đầy đủ nội dung của các trang còn lại bằng các liên kết từ trang home ) có được không ? Nếu được thì xin chỉ giúp .
Cám ơn rất nhiều .
nguyenthu viết 01:14 ngày 10/10/2018
Chào bạn,
Bạn có thể làm một trang home thí dụ tên là index.php.
Trên trang này có ít nhất là 2 form : một form1 vớc method="post" cho phép bạn hay user nhập userid, pw, và một form2 với method="get" và action="index.php", tức là nó gọi lại nó để nhận lại userid, pw của form1.
Xong bạn dùng PHP (hay ngôn ngữ nào đó trên Server, như asp) để thử :
Nếu UserID='giá trị đúng' và PW='đúng là PW' thì
{
...mã HTML để cho thấy phần giấu người ngoài...
}
nếu không
{
... mã HTML để cho thấy phần lộ cho người ngoài...
}
Dĩ nhiên, nếu có nhiều UserID và PW thì bạn có thể :
1) Dùng một cơ sở dữ liệu xem UserID và PW có trong CSDL hay không.
2) Hay dùng text file thường xem nó có trong đó không.
3) Hay nếu quá ít, dùng if trong block if khác :
if (UID1=='cuteo' && PW='haman') {... OK...}
else {if (UID2=='cuty' && PW='hamchoi') {...}
}
OK?
Chúc thành công.
Thân
Nhân Tâm viết 01:15 ngày 10/10/2018
Các Bác cho hỏi:

Trang login mình khai báo setcookie:

If(Remember)
{
$cookie_date = 30;
@setcookie("username",$_SESSION['auth_user'], time() + 86400 * $cookie_date, "/");}

Trang logout:
if (isset($_COOKIE[session_name('username')]))
{
setcookie("username","",time() - 3600);
hoặc//setcookie("username");
}

Tại sao máy vẫn không hiểu là đã xóa cookie ở trang logout ?
bác nào biết xin chỉ giúp ? cảm ơn các bác nhiều.
kid08 viết 01:17 ngày 10/10/2018
u thử trừ đi chính số u vừa set cookie xem
VietDuc viết 01:09 ngày 10/10/2018
Check it out http://phpviet.org/community/showthread.php?p=83#post83
bagia_nhayhiphop viết 01:14 ngày 10/10/2018
thế có thể làm login/logout mà ko cần dùng đến CSDL ko, tui đang muốn làm một cái đơn giản nhưng khó quá, chỉ đơn giản vậy thôi
Bài liên quan
0