我有一个问题...我已经开发了一个php安全登录页面,现在当我运行检查以使用" <?php header('location: home.php'); ?>
"重定向用户时,无论出于何种原因,它在实际域上都不起作用。
但是我想到了这段代码
<?php
if (login_check($mysqli) == true) {
echo "<meta http-equiv='refresh' content='0;URL=home.php'>";
}
?>
该代码是否安全且功能正常?我最关心的是可以利用的隐私。当我在本地服务器上时,它似乎可以工作,我还没有上传它。
有没有另一种方法会比我目前拥有的更好?
我会
研究为什么header()
不能在您的远程服务器上工作。
调用在条件块内触发,可能是条件失败(login_check($mysqli) == true
)。你检查过吗?
header()
问题的另一个常见原因是应用程序在调用 header()
之前输出非标头数据。当您开始从 PHP 脚本输出数据时,PHP 将自动刷新标头。这意味着在调用header()
之前您无法输出任何数据,因为标头数据已经被刷新(因此基本上确保您在header()
调用之前没有使用echo
,print
等)。
见 http://php.net/manual/en/function.header.php
另外,我注意到您在打印元刷新后不会杀死脚本。我会在打印元刷新代码后杀死脚本,以防止向用户提供任何其他内容。所以也许:
if (login_check($mysqli) == true) {
echo "<meta http-equiv='refresh' content='0;URL=home.php'>";
die;
}