即将其存储在会话中,然后在用户登录时重定向到该页面?
$_SESSION['last_page'] = $_SERVER['PHP_SELF'];
//(in a common file on all pages)
然后登录后:
header('location: ' . $_SESSION['last_page']);`
我想知道,因为我读到人们可以修改$_SERVER
中某些密钥的值
使用SCRIPT_NAME
更好还是PHP_SELF
好?
它可以用于XSS漏洞。
不要冒险使用
$_SERVER['SCRIPT_NAME'];
相反。
在设置HTTP标头时,不应该为Location提供相对路径/URL,请指定脚本的完整URL。
$_SESSION['last_page'] = "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["PHP_SELF"];
header('Location: ' . $_SESSION['last_page']);
$_SERVER["SCRIPT_NAME"]
&$_SERVER["PHP_SELF"]
是指PHP_SELF
"记住"URL中引用PHP脚本后指定的任何信息。如果您不需要这些额外信息,只需使用$_SERVER["SCRIPT_NAME"]
即可。
不能直接信任会话变量。它们被视为用户输入,就像GET或POST变量一样。因此,我建议您列出一些可能性(或者使用REGEX(来测试$_SESSION['last_page']
是否有效,然后再使用它,,尤其是在重定向中。