获取会话变量,并将其设置为一个变量
我有这个在,我不想让别人访问的网页上,除非他们已经登录:获取会话变量,并将其设置为一个变量
<?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,当用户登录以及。有没有办法设置变量来检查任何一个会话变量?
你可以做一个检查:
if(isset($_SESSION['Register'])){
$get_id = $_SESSION['Register'];
}else if(isset($_SESSION['Login'])){
$get_id = $_SESSION['Login'];
}
有了这个,你有Register
的ID如果设置,或Login
如果Register
是不集,但Login
是ID。 您还可以切换Register
和Login
- 支票中的零件,如果您想要设置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'];
您可以在任何时候更新会话变量的内容,并且可以构造内容以使其更易于使用 - 数组或对象可以正常工作。
$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;
使用数组它会帮助你。 – Dave
你可以更新会话变量以包含你想要的任何东西 – RamRaider
如果两个变量有两个不同的用途,那么给它们两个不同的名字。您也可以尝试使用函数和类,以便不是每个变量都具有全局范围。 PS:问题中缺少说明问题的代码。 –