Цитата:
Цитата:
Зачем усложнять :) |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Не нужен тут JS вообще. |
Цитата:
Цитата:
|
Цитата:
Определили изначально переменную $banner равную null. Определились с куками, получили запрашиваемый баннер, присвоив его переменной $banner. А далее где-то уже в представление вывод ее. Будет null (не удалось получить банннер из-за ошибок, да и бог с ним, это не причина выбрасывать исключения), значит на странице его не будет, иначе нарисуется. И как бы там не упрощалось у разработчика, стоит один раз увидеть что нет, один раз придется и проверить, и навсегда исправить. Такие ошибки исправляются на раз-два. |
laimas, в этом случае код нужно будет разбить на 2 части и объяснить тс, что обновление кукисов должно происходить до передачи самой страницы.
|
Цитата:
Так что вам мешает писать такую же логику для сервера, там ведь тоже самое только наоборот - все что прежде вывода нужно делать до вывода. <?php старт сессии, передача заголовков, работа с куками, обработка ajax запросов с выходом, обработка перенаправлений на себя, и т.п., и т.д. ?> <html> вывод, и не возбраняется выполнять иной код </htm> Что тут сложного в понимании? В любом случае даже для средней по условиям отображения страницы не избежать различных подключений и прочего кода, так как можно написать все одной портянкой, но сопровождать такой код очень сложно. |
laimas, ну так у вас все равно будет разбитие на 2 части.
Первая: до вывода контента страницы; Вторая: в представлении.
<?php
$directory=__DIR__.'/banners/';
$banner='';
if(is_dir($directory)){
$visit=isset($_COOKIE['visit'])?(int)$_COOKIE['visit']:0;
$banners=array_diff(scandir($directory),['.','..']);
$response=$directory.$banners[$visit%count($banners)];
$banner=file_get_contents($response);
setcookie('visit',++$visit,time()+365*24*3600,'/');
};
?><html>
<?php echo $banner; ?>
</html>
|
На какие части? Это все один файл, а каждая его часть, это его логический блок. Вы же раздолбали код действительно на на две части между сервером и клиентом, считая при этом, что это куда понятнее. :)
Да и написано у вас ...
<?
$visit = $_COOKIE['visit'] ?: 0;
$banner = glob($dir)[$visit];
setcookie('visit', ++$visit, не слишком ли до ... ? ), '/');
//и прочий код который обязательно всегда будет
?>
<html>
<head>
<?=$var?> и прочий вывод определенных значений
</head>
<body>
как и в нужном месте где-то
<div class="banner">
<?
if($banner) include '$banner';
?></div>
</html>
Это логика одного файла, а по уму ее разделяют на код и представление (шаблонизаторы). |
Цитата:
|
| Часовой пояс GMT +3, время: 04:19. |