2016-08-24 14 views
0

ログインしていなければページをリダイレクトしようとしています。私が意味するものを表示しようとします。 site.phpでPHP - "if"ステートメントでセッション変数を変更できない

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

:index.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

あなたのヘッダーステートメントは、実際のコードでindex.phpのURLを含んでいますか? $ _SESSIONの横にexitを付けて印刷し、受け取っているものを確認してください。 –

答えて

1

あなたがgetLoginBoxを呼び出した後、バックfalseにLOGGEDINを変更している

1

変更の.htmlからファイルの拡張子の開始時にsession_start()を必要としています。ヘッダーのリダイレクト後にexitを含める必要があります。このよう

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

私の悪い、phpされていた。 –

+0

はい、それを確認してください –

1

を.PHPためにあなたのsite.php

関連する問題