PHP 如果设置了 Cookie,则显示页面

PHP Show Page If Cookies Are Set

当前代码

<?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,最好的重定向方式是什么

最近我不熟悉 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 中存储一个客户端浏览器无法修改的值可能更合适。