停止登录用户看到登录页面?

时间:2013-01-26 01:57:33

标签: php login-control

我是php和mysql的新手。我找到了一个很棒的教程,可以在网站上创建注册和登录部分。我正在设法很好地解构它并做出微小的改变。 然而...

如果用户登录,我可以使用 -

允许访问页面
<?php
session_start();

if(!isset($_SESSION['username'])){
header("Location: index.php");
}
?>

如果用户已登录并再次访问“登录”页面,我不希望他们能够看到它,但会将其重定向到“成员区域”内的页面。我怎么能这样做?

5 个答案:

答案 0 :(得分:2)

好吧,如果你想在URL中加载相同的页面,例如http://domain.com/,但是你希望登录的人与登出的人不同。你可以这样做。

session_start();

if(!isset($_SESSION['username'])) {
    require_once("pathToLoggedOutFile.php");
} else {
    require_once("PathToLoggedInFile.php");
}
die;

现在,如果您想在登录时将它们重定向到另一个页面,也可以这样做,例如,您可以通过使用标题来完成此操作。

session_start();

if(isset($_SESSION['username'])) {
    header("Location: /pathtologgedinpage.php");
    die;
}

答案 1 :(得分:0)

您想在导航菜单上设置两条路径,如下所示:

<?php
if (isset($_SESSION['username']))
{
?>
<a href="loggedinpage.php">PageName</a>
<?php
}
elseif (!isset($_SESSION['username']))
{
?>
 <a href="login.php">Login</a>
 <a href="bla.php">Page</a>
<?php
}
?>

因此取决于是否设置了$ _SESSION [] ..将显示不同的锚点。

回复评论

尝试使用受限文件创建数组。示例:

if (isset($_SESSION))
{
   $Restrictions = array ("login.php", "index.php", "register.php");
  if (in_array($_SERVER['REQUEST_URI'], $Restrictions ))
  {
    die ("You Must Login To View These Pages!"); //I use die and an include in my scripts, but this will be called when the user is navigating to a page such as login.php when they already have an active session
  } 
}

上述操作将使用$ _SERVER数组作为请求的URL,如果用户会话处于活动状态且用户尝试导航到阵列中的所述字段,则会显示die信息。当然,这可以根据您的需要进行更改。您也可以通过限制未登录的用户,使用相同的块来执行类似操作;从查看您需要登录的页面。

重新直接

你的index.php上的

,你可以这样:

if (isset($_SESSION))
{
 header("Location: member_area.php");
 exit; // exit to stop the rest of your page (index.php for example) from processing.
}

如果用户有活动会话,则会将用户重定向到该页面。


看着你的问题;如果$_SESSION处于活动状态,您希望将用户重定向到member_area。然后使用名称为“重新定向

的最后一个块

答案 2 :(得分:0)

看来你上面的内容大致是你想要的。它假定您的登录脚本为username写入会话值。如果您不确定或想要检查,并且因为您说自己是新的,那么查看设置的会话变量可能会有所帮助。只需将其放在session_start()行下面:

echo '<pre>';
print_r($_SESSION);
exit;

请确保您只在开发时使用此功能,并在完成后将其注释掉。

答案 3 :(得分:0)

//Your Logout.php script should look something like this.
$session_variable = $_SESSION['variable'];
session_unset($session_variable);
session_destroy();
header('Location: blah.php');

//Your session check script should look something like this. 
$session_variable = $_SESSION['variable'];
if(!isset($session_variable)) {
session_unset();
session_destroy();
header('Location: blah.php');
}

答案 4 :(得分:0)

如果之前有任何内容,则无法使用header("Location: http://www.site.com")。 PHP头函数必须像这样

<?php header("Location: http://www.site.com") ?>