Не работают куки в PHP, имеем массив со всеми переводами текста: $local
ассоциативный массив в котором ещё массивы выглядит это всё примерно так
$local = array(
'ru' => array(
'title' => 'Название проекта',
'authTitle' => 'Авторизация на проекте'
),
'en' => array(
'title' => 'Name project',
'authTitle' => 'Sign in'
)
);
По дефолту ключ страны равен предпочтением пользователя и выяснение кода страны выглядит примерно так:
$localCode = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
if (isset($_COOKIE['lang'])) {//эта х+етень почему то возвращает false то биж он считает что НЕТУ куки lang но сам куки есть (в браузере зачекал)
$lang = $_COOKIE['lang'];
} else {
$lang = $localCode[0] . $localCode[1];//$localcode вернёт несколько кодов страны через запятую и мы выберем 2 первых символа тем самым выберем самый предпочитаемый язык пользователя
}
То биж если есть куки то код страны равен этому куки, если его нет то код страны равен первому предпочтению пользователя
В итоге когда я создаю куки lang:
session_start();
setcookie("lang", "en", time() + 3600);
Куки создаётся в браузере и принимает нужное значение, но когда я отдельном файле local.php
я пытаюсь их использовать система считает что их просто нет
код с функцией выдачи нужного языка:
function lang ($name) {
global $local;
global $lang;
echo $local[$lang][$name];
}
вынесен в отдельный файл и при создании куки lang он не хочет менять язык
Теперь про некоторые детали:
Почему я сделал global $local
и $lang
вместо того что бы просто внести их в функцию. Ответ: имеется 2 функции которые дают нужный перевод и одна их них выводит этот перевод а другая возвращает его это нужно что бы я не писал миллион раз echo а когда нужно вернуть а не вывести просто применялась другая функция.
Я не знаю обязательно ли начинать сессию в файле но в начале файла есть
session_start();
Ниже 3 картинки примеров кода как подключается local.php
и сам код local.php
в наглядности (его stackoverflow не хочет по красоте вставить)
когда я отдельном файле local.php я пытаюсь их использовать система считает что их просто нет
setcookie()
задает cookie
, которое будет передано клиенту вместе с другими HTTP
-заголовками. Как и любой другой заголовок, cookie
должны передаваться до того как будут выведены какие-либо другие данные скрипта (это ограничение протокола). Это значит, что в скрипте вызовы этой функции должны располагаться до остального вывода, включая вывод тегов <html>
и <head>
, а также пустые строки и пробельные символы.
---> После передачи клиенту cookie
станут доступны через массив $_COOKIE
при следующей загрузке страницы. Значения cookie
также есть в $_REQUEST
. <---
*Источник: https://www.php.net/manual/ru/function.setcookie.php
Ответ простой - смотрите, где у Вас что не соответствует - или приведите полный код, с которым можно было разбираться.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Ребята ,кто знает по какому принципу устроена приём платежей на сайте без сторонних агрегатов типо робокасса и тд
AccountDaoImplTest - test