Php 使用会话变量跟踪页面以进行重定向
我当前正在使用会话变量进行重定向。充满希望的代码片段将使它变得清晰 addForm.php:Php 使用会话变量跟踪页面以进行重定向,php,session-variables,Php,Session Variables,我当前正在使用会话变量进行重定向。充满希望的代码片段将使它变得清晰 addForm.php: if (!isset($_SESSION['myusername'])){ if (isset($_COOKIE['username'])){ $_SESSION['myusername'] = $_COOKIE['username']; } else{ #usi
if (!isset($_SESSION['myusername'])){
if (isset($_COOKIE['username'])){
$_SESSION['myusername'] = $_COOKIE['username'];
}
else{
#using a session var to redirect back to addForm.php
$_SESSION['addForm'] = 1;
header("location:loginForm.php");
}
}
loginsucess.php
session_start();
if (!isset($_COOKIE['username'])){
header("location:loginForm.php");
}
if (isset($_SESSION['addForm'])){
header("location:addForm.php");
}
上述方法有效(重定向到addForm.php)。我的问题是,这样做有风险吗?有更好的方法吗?我想我在寻找“最佳实践”。您有一些错误:
标头('位置:http://www.example.org/script.php');代码>通知L
和完整URL
标题('位置:http://www.example.org/script.php');代码>应该是exit()代码>
$\u COOKIE['username']
,你需要从密码中获得一些东西,我的意思是不是密码,也可能是$\u COOKIE中的哈希密码。你应该知道不要太依赖COOKIE
loginsucess.php
中,您必须unset($\u SESSION['addForm'])
在重定向之前,仍将设置来自SESSION的addForm
个人而言,我更喜欢将条目当前URI存储在会话变量中。然后,当我的登录过程成功时,我使用存储的URI将用户重定向到上一页 伪代码
if (!isset($_SESSION['userloginobj'])) {
$_SESSION['callbackuri'] = get_current_url_depending_of_your_process();
header('location:' . get_base_url() . 'index.php?do=login');
exit(0);
}
elseif ('login' == get_param('do')) {
// Show the login form
if ( is_login_successfull() ) {
$_SESSION['userloginobj'] = "userinfo";
header('location:' . $_SESSION['callbackurl']);
exit(0);
}
}
else {
// Normal process
}
但是,如果不使用框架,您的过程似乎是一个良好的开端。对不起,我在随机刷新页面时丢失了问题位。现在修好了。谢谢你的提示。关于第1点。我可以使用“位置”而不是“位置”,没有错误。为什么会出现这种情况?这不是针对您的代码语言,而是针对浏览器。浏览器接收标题为
位置
。无论编程语言如何,标准都是作为标题的位置
。