0

我对 php 和 mysql 很陌生。我找到了一个很棒的教程来创建网站上的注册和登录部分。我正在设法很好地解构它并进行细微的更改。然而...

如果用户登录,我可以允许使用以下方式访问页面 -

<?php
session_start();

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

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

4

5 回答 5

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;
}
于 2013-01-26T02:17:37.720 回答
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.
}

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


看着你的问题;如果处于活动状态,您希望用户被重定向到 member_area $_SESSION.. 然后使用名为 " 的最后一个块用于重定向

于 2013-01-26T02:03:14.977 回答
0

看来您上面所拥有的大致就是您想要的。它假定您的登录脚本为username. 如果您不确定或想要检查,并且因为您说您是新手,那么查看设置了哪些会话变量可能会对您有所帮助。只需将其放在您的session_start()行下方:

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

确保仅将其用于开发并在完成后将其注释掉。

于 2013-01-26T02:03:22.657 回答
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');
}
于 2013-01-26T02:38:36.993 回答
0

header("Location: http://www.site.com")如果在那之前有写过的东西,你就不能使用。PHP头函数必须是这样的

<?php header("Location: http://www.site.com") ?>
于 2013-11-22T04:04:02.233 回答