Эти строки вызовут ошибку:
А что мешает обратиться к сайту не через сайт с отправкой куки например через curl?
if (array_key_exists("cart", $_COOKIE)) {
if (!array_key_exists("data", $_COOKIE['cart'])) {
setcookie("cart", null, time()-1000);
echo("всё плохо");
die();
}
}
И как-то странно, в одном месте прерывается выводом json данных, в другом обычный текст.
Функция CURL запроса на сервер - в отдельный файл
огромный кусок кода проверки на мобильную версию - в отдельный файл
объединенную шапку-подвал - в отдельный файл.
// тут все мои скрипты, 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; ?>
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; ?>
<?
// Достаём из корзины изображения в соответствии с куками
$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; ?>
В общем в следующий раз не нужно будет писать новый вопрос на тостер, типа "как мне в 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.match ($_SERVER['REDIRECT_URL']) {
"/index.php", "/" => include "main.tpl",
"/cart", "/cart/" => include "cart.tpl",
default => include "main.tpl",
};
<?php
print_r($_GET);
?>
http://localhost/cart/?filter=колготки не с кружевами а в горошек
Поэтому:
в свёрнутом виде - стрелка вниз
в развёрнутом - вверх
Вот аналогия со сменой лезвия в триммере
если что - это не кнопка, а указатель для смены лезвия. Там вообще ничего не нажимается