我有以下代码,它将以前的url保存在一个名为logged in的会话中,无论url是否具有参数(即?username=或&username=),该会话都可以工作。
我可以使用这个相同的代码时,没有以前的页面(位置)设置在会话登录。
代码中的else子句没有接收到这一点。 该页面只是保持登录在URL?username=的登录页面上,而不会重定向到索引页面。 不是if isset username,我认为我需要检查登录的会话或检查url是否包含位置,但不知道如何做到这一点。
//set the session with the name user_name
$_SESSION["username"] = true; // this will then accept the login when redirecting to previous page
$_SESSION['user_name'] = $username;
// setting session start and expire times 10 minutes
$_SESSION['start'] = time(); // Taking now logged in time.
// Ending a session in 30 minutes from the starting time.
$_SESSION['expire'] = $_SESSION['start'] + (10 * 60);
// $_SESSION["username"] = true;
if(isset($username)) {
$url = $_SESSION['loggedin'];
$queryb = parse_url($url, PHP_URL_QUERY);
if ($queryb) {
$url .= "&username=" .$_SESSION['user_name']; //if url already has parameters add & username to the end
} else {
$url .= "?username=" .$_SESSION['user_name'];
}
header('Location:'.$url);
} else {
header('Location: http://example.com/articles/index.php');
}
在第一个if中,检查变量$username
是否设置。 但是$username
是您已经定义的变量,因此即使它为空也很可能被设置。
为了检查变量是否存在于查询字符串(url中),您最好执行if(isset($_get['username']))