Наверное правильнее было бы сказать, что куки устанавливаются не в самом начале скрипта. Они могут устанавливаться и где-то в середине или и в конце скрипта, но до начала вывода на экран.
Хороший урок. Лайк! Я новичок не давно начал где то месяц назад. Посмотрел твои уроки вроде все понимаю но на деле не получается. Думаю как связать все эти переменные, массивы, функции и.т.д. Неделю назад сделал блок меню на js. Неделя ушло за это. Посмотрел много уроков в итоге не научился, полный ноль. Потом как то сделал. Где то видел как открыть и закрыть окно. Потом еще где то видел как при клике вне елемента закрыть окно и еще в одном видео видел как добавить крестик $time. в конце за день все это сделал, собрал. Вот тогда понял что такое переменные. Сейчас в php тоже такое . Уже неделю ищу как сделать форму авторизации и регистрации. Тоже за неделю не на что не научился. Сейчас смотрю как другие делают и за ними повторяю. Вот тогда начинаю понимать что такое переменные, что такое функции и как все это обработать, проверять. Без практики не понимаю. В конце я хотель бы посмотреть видео про то что как будет все это в практике. Спасибо за урок!
Для тех кто не может решить задачу, дам подсказку. Чтобы получить значение последнего созданного нами куки воспользуйтесь функцией - end($_COOKIE); Для полного понимания её работы, попробуйте в ручную создать несколько куки: setcookie('Hey', 0); setcookie('Hey1', 1); setcookie('Hey2', 2); И посмотреть, как они выглядят: echo ''; print_r($_COOKIE); echo ''; Так же не обязательно использовать неизвестную нам функцию - end(); Мы можем просто пройтись по массиву через foreach: setcookie('Hey', 0); setcookie('Hey1', 1); setcookie('Hey2', 2); $lastElement = 0; // создаём переменную в которую будет записано значение последнего созданного нами куки foreach ($_COOKIE as $value){ $lastElement = $value; // после прохода массива по всем элементам, в итоге мы получим значение последнего созданного куки. } echo $lastElement; // Получаем 2 (обновите страницу 2 раза)
Если совсем не получается, то вот решение задачи: setcookie(getNameCookie(), getValueCookie()); function getNameCookie(){ if (isset($_COOKIE['Hello'])) { return 'Hello' . getValueCookie(); } else { return 'Hello'; } } function getValueCookie(){ if (!isset($_COOKIE['Hello'])) { return 0; } return end($_COOKIE) + 1; }
@@sintel8138 ну блин, это для понимания сложно) я повторил код, когда прочитал. но сам не смог бы написать. в частности потому, что не знал функцию end и потому, что не знал, что можно использовать такую конструкцию: return end($_COOKIE) + 1; через return добавить единицу к значению из массива
@@andrievskii на дз наверное, я часов пять просидел и ничего не получилось, всё попытки работы через функции упирались в ошибку с не определенным именем, перезаписать через функцию plus тоже не удалось, при обновлении только 1 0 получал, а посмотреть на значение тоже никак, потому что ещё не добавил в массив, может я конечно тупой. Вас уже давно не видно надеюсь всё в порядке.
Не понимаю что тут придумывают в коментах, можно же сделать очень просто через использование кук из видео: setcookie('test' . $_COOKIE['test'], $_COOKIE['test']);
Код не работает. Видимо из-за старой версии PHP(использую 7.4 через OpenServer) Выдает следующие ошибки: Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in C:\Users\ysovv\OneDrive\Рабочий стол\php\index.php on line 26 Fatal error: Uncaught Error: Call to undefined function str_starts_with() in C:\Users\ysovv\OneDrive\Рабочий стол\php\index.php:30 Stack trace: #0 C:\Users\ysovv\OneDrive\Рабочий стол\php\index.php(26): incrementTestCookie() #1 {main} thrown in C:\Users\ysovv\OneDrive\Рабочий стол\php\index.php on line 30
спасибо большое за прекрасные уроки!
твой английский, твое произношение, твое написание - как отдельный вид искусства))
по Андреевски))
Благодарю, отличная подача материала
Спасибо, очень полезный урок, особенно проводка по ошибкам.
продолжайте, не останавливайтесь. классная подача материала))
Отдохнул и можо продолжать, как всегда все хорошо рассказал
Наверное правильнее было бы сказать, что куки устанавливаются не в самом начале скрипта. Они могут устанавливаться и где-то в середине или и в конце скрипта, но до начала вывода на экран.
Хороший урок. Лайк! Я новичок не давно начал где то месяц назад. Посмотрел твои уроки вроде все понимаю но на деле не получается. Думаю как связать все эти переменные, массивы, функции и.т.д. Неделю назад сделал блок меню на js. Неделя ушло за это. Посмотрел много уроков в итоге не научился, полный ноль. Потом как то сделал. Где то видел как открыть и закрыть окно. Потом еще где то видел как при клике вне елемента закрыть окно и еще в одном видео видел как добавить крестик $time. в конце за день все это сделал, собрал. Вот тогда понял что такое переменные. Сейчас в php тоже такое . Уже неделю ищу как сделать форму авторизации и регистрации. Тоже за неделю не на что не научился. Сейчас смотрю как другие делают и за ними повторяю. Вот тогда начинаю понимать что такое переменные, что такое функции и как все это обработать, проверять. Без практики не понимаю. В конце я хотель бы посмотреть видео про то что как будет все это в практике. Спасибо за урок!
Для тех кто не может решить задачу, дам подсказку.
Чтобы получить значение последнего созданного нами куки воспользуйтесь функцией - end($_COOKIE);
Для полного понимания её работы, попробуйте в ручную создать несколько куки:
setcookie('Hey', 0);
setcookie('Hey1', 1);
setcookie('Hey2', 2);
И посмотреть, как они выглядят:
echo '';
print_r($_COOKIE);
echo '';
Так же не обязательно использовать неизвестную нам функцию - end();
Мы можем просто пройтись по массиву через foreach:
setcookie('Hey', 0);
setcookie('Hey1', 1);
setcookie('Hey2', 2);
$lastElement = 0; // создаём переменную в которую будет записано значение последнего созданного нами куки
foreach ($_COOKIE as $value){
$lastElement = $value; // после прохода массива по всем элементам, в итоге мы получим значение последнего созданного куки.
}
echo $lastElement; // Получаем 2 (обновите страницу 2 раза)
Если совсем не получается, то вот решение задачи:
setcookie(getNameCookie(), getValueCookie());
function getNameCookie(){
if (isset($_COOKIE['Hello'])) {
return 'Hello' . getValueCookie();
} else {
return 'Hello';
}
}
function getValueCookie(){
if (!isset($_COOKIE['Hello'])) {
return 0;
}
return end($_COOKIE) + 1;
}
@@sintel8138 ну блин, это для понимания сложно) я повторил код, когда прочитал. но сам не смог бы написать. в частности потому, что не знал функцию end и потому, что не знал, что можно использовать такую конструкцию:
return end($_COOKIE) + 1;
через return добавить единицу к значению из массива
@@sreggh Это факт. Без помощи хрен я сделал бы. Спасибо Sintel который помогает 'близоруким' найти путь к решению задачек
Лайк! ;)
Было бы хорошо, чтобы были ответы на ДЗ, бывает сидишь по 5 часов и ничего не выходит.
Еще вариант
setcookie(getName(), getValue());
function getName() {
foreach ($_COOKIE as $key=>$value) {
if(stristr($key, "test-$value")) {
SetCookie("test-$value", "" );
$value++;
return "test-$value";
}
}
return "test-1";
}
function getValue() {
foreach ($_COOKIE as $key=>$value) {
if(stristr($key, "test-$value")) {
$value++;
return $value;
}
}
return 1;
}
Мэн, ты просто лучший
А где ответ посмотреть?
Ответ на что?
@@andrievskii на дз наверное, я часов пять просидел и ничего не получилось, всё попытки работы через функции упирались в ошибку с не определенным именем, перезаписать через функцию plus тоже не удалось, при обновлении только 1 0 получал, а посмотреть на значение тоже никак, потому что ещё не добавил в массив, может я конечно тупой. Вас уже давно не видно надеюсь всё в порядке.
Норм
Кто решил ДЗ ?)
Пхахах сидим в 2023 и не можем решить, коды в комментах у меня не работают как бы я их не подстраивал под свой код
Не понимаю что тут придумывают в коментах, можно же сделать очень просто через использование кук из видео: setcookie('test' . $_COOKIE['test'], $_COOKIE['test']);
В коментах дают решения без опоры на описанную куки из видео, чтобы у пользователя не оказалось по итогу две куки, например:
test => 3;
test3 => 3
Более универсальное решение задачи:
Код не работает. Видимо из-за старой версии PHP(использую 7.4 через OpenServer)
Выдает следующие ошибки:
Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in C:\Users\ysovv\OneDrive\Рабочий стол\php\index.php on line 26
Fatal error: Uncaught Error: Call to undefined function str_starts_with() in C:\Users\ysovv\OneDrive\Рабочий стол\php\index.php:30 Stack trace: #0 C:\Users\ysovv\OneDrive\Рабочий стол\php\index.php(26): incrementTestCookie() #1 {main} thrown in C:\Users\ysovv\OneDrive\Рабочий стол\php\index.php on line 30
это решение для тех кто не хочет удалять куки
На большее не хватило
$n = $_COOKIE['test'];
setcookie('test' . $n, $n);