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..
Bài liên quan





File 1: login.html
<?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; } ?><?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"); } } ?><? // 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'); ?>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 .
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
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.