За последние 24 часа нас посетили 17292 программиста и 1571 робот. Сейчас ищут 1145 программистов ...

Гребаные сессии

Тема в разделе "PHP для новичков", создана пользователем andreyatake, 30 янв 2017.

  1. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Вопрос такой. Не работали сессии на сайте. Решил сделать что-то простое, чтобы посмотреть, работает ли оно вообще.
    В итоге сделал файлик php с 2 строчками кода и залил на хостинг.

    Вот код (этот пример встречается на разных сайтах)
    PHP:
    1. <?
    2. if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
    3. echo "Вы обновили эту страницу ".$_SESSION['counter']++." раз. ";
    4. echo "<br><a href=".$_SERVER['PHP_SELF'].">обновить";
    5. ?>
    Ничерта не работает, все время о. Что я делаю не так?:mad:

    На моем сайте сессия сохраняется, и можно вывести сохраненное значение, но после перезагрузки, или перехода на другую страницу исчезает нахрен.
     
    #1 andreyatake, 30 янв 2017
    Последнее редактирование модератором: 30 янв 2017
  2. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    А если заменить $_SESSION["counter"]++ на $_SESSION["counter"] + 1?
     
  3. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Тогда все вообще ломается.
     
  4. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Странно, у меня Ваш код работает.
    --- Добавлено ---
    Хоть и закрывающего тега </a> нет :)
    --- Добавлено ---
    Может быть где-то в проекте есть что-то типа "unset ($_SESSION["counter"])"?
     
  5. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Я сделал файлик только с этим кодом. Открыл на телефоне - тоже не работает. Но я не на локальном сервере делал, а сразу на хостинг залил.
     
  6. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Попробуй для начала у себя протестить
     
  7. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    На локалке нет возможности проверить. Да и в чем может быть разница, тут 2 строчки кода. В хостинге вряд ли проблема, в браузере тоже вряд ли(т.к. я и на телефоне проверил и на компе)

    Может что-то еще дописать нужно? Это ппц какое-то(
     
  8. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Нюансов на самом деле может быть много

    PHP:
    1. if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
    2. var_dump($_SESSION);
    Сделай так и пришли вывод
     
  9. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.579
    Симпатии:
    1.760
    Сокращённые открывающие теги разрешены?
     
    artoodetoo нравится это.
  11. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Там Строка $_SESSION["counter"]++ должна быть, естественно, после проверки. Я хз как там сохранить...
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.790
    Симпатии:
    1.330
    Адрес:
    Лень
    PHP:
    1. <?php
    2.  
    3. setcookie ( 'counter', $C = (int)( $_COOKIE['counter'] ?? -1 ) + 1 );
    4.  
    5. echo "Вы обновили эту страницу {$C} раз.<br><a href = \"{$_SERVER['PHP_SELF']}\">обновить</a>";
     
    #12 MouseZver, 31 янв 2017
    Последнее редактирование: 31 янв 2017
  13. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    начнем с простого
    phpinfo();
    крутим до момента

    session
    и читаем чаво там есть и нет .. если там все выключена или переопределено ( что скорей всего именно так)
    пробуем выставлять через https://php.ru/manual/function.ini-set.html


    на всякий случай даю вот это
    https://php.ru/manual/session.configuration.html
     
  14. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0

    Добавилась строка
    array(1) { ["counter"]=> int(1) }
     
  15. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0
    Вроде там все включено

    session
    Session Support enabled
    Registered save handlers files user beget memcache memcached redis
    Registered serializer handlers php_serialize php php_binary wddx
    Directive Local Value Master Value
    session.auto_start Off Off
    session.cache_expire 180 180
    session.cache_limiter nocache nocache
    session.cookie_domain no value no value
    session.cookie_httponly Off Off
    session.cookie_lifetime 0 0
    session.cookie_path / /
    session.cookie_secure Off Off
    session.entropy_file no value no value
    session.entropy_length 0 0
    session.gc_divisor 1000000 1000000
    session.gc_maxlifetime 28800 28800
    session.gc_probability 1 1
    session.hash_bits_per_character 4 4
    session.hash_function 0 0
    session.name PHPSESSID PHPSESSID
    session.referer_check no value no value
    session.save_handler files files
    session.save_path /tmp/php_sess /tmp/php_sess
    session.serialize_handler php php
    session.upload_progress.cleanup On On
    session.upload_progress.enabled On On
    session.upload_progress.freq 1% 1%
    session.upload_progress.min_freq 1 1
    session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
    session.upload_progress.prefix upload_progress_ upload_progress_
    session.use_cookies On On
    session.use_only_cookies On On
    session.use_strict_mode Off Off
    session.use_trans_sid 0 0
     
  16. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    "Гребанные сессии", "тупая машина", "бесполезная железяка" и подобные высказывания, только отдаляют решение проблемы.
    Машина может быть и тупая, поэтому работает тупо так как ей сказали. Если не ты сказал, то твой провайдер. Закрой для начала тэг </a>.
    Потом проверь на локалке и если всё работает - обратись в хостеру со словами: "почему у меня работает а у вас нет". Нервничать тут бесполезно.

    Машина, как и женщина, любит ласку, чистоту и смазку... (с)

    Это про автомобили, но компьютеры тоже любят ласку и заботливый поиск проблемы с глубокой аналитикой.
     
    SamyRed и andreyatake нравится это.
  17. andreyatake

    andreyatake Новичок

    С нами с:
    30 янв 2017
    Сообщения:
    23
    Симпатии:
    0


    Наконец отписал хостер. Говорит дело было в bom символах
    Заработало

    https://beget.com/ru/articles/bom_remove
     
    #17 andreyatake, 31 янв 2017
    Последнее редактирование модератором: 31 янв 2017
  18. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    бял .. включи отображение ошибок - после <php добавь
    ini_set('display_errors', 1);
    ini_set('error_reporting', E_ALL);