Я не знаком с тем, как Dreamweaver PHP кода Линца в эти дни, но часто видел ложные срабатывания на переполнении стека где 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>
Как уже отмечались в комментарии нити, используя кук в одиночку в качестве охранника для аутентификации является недостаточным и не является безопасным, если значение куков в не может быть подтверждено с секретом в коде, как одно- токен использования. В этом случае может быть более целесообразным сохранить значение в $_SESSION
, которое не может быть изменено браузером клиента.
Это должно сработать. Dreamweaver может быть смущен открытым '{', за которым следует необработанный HTML. Но логика работает на PHP. –
Посмотрите на сеансы в php, это не так, как вы хотите проверить, аутентифицирован ли пользователь, если это то, что вы пытаетесь сделать. –
Тем не менее, вам не нужно 'else', потому что если вы еще не перенаправлены, оставшийся код будет выполнен и отображается HTML. Поэтому вы можете просто избавиться от 'else {}' и поместить свой HTML после закрытия 'if (...) {}' –