亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

單擊注銷按鈕刷新 php 中的頁面

單擊注銷按鈕刷新 php 中的頁面

PHP
Qyouu 2021-09-18 10:21:42
我創建了一個頁面作為 index.php 并添加了登錄代碼。它對我來說工作正常,但是當我點擊注銷按鈕時,它正在刷新頁面,如果我直接輸入 URL 就像localhost/sample/testing.php它打開一樣,如果我也沒有登錄。用戶在登錄之前無法訪問任何頁面。這是我編寫的代碼。我用靜態數據登錄,因為沒有數據庫。索引.php<?php session_start(); $userinfo = array(            'user1'=>'password1',            'user2'=>'password2'            );if(isset($_GET['logout'])) {  $_SESSION['username'] = '';  header('Location:  ' . $_SERVER['PHP_SELF']);}if(isset($_POST['username'])) {  if($userinfo[$_POST['username']] == $_POST['password']) {      $_SESSION['username'] = $_POST['username'];      header("Location:  dashboard.php");  }else {     header("Location:  index.php");  }}?>邊欄.php<?php if($_SESSION['username']): ?><ul>    <li class="dropdown profile_details_drop">        <a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">            <div class="profile_img">                <div class="user-name">                    <p><a href="?logout=1">Logout</p>                </div>                <div class="clearfix"></div>            </div>        </a>    </li></ul><?php endif; ?>如果任何用戶未登錄,那么他們也可以看到內頁。他們在登錄之前無法看到該頁面。
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

您已設置$_SERVER['PHP_SELF']. 這就是它重定向到同一頁面的原因。你需要改變它,例如:login.php


if(isset($_GET['logout'])) {

  unset($_SESSION['username']);// do not set it as empty, unset it

  //header('Location:  ' . $_SERVER['PHP_SELF']);//change this line to

 header('Location:  login.php');

}

另一個錯誤是在您將它重定向到的 else 條件中,index.php這就是未登錄用戶能夠看到索引頁面的原因。


else {

  //header("Location:  index.php");// change this to

  header('Location:  login.php');

}

注意:我只添加login.php了例如。將未登錄的用戶重定向到您想要的位置。


查看完整回答
反對 回復 2021-09-18
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

首先,注銷時銷毀會話。并將其重定向到登錄頁面。假設 index.php 是登錄頁面。


 if(isset($_GET['logout'])) {

     session_start();

     session_destroy();

    header('Location: index.php');

 }

在 sidebar.php 中,檢查會話是否設置。如果未設置會話,則表示用戶未登錄。您可以通過將他們重定向到登錄頁面來阻止他們訪問該頁面


 <?php

 session_start();

 if (!isset($_SESSION["username"]))

{  

    header("location: index.php");

 } ?>

<ul>

   <li class="dropdown profile_details_drop">

      <a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">

         <div class="profile_img">

            <div class="user-name">

               <p>

      <a href="?logout=1">Logout</p>                                                                       

      </div>                                  

      <div class="clearfix"></div>    

      </div>  

      </a>                            

   </li>

</ul>


查看完整回答
反對 回復 2021-09-18
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

首先,你的代碼應該被我美化。


其次,您忘記關閉a href標簽,因此您的$_GET陳述 isset 不是真的。因此,通過單擊該鏈接,該頁面將再次檢查if(isset($_POST['username']))哪個是真的,并且您將被重定向到您的標題的原因。


考慮制定的logout.php,你使用session_destroy和session_unset你重定向你的用戶login.php,例如:


登出.php:


<?php

session_start();

session_unset($_SESSION['username']);

session_unset();

session_destroy();

header('Location: login.php');

?>

最后,考慮不使用$_GET,而偏愛$_POST或$_SESSION變量,只是因為在 URL 上不可見的原因。


查看完整回答
反對 回復 2021-09-18
  • 3 回答
  • 0 關注
  • 147 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號