2016-08-16 196 views
0

我有這個在,我不想讓別人訪問的網頁上,除非他們已經登錄:獲取會話變量,並將其設置爲一個變量

<?php 
session_start(); 
if(!isset($_SESSION['Register'])){ 
    if(!isset($_SESSION['Login'])){ 
    header("location:../notLoggedIn.php"); 
} 
} 
$get_id = $_SESSION['Register']; 
$get_id = $_SESSION['Login']; 
?> 

此獲取會話當新用戶註冊時,從代碼添加一個新用戶到數據庫的變量。它還檢查會話是否從登錄用戶設置而不是註冊。因此,一個檢查登記和一個登錄。

然後,我使用會話變量作爲常規變量,所以我可以訪問我可能爲網站寫的任何其他頁面上的數據。所以我可以讓我的用戶id很容易找到。

這可以在用戶註冊時正常工作,但不會在用戶登錄時正常工作。所以,當用戶註冊ID時,它們會在數據庫中提供給我使用,因爲它在此代碼中設置,位於頂部每個頁面都將它們的ID號放入$ get_id變量中。

問題是這個變量已被使用,但我希望它包含用戶ID,當用戶登錄以及。有沒有辦法設置變量來檢查任何一個會話變量?

+0

使用數組它會幫助你。 – Dave

+0

你可以更新會話變量以包含你想要的任何東西 – RamRaider

+0

如果兩個變量有兩個不同的用途,那麼給它們兩個不同的名字。您也可以嘗試使用函數和類,以便不是每個變量都具有全局範圍。 PS:問題中缺少說明問題的代碼。 –

回答

0

你可以做一個檢查:

if(isset($_SESSION['Register'])){ 
    $get_id = $_SESSION['Register']; 
}else if(isset($_SESSION['Login'])){ 
    $get_id = $_SESSION['Login']; 
} 

有了這個,你有Register的ID如果設置,或Login如果Register集,但Login是ID。 您還可以切換RegisterLogin - 支票中的零件,如果您想要設置Login並且您只想要Register(如果Login未設置)。

但是如果你想保存在同一個變量都標識,你必須做出一個數組:

$get_id = array(
    "Register" => $_SESSION['Register'], 
    "Login" => $_SESSION['Login']); 

這樣你就可以Register通過鍵入$get_id['Register'];您的訪問。

如果你不想命名的值,你可以忽略它們,就像這樣:

$get_id = array($_SESSION['Register'], $_SESSION['Login']); 

這樣,你可以通過Register通過鍵入$get_id[1];分別鍵入$get_id[0];和你Login您的訪問。

但是,如果你想將兩個值保存到一個變量(不是數組),恐怕這是不可能的。你可以做的最接近的是上面提到的檢查。

或者,如果您足夠絕望,可以將這兩個SESSION變量格式化爲字符串,以將它們連接在一起成爲一個變量。但相信我,操縱或使用這些數據會非常痛苦。

$get_id = $_SESSION['Register']. " ".$_SESSION['Login']; 
+0

謝謝你的詳細解答。這有很大幫助。我還發現我在尋找$ id而不是$ get_id。 Woops – tdrsam

+0

此外,檢查是解決方案 – tdrsam

0

您可以在任何時候更新會話變量的內容,並且可以構造內容以使其更易於使用 - 數組或對象可以正常工作。

$svar='usr'; 

/* you could further test for the session variable having particular properties using `property_exists` */ 

if(!isset($_SESSION[ $svar ])){ 
    echo "session variable not set ~ redirect non logged in users using `header()` "; 
} 

/* later you can set the variable after login */ 
$_SESSION[ $svar ]=new stdClass(); 

$_SESSION[ $svar ]->username='joe.bloggs'; 
$_SESSION[ $svar ]->registered=true; 


echo '<pre>',print_r($_SESSION[ $svar ],true),'</pre>'; 

$username=$_SESSION[ $svar ]->username; 
echo $username;