簡體   English   中英

如何在php中注銷用戶?

[英]How to logout a user in php?

我正在創建一個登錄系統,但是我只能使它正常工作,現在我很難為我的網站設置注銷功能。 它尚未真正托管,因此安全性將在以后發布。 我已經嘗試了session_destroy和unset的各種用法,但是我無法使其正常工作。 任何幫助,將不勝感激。

我的PHP

<?php
session_start();
/*This is the equivalent of login.php*/
$database = "forum";  // the name of the database.
$server = "localhost";  // server to connect to.
$db_user = "root";  // mysql username to access the database with.
$db_pass = "";  // mysql password to access the database with.
$table = "members";    // the table that this script will set up and use.
$link = mysql_connect($server, $db_user, $db_pass);
mysql_select_db($database,$link);

if (isset($_POST['fsubmitted'])) {
// Get the data passed from the form
$username = $_POST['username'];
$pass = $_POST['pass'];

// Do some basic sanitizing
$username = stripslashes($username);
$pass = stripslashes($pass);
$encryptedpass = md5($pass);

$sql = "SELECT * from members where username = '$username' and password = '$encryptedpass'";
$result = mysql_query($sql);


$count = 0;

$count = mysql_num_rows($result);

if ($count == 1) {
     $_SESSION['loggedIn'] = "true";
    header("Location: index.php"); // This is wherever you want to redirect the user to
    exit();

} else {
     $_SESSION['loggedIn'] = "false";
     echo '<div class="errormsgbox">Your username and password combo was incorrect!</div>';
     var_dump($result);
    echo $sql;
}
}

if ($_SESSION['loggedIn'] = "true") {
    echo '<div class="success">You are now logged in!</div>';
}

if (isset($_SESSION['loggedin']) && (time() - $_SESSION['loggedin'] > 1800)) {
    // last request was more than 30 minutes ago
    session_unset();     // unset $_SESSION variable for the run-time 
    session_destroy();   // destroy session data in storage
}
$_SESSION['loggedin'] = time(); // update last activity time stamp

?>

采用:

session_start();

具有以下任一條件:

session_destroy();
session_unset();
unset($_SESSION["loggedin"]);
$_SESSION = array();

我可以在您的代碼中看到兩個錯誤:

  • 您尚未開始會話
  • 您尚未告訴代碼要取消/銷毀哪個會話

開始會議:

將其作為您的PHP代碼的第一行: session_start();

注銷

讓我們仔細看一下這段代碼:

if (isset($_SESSION['loggedin']) && (time() - $_SESSION['loggedin'] > 1800)) {
    // last request was more than 30 minutes ago
    session_unset();     // unset $_SESSION variable for the run-time 
    session_destroy();   // destroy session data in storage
}

您尚未告訴代碼要unsetdestroy哪個會話!

為此,必須在括號內包括一個會話變量。

試試這個代碼:

if (isset($_SESSION['loggedin']) && (time() - $_SESSION['loggedin'] > 1800)) {
// last request was more than 30 minutes ago
session_unset($_SESSION['loggedin']);     // unset $_SESSION variable for the run-time 
session_destroy($_SESSION['loggedin']);   // destroy session data in storage
} 

我所做的只是告訴代碼要unsetdestroy哪個會話

更新
如果那不適合您,請嘗試此操作。

if (isset($_SESSION['loggedin']) && (time() - $_SESSION['loggedin'] > 1800)) {
// last request was more than 30 minutes ago
unset($_SESSION['loggedin']);     // unset $_SESSION variable for the run-time 
$_SESSION['loggedin'] = "false";
} 

要查看的另一件好事是具有注銷按鈕。 此處說明: 注銷按鈕php

希望這對您有所幫助,如果可以進一步幫助,請告訴我!

在腳本中注銷某人時,只需執行以下操作:

session_start();
unset($_SESSION);
session_destroy();

您還應該在上面顯示的login.php中的某個時刻調用session_start()

我會嘗試使用此功能:

function logout(){
    if(session_id() == '') { // start session if none found
        session_start();
    }

    session_unset();         
    session_destroy();
    unset($_SESSION['loggedIn']);
}

使用此功能所需要做的只是調用logout();。 您想讓此人登出的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM