09/10/2018, 22:54

Hỏi về vấn đề logout trong php

em có 1 code admin.php sau Em có dùng session để lưu lại acc khi admin login, chỉ khi nào họ thoát khỏi page thì mới cắt session. Giờ em muốn thực hiện 1 hàm logout để admin khi logged in sẽ có thể click vào logout để thoát. Liệu có hàm logout hay cách gì không ạ? Em không rành về php lắm Mong các anh chỉ

Còn đây là code trang admin.php đó
Code:
 <? session_start(); ?>
<?
  $demologin= 1; // 0: demo  , 1: login
  $passwordlogin = "hoang";  // password dung de dang nhap website
  $websitename = "admin.php" ;  // ten file
    
  $textlogin = "Hãy nhập vào password cũa admin";
  $titlelogin = "Vui lòng nhập password để đăng nhập";
  $passworddemo = "password: <font color="#0000FF">$passwordlogin</font>";
  $loginerror = "<font color="#FF0000">Bạn chưa nhập password hay password không đúng</font><br>Hãy quay lại và nhập lại password";
  
 if (!$_POST&&!@$_SESSION['loged']){
   echo "<center>";
   echo "<br>";
   echo "<br>";
   echo "<br>";
   echo "<br>";
   echo "$titlelogin";
   echo "<form name="pp" method="post" action="$websitename"> 
"; //Doi ten pass_website.php cho dung voi ten file cua ban
   echo "<input type="password" name="pass"> 
"; 
   echo "<input type="submit" value="Login"> 
"; 
   echo "</form>
";
   //---------Begin lua cho password--------
   if ($demologin=="0"){
     echo "$passworddemo "; 
   }
   else{
     echo "$textlogin" ; 
   }
   //---------END lua cho password--------
   echo "</center>";
  }
  else 
  {
	if ((@$_POST['pass'] == "$passwordlogin"||@$_SESSION['loged'])) { //Password demo, ban co the thay doi password khac	
//----------------------BEGIN WEBSITE // Duoc thay doi trong doan nay----------------------------------

$_SESSION['loged'] = true;


//----------------------END WEBSITE // Duoc thay doi trong doan nay----------------------------------
	  } 
	  else { 
	    $_SESSION['loged'] = false;
	  }
  }
  if (@$_SESSION['loged'])
  {
	$act = @$_REQUEST['act'];
	if (!isset($act))
		$act = "main";
	include "admin/".$act.".php";
  }
  else
  {
     echo "<center>";
        echo "<br>";
        echo "<br>";
        echo "<br>";
        echo "<br>";
	    echo "$loginerror"; 
		echo "</center>";
  }
?>
NsT viết 01:04 ngày 10/10/2018
biến chủ đạo của cậu trong phần login là $_SESSION['loged']

Khi nhập đúng user & pw thì $_SESSION['loged']= true;

Vậy để logout cậu thêm vào code này

<a href=./?tn=logout>Logout</a>

<?
if($_GET['tn']=='logout')
{
$_SESSION['loged'] = false;
echo <meta http-equiv='Refresh' content='2; url=$PHP_SELF'>";
}
?>

Thử xem sao
amida viết 01:05 ngày 10/10/2018
Em đã thử rồi, khi click vào thì nó thoát admin page rồi chuyển về home Nhưng khi click vào phần administration thì nó kô hỏi Login nữa mà cho login thẳng vào admin control page luôn Như vậy thì session kô hiệu quả chỗ đó rồi
NsT viết 00:56 ngày 10/10/2018
Quote Được gửi bởi amidan
Em đã thử rồi, khi click vào thì nó thoát admin page rồi chuyển về home Nhưng khi click vào phần administration thì nó kô hỏi Login nữa mà cho login thẳng vào admin control page luôn Như vậy thì session kô hiệu quả chỗ đó rồi
đó là do phần code của bạn, nó ko check $_SESSION[loged] có == true ko mà chỉ check xem có tồn tại hay ko?

edit lại 1 chút thành

if($_GET['tn']=='logout')
{
session_destroy(); // or unset($_SESSION[loged]);
echo <meta http-equiv='Refresh' content='2; url=$PHP_SELF'>";
}
?>
dracubin viết 01:09 ngày 10/10/2018
Để tránh lỗi với session_destroy() bạn cũng có thể làm như sau:

<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}

// Finally, destroy the session.
session_destroy();
?>

Cái này tui lấy trong PHP Manual
NsT viết 00:59 ngày 10/10/2018
Quote Được gửi bởi dracubin
Để tránh lỗi với session_destroy() bạn cũng có thể làm như sau:

<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}

// Finally, destroy the session.
session_destroy();
?>

Cái này tui lấy trong PHP Manual
Cái này cũng ko có gì khác mà, chỉ là destroy cả cookie nữa. 1 cái session_destroy() cũng đủ rồi nếu như code của bạn ở trên chỉ có vậy.
Bài liên quan
0