Цитата:
Цитата:
Зачем усложнять :) |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Не нужен тут 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, время: 13:12. |