За последние 24 часа нас посетили 17818 программистов и 1686 роботов. Сейчас ищут 904 программиста ...

Проверка и определение куки

Тема в разделе "PHP для новичков", создана пользователем Paka, 22 апр 2016.

  1. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    Всем доброго времени суток, есть небольшая задача подкоректировать 1 страницу в Wordpress
    Нужно что бы при заходе на страницу проверялось наличие куки, если она есть то редирект на другую страницу, если куки нет то просто задать куку без редиректа. Тоесть при повторном посещении этой страницы человек будет сразу редиректиться. Сижу с обеда но так как я далекий от этого и друзей в этой теме совсем нет, пришел за вашей мудростью. Буду очень признателен, если поможете, к карме +
    Это что я шкрябал. :(
    PHP:
    1. <?php
    2.  
    3. if(!isset($_COOKIE['secondvisit'])) {
    4.  
    5. wp_redirect( 'http://www.example.com', 301 );
    6.  
    7. } else {
    8. add_action( 'init', 'my_setcookie_example' );
    9.  
    10. function my_setcookie_example() {
    11.  
    12. setcookie( "secondvisit", 15 * DAYS_IN_SECONDS);
    13.  
    14. }
    15. ?>
     
    #1 Paka, 22 апр 2016
    Последнее редактирование модератором: 22 апр 2016
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Не знаком с вордпрессом, но так объявление функции я бы вообще убрал. Те в элс оставил бы одну строчку с установкой куки. И вы не передаете параметр value, те значение куки. Имя есть, значения нет. Пусть будет хоть пустое, но будет.
    --- Добавлено ---
    Ну и раз на то пошло: описание функции несколько логичнее бы поставить ДО вызова функции
     
  3. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    Сенкс чувак чуть поправил, но ерорится теперь)
    PHP:
    1. <?php
    2.  
    3. if(isset($_COOKIE['secondvisit'])) {
    4.  
    5. wp_redirect( 'http://www.example.com', 301 );
    6.  
    7. } else {
    8.  
    9. setcookie( "secondvisit", 32, 15 * DAYS_IN_SECONDS);
    10.  
    11. }
    12. ?>
    Выкидывает ошибку о том что Header alreade sent
     
  4. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    А. Нельзя так в вордпрессе, значит. Возвращайте свою функцию, только вызывайте ее после описания, а не наоборот, и значение куки установите
     
  5. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    PHP:
    1. <?php
    2.  
    3. if(!isset($_COOKIE['$cookie_name'])) {
    4.  
    5. wp_redirect( 'http://www.example.com' );
    6.  
    7. } else {
    8.  
    9.  
    10. function my_setcookie_example() {
    11. setcookie( $cookie_name, 1, 15 * DAYS_IN_SECONDS);
    12.  
    13. add_action( 'my_setcookie_example' );
    14. }
    15. ?>
    Ерорится unexpected $end:)
     
  6. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Фигурная скобка
     
  7. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    Код (Text):
    1. <?php
    2.  
    3. if(!isset($_COOKIE['$cookie_name'])) {
    4.  
    5. wp_redirect( 'http://www.example.com' );
    6.  
    7. } else {
    8.  
    9.  
    10. function my_setcookie_example() {
    11. setcookie( $cookie_name, 1, 15 * DAYS_IN_SECONDS);
    12.  
    13. add_action( 'init', 'my_setcookie_example' );
    14. }
    15. }
    16. ?>
    Опять на Header alreade sent ругается) :dumb:
     
  8. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Эм, не угадал со скобочкой)
     
  9. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    PHP:
    1. <?php
    2.  
    3. if(!isset($_COOKIE['$cookie_name'])) {
    4.  
    5. wp_redirect( 'http://www.example.com' );
    6.  
    7. } else {
    8.  
    9.  
    10. function my_setcookie_example() {
    11. setcookie( $cookie_name, 1, 15 * DAYS_IN_SECONDS);
    12. }
    13. add_action( 'init', 'my_setcookie_example' );
    14.  
    15. }
    16. ?>
    Вроде так) Но все равно к хедеру претензии 8)
     
  10. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Значит до установки кук уже что-то выводится. Куки можно установить только до вывода какого-либо контента
     
  11. Paka

    Paka Новичок

    С нами с:
    22 апр 2016
    Сообщения:
    18
    Симпатии:
    0
    Спасибо, завтра покопаю еще. Добра тебе в карму)