2016-08-24 55 views
0

嘗試在未登錄的情況下創建頁面重定向。我將嘗試展示我的意思。PHP - 無法在「if」語句中更改會話變量

在index.php:

<?php 
// initialization of login system and generation code 
$oSimpleLoginSystem = new SimpleLoginSystem(); 
echo $oSimpleLoginSystem->getLoginBox(); 
session_start(); 
$_SESSION["loggedin"] = False; 

// class SimpleLoginSystem 
class SimpleLoginSystem { 

    // variables 
    var $aExistedMembers; // Existed members array 

    // constructor 
    function SimpleLoginSystem() { 
     $this->aExistedMembers = array(
      'test' => MD5('test'), //Sample: MD5('qwerty') 
     ); 
    } 

    function getLoginBox() { 
     ob_start(); 
     require_once('login_form.html'); 
     $sLoginForm = ob_get_clean(); 

     $sLogoutForm = '<a href="'.$_SERVER['PHP_SELF'].'?logout=1">logout</a>'; 

     if ((int)$_REQUEST['logout'] == 1) { 
      if (isset($_COOKIE['member_name']) && isset($_COOKIE['member_pass'])) 
       $this->simple_logout(); 
     } 

     if ($_REQUEST['username'] && $_REQUEST['password']) { 
      if ($this->check_login($_REQUEST['username'], MD5($_REQUEST['password']))) 
      { 
       $_SESSION["loggedin"] = True; 
       $this->simple_login($_REQUEST['username'], $_REQUEST['password']); 
       header('Location: /site.html'); 
      } 
      else { 
       return 'Username or Password is incorrect' . $sLoginForm; 
      } 
     } else { 
      if ($_COOKIE['member_name'] && $_COOKIE['member_pass']) { 
       if ($this->check_login($_COOKIE['member_name'], $_COOKIE['member_pass'])) { 
        header('Location: /site.html'); 
       } 
      } 
      return $sLoginForm; 
     } 
    } 

在site.php:

<?php 
session_start(); 
if ($_SESSION["loggedin"] == 0) 
{ 

    header('Location: http://test-weeabear.c9users.io/'); 
} 

else 
{ 
return "It worked!" 
} 
?> 

爲什麼當我打開site.html,它重定向我回index.html的,甚至登錄後?

注:我改變了一些東西,比如鏈接和文件名。爲了隱私。

+0

寫在session_start()之前,如果site.php條件。 –

+0

仍然將我重定向回。不知道什麼是錯的。 –

+0

是你的header語句在實際代碼中包含index.php的url嗎?嘗試打印$ _SESSION並退出,並檢查您收到的內容。 –

回答

1

您在您的site.php

1

開始變化需要session_start()從html的文件擴展名.PHP

+0

我的不好,應該是PHP。 –

+0

是的..請在此之後檢查 –

1

要調用getLoginBox然後改變的loggedIn回false。您需要在標題重定向後包含退出。

像這樣:

header('Location: /site.php');//changed to file extension as .php 
exit;