2017-06-21 88 views
0

我有一個functions.php文件,其中包含以下函數:session_start()繼承,但是已註冊函數仍然重定向

function isLoggedIn(){ 
    session_start(); 
    if (!$_SESSION['Username']){ 
     header("Location: login"); 
     echo '<meta http-equiv="refresh" content="0; url=login" />'; 
     exit; 
    } 
} 

該會話應用於以下功能;

function checkLogin($mysqli,$Username,$Pass){ 
     $Password = sha1($Pass); 
     $Prep1 = "SELECT * FROM infWebAccounts WHERE Username='$Username' AND Password='$Password'"; 
     $Prep2 = "SELECT * FROM infWebAccounts WHERE Username='$Username'"; 
     $DataArray = $mysqli->query($Prep1); 
     $UserArray = $mysqli->query($Prep2); 
     $Maintenance = getWebSettings($mysqli,'Maintenance'); 
     if (mysqli_num_rows($DataArray) > 0){ 
      $DataTable = mysqli_fetch_array($DataArray); 
      if ($Maintenance == 'Y' && $DataTable['Tier'] != 9 || $DataTable['Tier'] != 10){ 
       return '5'; 
      } 
      if ($DataTable['Tier'] == 0) { 
       return '4'; 
      } 
      session_start(); 
      $_SESSION['Usernamee'] = $DataTable['Username']; 
      $_SESSION['Tier']  = $DataTable['Tier']; 
      return '3'; 
     } elseif (mysqli_num_rows($UserArray) > 0) { 
      return '1'; 
     } else{ 
      return '2'; 
     } 
    } 

在每個頁面上,我包含這個文件並運行isLoggedIn()就像這樣;

<?php 
session_start(); 
include 'API/infMain.php'; 
IsLoggedIn(); 
?> 

即使登錄後,我仍然會被重定向回到登錄頁面。我回顯會話的用戶名和它回來爲我的用戶名,但是我仍然重定向....

回答

0

你打錯

$_SESSION['Usernamee'] = $DataTable['Username']; 

設定以使該檢查永不檢查了:)

if (!$_SESSION['Username']){ 
0

也許你想

function isLoggedIn(){ 
session_start(); 
if (!isset($_SESSION['Username'])){ 
    header("Location: login"); 
    echo '<meta http-equiv="refresh" content="0; url=login" />'; 
    exit; 
} 
} 

由於當前的代碼檢查,如果它的定義,但沒有設置。

+0

試圖這樣做,但我仍然被重定向回登錄頁面...:/ –

0

如果用戶登錄您重定向,應該不會是

if (!$_SESSION['Username']){ 

此外,包括在session_start();在調用函數之前,函數內部可能會引發警告。

+0

我的確將它作爲!$ _ Session這是我修正的OP中的一個簡單錯誤。 –

0

發現這個問題,我設置了本屆會議「Usernamee」和檢查「用戶名」

相關問題