当前代码
<?php
$cookie_name = "testr";
if(!isset($_COOKIE[$cookie_name])) {
header("Location: http://admin.rafflebananza.com/authenticate.php");
exit;
} else { ?>
<!-- HTML PAGE GOES HERE -->
<?php } ?>
我当前的代码如上所示,但我感觉这不是做事的方式,因为Dreamweaver说这样做是错误的。
如果在加载页面之前尚未设置cookie,则重定向的最佳方法是什么
答案 0 :(得分:1)
我不熟悉Dreamweaver现在如何使用PHP代码,但是经常在Stack Overflow上看到误报,其中Dreamweaver错误地报告了语法错误。你现在拥有的代码和逻辑是有效的,如果有点难看。
由于if()
条件的操作是重定向并明确exit
,因此您实际上不需要else {}
块。您可以直接跟随if () {}
的HTML内容,PHP将输出它,因为它尚未重定向并终止执行。
<?php
$cookie_name = "testr";
if(!isset($_COOKIE[$cookie_name])) {
header("Location: http://example.com/authenticate.php");
exit;
}
// No else {} block
// Follow this directly with your HTML
?><!DOCTYPE html>
<html>
<body>everything else...</body>
</html>
正如评论主题中所指出的那样,单独使用cookie作为身份验证的保护是不够的而且不安全,除非cookie的值可以用代码中的秘密进行验证,例如一个 - 时间使用令牌。在这种情况下,将$_SESSION
中的值存储在客户端浏览器无法修改的位置可能更合适。