我是php和mysql的新手。我找到了一个很棒的教程,可以在网站上创建注册和登录部分。我正在设法很好地解构它并做出微小的改变。 然而...
如果用户登录,我可以使用 -
允许访问页面<?php
session_start();
if(!isset($_SESSION['username'])){
header("Location: index.php");
}
?>
如果用户已登录并再次访问“登录”页面,我不希望他们能够看到它,但会将其重定向到“成员区域”内的页面。我怎么能这样做?
答案 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") ?>