Профиль пользователя заблокирован сроком с 17 августа 2021 г. и навсегда по причине: см. п. 8.3 правил Сервиса
  • Как прописать в setcookie - samesite?

    nastya97core
    @nastya97core Автор вопроса
    извиняюсь за возможно идиотский вопрос, но почему в php8 не реализовали синтаксис, как у остальных опций?
    httponly:true, path: '/'
    Всем плевать на samesite?
  • Какие цвета не будут резать глаз?

    nastya97core
    @nastya97core
    нужно перевернуть стрелочки на 180. То есть стрелка не должна означать текущее положение. Она должна означать "что будет при нажатии".
    Поэтому:
    в свёрнутом виде - стрелка вниз
    в развёрнутом - вверх

    Вот аналогия со сменой лезвия в триммере
    spoiler
    philips_oneblade_qp2510_2.jpg

    если что - это не кнопка, а указатель для смены лезвия. Там вообще ничего не нажимается
  • Можно ли использовать die при валидации?

    nastya97core
    @nastya97core Автор вопроса
    а что на счёт того, что вызовет предупреждение

    я заменила его на isset. ещё до твоего сообщения. но всё равно спасибо.

    если бы ты сказал "чтобы выйти за меня и торговать акциями" - было бы больше шансов)
  • Как проверить наличие массива в json?

    nastya97core
    @nastya97core Автор вопроса
    подскажите, зачем вопросительный знак? просто без него тоже сработало
  • Можно ли использовать die при валидации?

    nastya97core
    @nastya97core Автор вопроса
    John Didact,
    Эти строки вызовут ошибку:

    Да, я составляла на лету, дописывая в момент составления вопроса)
  • Можно ли использовать die при валидации?

    nastya97core
    @nastya97core Автор вопроса
    а вот эта фраза описывает мою жизнь)))
    ну не может человек настолько последовательно ходить по всем граблям, которые только бывают
  • Можно ли использовать die при валидации?

    nastya97core
    @nastya97core Автор вопроса
    Spartak (Web-StyleStudio),
    А что мешает обратиться к сайту не через сайт с отправкой куки например через curl?

    я думала об этом, поэтому у меня все куки шифрованы. Но ещё мне кажется, я думала не совсем о том, о чём вы говорите)

    Что значит сгенерировать хеш с солью? Нет, грубо говоря, я понимаю, что это. Просто разве это не защитит меня от человека, который просто поймёт как он генерируется.

    В моём случае массив переводится в json, а потом шифруется AES-128-ECB и отдаётся пользователю. Если я добавляю товар в корзину, то массив в начале расшифруется, раздекодируется json, добавится в массив запись, а затем снова -> json -> AES -> cookie. И та строчка, в которой я удаляю куки выглядит вот так:

    if (array_key_exists("cart", $_COOKIE)) {
    	if (!array_key_exists("data", $_COOKIE['cart'])) {
    		setcookie("cart", null, time()-1000);
      		echo("всё плохо");
      		die();
    	}
    }
  • Можно ли использовать die при валидации?

    nastya97core
    @nastya97core Автор вопроса
    Spartak (Web-StyleStudio),
    И как-то странно, в одном месте прерывается выводом json данных, в другом обычный текст.

    в месте, где всё плохо, будет функция, которая будет в БД заносить информацию о ip пользователя, который попытался организовать несанкционированный доступ.
  • Как перевести flex таблицу в блоки?

    nastya97core
    @nastya97core Автор вопроса
    Ankhena, я пыталась - не работает с ограничение высоты
  • Какой ИБП выбрать для слабого офисного ПК, чтобы работал без света?

    nastya97core
    @nastya97core Автор вопроса
    выделите пожалуйста жирным шрифтом о тестах nix или лучше вообще ссылку разместите
  • Как на развернуть весь сайт в index.php?

    nastya97core
    @nastya97core Автор вопроса
    FanatPHP, спасибо вам за советы. Эх, но давайте объективно: потом, когда будет десяток страниц - наверное, да. Но если сейчас взять то, что у меня есть и собрать так, как вы сказали, то мой код по microtime будет делать ваш. Как минимум потому что у вас появляется несколько бессмысленных на данном этапе запросов к диску.
    Функция CURL запроса на сервер - в отдельный файл
    огромный кусок кода проверки на мобильную версию - в отдельный файл
    объединенную шапку-подвал - в отдельный файл.


    ещё раз спасибо. постараюсь учесть ваши комментарии
  • Как на развернуть весь сайт в index.php?

    nastya97core
    @nastya97core Автор вопроса
    Теперь вернёмся к title. Можно уйти от match в сторону switch из-за того, что второй может выдавать несколько действий на одно условие и добавить ваш вышеупомянутый буфер:
    // тут все мои скрипты, api запросы, работа с куками.
    // определение на какой странице мы находимся.
    // затем всё ещё до вывода html мы получаем результаты 
    // относительно нашей страницы и пишем это в буфер
    ob_start(); 
    switch ($geturl) {
      case "/";
      default;
        include "test.tpl";
        $page = ob_get_clean();
        $baseinfo = api("collections/get/", "pages", $token, $geturl);
        break;
      case "/cart";
        include "cart.tpl";
        $page = ob_get_clean();
        $baseinfo = api("collections/get/", "base", $token, $geturl);
        break;
    }
    ?>
    <!DOCTYPE html>
    <html lang="ru">
    <head>
        <title>$baseinfo['title']</title>
    ....
    
    // и в нужном месте я выведу свою страницу
    <?= $page; ?>
  • Как на развернуть весь сайт в index.php?

    nastya97core
    @nastya97core Автор вопроса
    FanatPHP,
    title - это в шапке сайта. Шапка уже вывелась до "шаблона" с кодом.

    вот я только сейчас поняла, что имелось в виду. Нет, title я никак не меняю. Но и это не проблема.
    надо подкреплять фактами, а не кусками постороннего кода

    эх...
    <?php
    $useragent=$_SERVER['HTTP_USER_AGENT'];
    if(preg_match('/(android
    // огромный кусок кода проверки на мобильную версию
    e\-/i',substr($useragent,0,4))){
    $vers = 2; } else { $vers = 1;}
    
    // Функция CURL запроса на сервер
    function api($method, $target, $token, $data = false) {
    ...
    }
    
    // Проверка кук на наличие товаров
    if (array_key_exists("cart", $_COOKIE)) {
    также здесь код по дешифровки кук 
    ...
    }
    ?>
    <!DOCTYPE html>
    <html lang="ru">
    <head>
        <meta charset="UTF-8">
        <title>Localhost</title>
    ...
    </head>
    <body>
    	<div class="head">
    		// Здесь также будет отображаться
    		// информация в зависимости от cookie 
    	</div>
    ...
    
    <?php 
    	if (array_key_exists('REDIRECT_URL', $_SERVER)) {
    		$geturl = $_SERVER['REDIRECT_URL'];
    	} else {
    		$geturl = $_SERVER['REQUEST_URI'];
    	}
    
    	match ($geturl) {
    		"/index.php", "/" => include "main.tpl",
    		"/cart", "/cart/"  => include "cart.tpl",
    		default => include "main.tpl",
    	};
     ?>
    </body>
    </html>
    <? if ($vers === 1): ?>
    <script>
    // скрипт, который будет работать только на ПК
    </script>
    <? endif; ?>


    cart.tpl
    <?
    // Достаём из корзины изображения в соответствии с куками
    $data = [];
    foreach ($cock as $v) {
    	$data["filter"]['$or'][] = ['name_item' => $v[0]];
    }
    $data["fields"] = ["name_item"=>1, "price_item"=>1,"image_item"=>1];
    $data = json_encode($data);
    // запрос в базу
    $carts = api("collections/get/", "items", $token, $data);
    // сборка данных относительно базы и cookie
    foreach ($cock as $val_cock) {
    	foreach ($carts['entries'] as $entry) {
    	if ($val_cock[0] == $entry['name_item']) {
    		$result[] = [$val_cock[0],$val_cock[1],$entry['price_item'],$entry['image_item']];
    	}
    	}
    }
    ?>
    // вывод в html
    <? foreach ($result as $v): ?>
    	<div class="object">
    		<p>Название: <span class="name"><?=$v[0]?></span></p>
    		<? if (isset($v[1])): ?>
    		<p>Размер: <span class="size"><?=$v[1]?></span></p>
    		<? endif; ?>
    		<p>Цена: <?= $v[2] ?></p>
    		<p>Изображение</p>
    		<img src="/<?=$v[3]?>" alt="<?=$v[0]?>" style="width:100px">
    		<p onclick='delFromCart(this)'>Удалить</p>
    	</div>
    <? endforeach; ?>
  • Как на развернуть весь сайт в index.php?

    nastya97core
    @nastya97core Автор вопроса
    FanatPHP,
    с какой стати оно вдруг не должно читаться если запросить этот файл напрямую?

    а ты знаешь, где этот файл лежит?
    Да даже если знаешь:
    <FilesMatch ".(tpl)$">
     Order Allow,Deny
     Deny from all
    </FilesMatch>

    всё, нет у тебя доступа.

    Что ещё?
  • Как на развернуть весь сайт в index.php?

    nastya97core
    @nastya97core Автор вопроса
    FanatPHP, расскажешь, как прочитать содержимое внутри тега <?php ?> в файле cart.tpl?
  • Как на развернуть весь сайт в index.php?

    nastya97core
    @nastya97core Автор вопроса
    FanatPHP, да, да, конструктивно. более чем
  • Как на развернуть весь сайт в index.php?

    nastya97core
    @nastya97core Автор вопроса
    В общем в следующий раз не нужно будет писать новый вопрос на тостер, типа "как мне в title вывести название товара"

    так я сейчас всё без проблем вывожу.
    сначала выполняется РНР код запрошенного раздела сайта

    внутри шаблонов у меня вот так выводится
    <? foreach ($result as $v): ?>
    		<div class="object">
    		<p>Название: <span class="name"><?=$v[0]?></span></p>
    		<? if (isset($v[1])): ?>
    		<p>Размер: <span class="size"><?=$v[1]?></span></p>
    		<? endif; ?>
    		<p>Цена: <?= $v[2] ?></p>
    		<p>Изображение</p>
    		<img src="<?=$v[3]?>" alt="<?=$v[0]?>" style="width:100px">
    		<p onclick='delFromCart(this)'>Удалить</p>
    	</div>
    <? endforeach; ?>


    А потом, когда сайт будет реальный, а не воображаемый в розовых мечтах, и запросы будут например /index.php?filter=колготки с кружавчиками, то весь этот прекрасный код превраптится в тыкву.

    вот этот абзац - единственный, который меня смутил. Но я сейчас сделала вот так: http://localhost/cart/?filter=колготки и разумеется ничего не сработало. Но (!) можно ловить не REQUEST_URI, а REDIRECT_URL.
    тогда:
    index.php
    match ($_SERVER['REDIRECT_URL']) {
    	"/index.php", "/" => include "main.tpl",
    	"/cart", "/cart/" => include "cart.tpl",
    	default => include "main.tpl",
    };

    cart.tpl
    <?php
    print_r($_GET);
    ?>


    И при открытии страницы
    http://localhost/cart/?filter=колготки не с кружевами а в горошек

    Я успешно получу GET запрос.

    Я так и не поняла: что конкретно у меня работать не будет? Если можно, приведите пожалуйста ещё раз пример, чтобы мне не удалось его реализовать.