PHP会话未转移到受保护页面
我在为我的web应用程序实现登录系统时经历了一段非常艰难的时间 就我的index.php而言,我的基本逻辑工作正常——如果用户试图在那里导航,但没有登录,它会将他们重定向到登录屏幕。一旦他们提供了正确的凭据,他们就会被正确地引导回protectedindex.php页面 代码中的逻辑如下所示: (index.php) 编辑2: 如果我登录到索引页面,请转到受保护页面(将我发送到登录屏幕)并再次登录,会话将正常运行,并且所有受保护页面都可以访问。PHP会话未转移到受保护页面,php,session,Php,Session,我在为我的web应用程序实现登录系统时经历了一段非常艰难的时间 就我的index.php而言,我的基本逻辑工作正常——如果用户试图在那里导航,但没有登录,它会将他们重定向到登录屏幕。一旦他们提供了正确的凭据,他们就会被正确地引导回protectedindex.php页面 代码中的逻辑如下所示: (index.php) 编辑2: 如果我登录到索引页面,请转到受保护页面(将我发送到登录屏幕)并再次登录,会话将正常运行,并且所有受保护页面都可以访问。 我只需要弄清楚是什么阻止了初始登录创建一个正确的会
我只需要弄清楚是什么阻止了初始登录创建一个正确的会话继续进行。首先,您不需要包括
会话_start()代码>一页中多次。只需在每个文件的开头插入它
如果我是您,我会使用此语句查看用户是否登录到受保护的页面:
if ( !isset($_SESSION['email'] && !isset($_SESSION['password'] ) ) {
header('Location: http://www.myapp.com/index.php'); //if not logged in, return to index.php, which in turn redirects to a logon page.
exit();
} else {
echo "Logged in";
}
另外,我建议您同时使用$\u SESSION
和$\u COOKIES
来创建一个更强大的登录系统。您的登录看起来如何我看到这两个文件之间的唯一区别是包含一次“db\u functions.php”
:你确定db_functions.php中没有什么重要的内容,还是你也尝试过将其包含在protectedpage.php中?这些不是完整的文件,仅适用于会话和登录的部分的片段。在受保护的页面中也应使用userIsLoggedIn
,而不是$\U会话['loggedIn']==FALSE
不使用会话的部分启动一次以上的请求。把它放在第一行。不在你的loggedin函数中。否则,它将发出通知
<?php
session_start();
require_once 'access.php';
echo "Logged in: " + $_SESSION['loggedIn'];
echo "User: " + $_SESSION['email'];
echo "Password: " + $_SESSION['password'];
// receive data from HTML readcalllog request
$rName=$_POST["registration"]; //irrelevant post data
$rowId=$_POST["rowid"]; //irrelevant post data
if ($_SESSION['loggedIn'] == FALSE) {
header('Location: http://www.myapp.com/index.php'); //if not logged in, return to index.php, which in turn redirects to a logon page.
exit();
}
function userIsLoggedIn()
{
if (databaseContainsAuthor($_POST['email'], $password))
{
session_start();
$_SESSION['loggedIn'] = TRUE;
$_SESSION['email'] = $_POST['email'];
$_SESSION['password'] = $password;
return TRUE;
}
else
{
session_start();
unset($_SESSION['loggedIn']);
unset($_SESSION['email']);
unset($_SESSION['password']);
$GLOBALS['loginError'] =
'The specified email address or password was incorrect.';
return FALSE;
}
}
}
if ( !isset($_SESSION['email'] && !isset($_SESSION['password'] ) ) {
header('Location: http://www.myapp.com/index.php'); //if not logged in, return to index.php, which in turn redirects to a logon page.
exit();
} else {
echo "Logged in";
}