PHP显示页面如果设置了Cookie

时间:2015-01-29 19:13:37

标签: php cookies

当前代码

<?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,则重定向的最佳方法是什么

1 个答案:

答案 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中的值存储在客户端浏览器无法修改的位置可能更合适。