2016-08-16 115 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;