PHPでログアウトボタンをクリックした後にブラウザの戻るボタン機能を無効にする方法

タマレ

ブラウザの戻るボタンに問題があります。ユーザーが[ログアウト]を押すと、セッションとCookieを破棄する必要があります。私は次のコードを書きました:

index.php

<!DOCTYPE html>
<html lang="en">
<head>
    <script type="text/javascript">
        function disablebackbutton(){
            window.history.forward();
        }
        disablebackbutton();
    </script>
</head>
<body>
<form name="loginform" method="post" action="<?php echo __PROJECT_LINK__; ?>/php/login_exec.php">
                <div class="modal-body">
                    <div class="form-horizontal">
                        <div class="form-group">
                            <label class="control-label">
                                <?php
                                if( isset($_SESSION['ERRMsg_ARR']) && is_array($_SESSION['ERRMsg_ARR']) && count($_SESSION['ERRMsg_ARR']) >0 ) {
                                    echo '<ul class="err">';
                                    foreach($_SESSION['ERRMsg_ARR'] as $msg) {
                                        echo '<span class="label label-warning" style="margin-left: 5px;">',$msg,'</span>';
                                    }
                                    echo '</ul>';
                                    unset($_SESSION['ERRMsg_ARR']);
                                }
                                ?>
                            </label>
                        </div>
                        <div class="subnav subnav-fixed nav navbar" style="margin-top: 10px; margin-right: 10px; margin-left: 10px;">
                            <ul class="nav nav-pills">
                                <li style="margin-top: 10px;">
                                    <span class="label label-default" style="margin-left: 22px;">Username</span>
                                    <input type="text" id="inputUserName" name="username" placeholder="Username" style="margin-left: 5px;">
                                </li>
                                <li style="margin-top: 10px;">
                                    <span class="label label-default" style="margin-left: 22px;">Password</span>
                                    <input type="password" id="inputPassword" name="password" placeholder="Password" style="margin-left: 5px;">
                                </li>
                                <li style="margin-top: 10px; margin-bottom: 10px;">
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <!--?php $this->btnLogLogin->Render();?-->
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    <button type="submit" class="btn btn-primary">Sign In</button>
                </div>
            </form>
</body>
</html>

login_exec.php

<?php
    //Start session
    if (session_status() == PHP_SESSION_NONE) {
        session_start();
    }
    //Include database connection details
    require_once('connection.php');

    //Array to store validation errors
    $errmsg_arr = array();

    //Validation error flag
    $errflag = false;

    //Function to sanitize values received from the form. Prevents SQL injection
    function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
    $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
    }
     if(isset($_POST['username']))
     {
    //Sanitize the POST values
    $username = ($_POST['username']);
    $password = ($_POST['password']);

    //Input Validations
    if($username == '') {
    $errmsg_arr[] = 'Username missing';
    $errflag = true;
    }
    if($password == '') {
    $errmsg_arr[] = 'Password missing';
    $errflag = true;
    }

    //If there are input validations, redirect back to the login form
    if($errflag==true) {
    $_SESSION['ERRMsg_ARR'] = $errmsg_arr;
    session_write_close();
    header("location:../index.php");
    exit();
    }

    //Create query
    $qry="SELECT * FROM admin WHERE user_name='$username' AND password='$password'";
    $result=mysql_query($qry);

    //Check whether the query was successful or not
    if($result) {
    if(mysql_num_rows($result)) {
        while($row = mysql_fetch_array($result))
        {
            if($row['User_Status']=="Active"){
                $expire=time()+60*60*24*30; //1month
                setcookie("User_id", $row['User_id'], $expire);
                $name = $row['full_name'];
                $parts = explode(" ", $name);
                $lastname = array_pop($parts);
                $firstname = implode(" ", $parts);
                $_SESSION['USER']  = $firstname;
                $_SESSION['UID']  = $row['User_id'];
                $_SESSION['URights'] = $row['Rights'];
                header("location:../welcome.php");
            }
            else{
                $errmsg_arr[] = 'User Status is Block. Please contact your Administrator.';
                $errflag = true;
                if($errflag) {
                    $_SESSION['ERRMsg_ARR'] = $errmsg_arr;
                    session_write_close();
                    header("location: ../index.php");
                    exit();
                }
            }
        }
    }
    else {
    //Login failed
    $errmsg_arr[] = 'Username and Password not found';
    $errflag = true;
    if($errflag) {
    $_SESSION['ERRMsg_ARR'] = $errmsg_arr;
    session_write_close();
    header("location: ../index.php");
    exit();
    }
    }
    }else {
    die("Query failed");
    }
    }
    ?>

welcome.php

<?php include 'qcubed.inc.php'; ?>
<?php
    $User_Name = $_SESSION['USER'];
    ?>
<html>

   <head>
      <title>Welcome</title>
   </head>
   <body>
      <h1>Welcome <?php echo $User_Name; ?></h1>
      <h2><a href = "<?php echo __PROJECT_LINK__; ?>/Info.php">Info</a></h2> 
      <h2><a href = "<?php echo __PROJECT_LINK__; ?>/php/logout.php">Sign Out</a></h2>
   </body>
 </html>

Info.php

    <?php include '../../qcubed.inc.php';?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title><?php echo __PROJECT_TITLE__; ?> - Full Info</title>
    <script type="text/javascript">
            function disablebackbutton(){
                window.history.forward();
            }
            disablebackbutton();
        </script>
</head>
<?php
if(isset($_SESSION['UID']) && $_SESSION['UID'] != "")
{
//Task to do
        $User_Name = $_SESSION['USER'];
?>
<body>
         <h1>Info about <?php echo $User_Name; ?></h1> 
          <h2><a href = "<?php echo __PROJECT_LINK__; ?>/php/logout.php">Sign Out</a></h2>
       </body>
<?php
}
else{
    //redirect URL
    ?>
       <script>
            alert('You must Login first.');
            window.location.href='../../index.php';
        </script>";
   <?php

    exit();
}
?>

     </html>

logout.php

<?php
//session_write_close();
    session_start(); # NOTE THE SESSION START
    $expire=time()-60*60*24*30; //1month
    if(isset($_COOKIE['User_id'])):
        setcookie('User_id', '', $expire, '/');
    endif;
    unset($_SESSION['UID']);
    unset($_SESSION['USER']);
    unset($_SESSION['URights']);
    unset($_SESSION['UReg']);
    $_SESSION = array();
    foreach(array_keys($_SESSION) as $k) unset($_SESSION[$k]);
    session_unset();
    session_destroy();
    header("location: ../index.php");
    exit(); # NOTE THE EXIT
?>

Info.phpからログアウトを押した後、ブラウザの戻るボタンを押すと、Info.phpページに以前のログインユーザーページとセッションユーザー名が表示されますが、すべてのページのヘッドセクションで次のJavaScriptを使用すると、すべてが無効になります。ログイン時のブラウザ戻るボタンも。

<script type="text/javascript">
        function disablebackbutton(){
            window.history.forward();
        }
        disablebackbutton();
    </script>

ログアウトしてからブラウザの戻るボタンを無効にしたい。私を助けてください。

タマレ

ついに私は私の問題を解決しました..... :-)私はこの次のコードをで使用します

logout.php

<html>
<head>
    <script type = "text/javascript" >
    window.history.forward();
    function preventBack() { window.history.forward(1); }
    setTimeout("preventBack()", 0);
    window.onunload = function () { null };
</script>

</head>
<body onload="preventBack();" onpageshow="if (event.persisted) preventBack();" onunload="">
Please Wait..
<?php

session_start(); # NOTE THE SESSION START
$expire=time()-60*60*24*30; //1month
if(isset($_COOKIE['User_id'])){
    setcookie('User_id', '', $expire);
}
unset($_SESSION['UID']);
unset($_SESSION['USER']);
unset($_SESSION['URights']);
unset($_SESSION['UReg']);
$_SESSION = array();
foreach(array_keys($_SESSION) as $k) unset($_SESSION[$k]);
session_unset();
session_destroy();

header("Refresh: 2;url=../index.php");
?>
</body>
</html>

これで、ログアウト後にブラウザの戻るボタンを使用してセッションを破棄することを回避できます。貴重なご支援ありがとうございました...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

jhipsterプロジェクトでログアウトした後にブラウザの戻るボタンを無効にする方法

分類Dev

Javaスクリプト、Ruby onRailsでブラウザの戻るボタンを無効にする方法

分類Dev

Spring MVCは、ログアウト後に戻るボタンのアクションを無効にします

分類Dev

角度7でログアウトした後に戻るボタンを無効にする方法

分類Dev

ブラウザの戻るボタンをクリックしたときにセッションを無効にしてアクセスをブロックするにはどうすればよいですか?

分類Dev

ブラウザの戻るボタンをクリックしたときにセッションを無効にしてアクセスをブロックするにはどうすればよいですか?

分類Dev

ブラウザの戻るボタンを無効にする

分類Dev

Codeigniterがログアウトボタンを押して、ブラウザに戻るボタンを無効にします

分類Dev

C#でブラウザのバックボタンを無効にする

分類Dev

ログアウト時にブラウザの戻るボタンを無効にする問題に直面しています

分類Dev

c#asp.netにログインした後、Webブラウザの戻るボタンを無効にします

分類Dev

ユーザーが角度4の特定のコンポーネントでブラウザの戻るボタンをクリックしたときにのみ機能を検出または実行するにはどうすればよいですか?

分類Dev

ログアウトに成功した後でも、ブラウザの戻るボタンを押して再度ログインしてください

分類Dev

Rシャイニーアプリでブラウザの戻るボタンを無効にする

分類Dev

デスクトップアプリケーションのブラウザーウィジェットを使用して、現在のバージョンのLivecodeでブラウザーの進むボタンと戻るボタンをプログラムするにはどうすればよいですか?

分類Dev

サインインに成功した後、ユーザーがブラウザの戻るボタンをクリックすると、「ログイン」ページが表示されないはずです。

分類Dev

JavaScriptを使用してブラウザの戻るボタンを無効にする方法

分類Dev

JavascriptまたはAngularJSでブラウザの戻るボタンを制御または無効にする

分類Dev

ログアウト後にユーザーが戻るボタンを使用して前のページにアクセスできないようにする

分類Dev

WordPressでボタンをクリックした後にボタンを無効にする方法

分類Dev

ユーザーがシステムにログインし続け、ユーザーがログアウトボタンをクリックした後にのみログアウトする方法は?

分類Dev

ユーザーがkotlinのサインアウトボタンをクリックすると、ログイン画面に戻る方法は?

分類Dev

PHPをクリックした後にボタンを無効にする

分類Dev

ブラウザまたはキーボードの戻るボタンをクリックした後、java-scriptで時間を続けます

分類Dev

ブラウザの戻るボタンをクリックしてアイテムを削除した後、jQuery Mobileリストビューの詳細ページは、削除されたアイテムの詳細ビューに戻ります

分類Dev

Flutter Web:FlutterWebアプリケーションでブラウザの戻るボタンを無効にする方法

分類Dev

Androidでアラームウェイク画面を作成し、デフォルトの戻るボタンを無効にする方法は?

分類Dev

jquery / javascriptでクリックXブラウザを閉じるボタンと戻るまたは前のブラウザボタンを区別する

分類Dev

ブラウザの戻るボタンイベントを検出する方法-クロスブラウザ

Related 関連記事

  1. 1

    jhipsterプロジェクトでログアウトした後にブラウザの戻るボタンを無効にする方法

  2. 2

    Javaスクリプト、Ruby onRailsでブラウザの戻るボタンを無効にする方法

  3. 3

    Spring MVCは、ログアウト後に戻るボタンのアクションを無効にします

  4. 4

    角度7でログアウトした後に戻るボタンを無効にする方法

  5. 5

    ブラウザの戻るボタンをクリックしたときにセッションを無効にしてアクセスをブロックするにはどうすればよいですか?

  6. 6

    ブラウザの戻るボタンをクリックしたときにセッションを無効にしてアクセスをブロックするにはどうすればよいですか?

  7. 7

    ブラウザの戻るボタンを無効にする

  8. 8

    Codeigniterがログアウトボタンを押して、ブラウザに戻るボタンを無効にします

  9. 9

    C#でブラウザのバックボタンを無効にする

  10. 10

    ログアウト時にブラウザの戻るボタンを無効にする問題に直面しています

  11. 11

    c#asp.netにログインした後、Webブラウザの戻るボタンを無効にします

  12. 12

    ユーザーが角度4の特定のコンポーネントでブラウザの戻るボタンをクリックしたときにのみ機能を検出または実行するにはどうすればよいですか?

  13. 13

    ログアウトに成功した後でも、ブラウザの戻るボタンを押して再度ログインしてください

  14. 14

    Rシャイニーアプリでブラウザの戻るボタンを無効にする

  15. 15

    デスクトップアプリケーションのブラウザーウィジェットを使用して、現在のバージョンのLivecodeでブラウザーの進むボタンと戻るボタンをプログラムするにはどうすればよいですか?

  16. 16

    サインインに成功した後、ユーザーがブラウザの戻るボタンをクリックすると、「ログイン」ページが表示されないはずです。

  17. 17

    JavaScriptを使用してブラウザの戻るボタンを無効にする方法

  18. 18

    JavascriptまたはAngularJSでブラウザの戻るボタンを制御または無効にする

  19. 19

    ログアウト後にユーザーが戻るボタンを使用して前のページにアクセスできないようにする

  20. 20

    WordPressでボタンをクリックした後にボタンを無効にする方法

  21. 21

    ユーザーがシステムにログインし続け、ユーザーがログアウトボタンをクリックした後にのみログアウトする方法は?

  22. 22

    ユーザーがkotlinのサインアウトボタンをクリックすると、ログイン画面に戻る方法は?

  23. 23

    PHPをクリックした後にボタンを無効にする

  24. 24

    ブラウザまたはキーボードの戻るボタンをクリックした後、java-scriptで時間を続けます

  25. 25

    ブラウザの戻るボタンをクリックしてアイテムを削除した後、jQuery Mobileリストビューの詳細ページは、削除されたアイテムの詳細ビューに戻ります

  26. 26

    Flutter Web:FlutterWebアプリケーションでブラウザの戻るボタンを無効にする方法

  27. 27

    Androidでアラームウェイク画面を作成し、デフォルトの戻るボタンを無効にする方法は?

  28. 28

    jquery / javascriptでクリックXブラウザを閉じるボタンと戻るまたは前のブラウザボタンを区別する

  29. 29

    ブラウザの戻るボタンイベントを検出する方法-クロスブラウザ

ホットタグ

アーカイブ