Помогите мне пожалуйста ! В PHP после авторизации нам должен вывести логин , я его сохранил в куки и далее такая ошибка .
PHP:
$login = $_POST["cooklog"];
setcookie("login", $login, time() + (3600*24)*30, "/");
$xlogin = $_COOKIE["login"];
echo json_encode($xlogin);
JS:
xmlhttp.open("POST", "functions.php", true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send("cooklog=" + encodeURIComponent(login));
alert(response);
setcookie формирует заголовок HTTP в ответе браузеру. Массив $_COOKIE вбирает значения из заголовков запроса браузера. Посмотрите внимательно, как устроен протокол HTTP или любую статью про куки и заголовки HTTP. Или просто посмотрите в Wireshark на HTTP трафик вашего кода, там тоже все очень понятно и наглядно, если знать, куда смотреть
Проще говоря, кука $_COOKIE["login"] в момент обращения к ней еще не определена. Если быть точным, в массиве $_COOKIE пока еще нет ключа "login", и обращение к несуществующему элементу вызовет ошибку
Просто проверяйте любое значение, перед тем как его использовать:
$login = $_POST["cooklog"];
setcookie("login", $login, time() + (3600*24)*30, "/");
$xlogin = isset($_COOKIE["login"]) ? $_COOKIE["login"] : NULL;
if ($xlogin) {
echo json_encode($xlogin);
} else {
// Напишите, что делать, если логика в куках нет
}
Кстати $_POST["cooklog"] тоже желательно проверить перед использованием. Вообще все обращения к массивам нужно проверять, вы пытаетесь работать с тем, чего может не быть, и создаете себе кучу проблем на будущее
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости