1

ログインシステムを作成していて、動作するようになりましたが、Web サイトのログアウト機能を作成するのに苦労しています。実際にはまだホストされていないため、セキュリティは後で提供されます。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

?>
4

4 に答える 4

3

使用する:

session_start();

次のいずれかを使用します。

session_destroy();
session_unset();
unset($_SESSION["loggedin"]);
$_SESSION = array();
于 2013-07-30T15:01:27.367 に答える
2

コードに 2 つのエラーが表示されます。

  • セッションを開始していません
  • どのセッションを設定解除/破棄するかをコードに伝えていません

セッションの開始:

これを 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
}

unsetまたはdestroy!へのセッションをコードに伝えていません。

これを行うには、括弧内にセッション変数を含める必要があります。

このコードを試してください:

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";
} 

見ておくべきもう1つの良い点は、ログアウトボタンがあることです. これはここで説明されています: Logout button php

これがお役に立てば幸いです。さらにお役に立てることがあればお知らせください。

于 2013-07-30T14:29:24.763 に答える
0

誰かをログアウトするスクリプトでは、次のように記述します。

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

session_start()また、上に示した login.php のある時点で呼び出す必要があります。

于 2013-07-30T14:28:13.743 に答える
0

私はこの関数を使用してみます:

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

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

この関数を使用するために必要なことは、logout(); を呼び出すことだけです。その人をログアウトさせたい場所。

于 2013-07-30T14:30:14.323 に答える