2015-01-29 2 views
1

Текущий кодPHP Показать страницу Если Куки Установить

<?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 говорит, что это ошибка делает это таким образом.

Каков наилучший способ перенаправления, если куки не были установлены перед загрузкой страницы

+1

Это должно сработать. Dreamweaver может быть смущен открытым '{', за которым следует необработанный HTML. Но логика работает на PHP. –

+0

Посмотрите на сеансы в php, это не так, как вы хотите проверить, аутентифицирован ли пользователь, если это то, что вы пытаетесь сделать. –

+1

Тем не менее, вам не нужно 'else', потому что если вы еще не перенаправлены, оставшийся код будет выполнен и отображается HTML. Поэтому вы можете просто избавиться от 'else {}' и поместить свой HTML после закрытия 'if (...) {}' –

ответ

1

Я не знаком с тем, как 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, которое не может быть изменено браузером клиента.

Смежные вопросы