За последние 24 часа нас посетил 20661 программист и 1103 робота. Сейчас ищут 403 программиста ...

Проблема с сессиями

Тема в разделе "PHP для новичков", создана пользователем EmilioSmerty, 14 июл 2020.

  1. EmilioSmerty

    EmilioSmerty Новичок

    С нами с:
    6 июн 2020
    Сообщения:
    27
    Симпатии:
    1
    Всем привет, делаю бота:
    У меня приходят сообщения: приходит сообщение 1 (токен...), я сохраняю сообщение в сессию, когда приходит сообщение 2 (id) мне нужно достать сообщение 1 из сессии и вывести его. Где ошибка?
    Код (Text):
    1.  
    2. session_start();
    3. if (strpos($message, 'токен') !== false) {
    4.        preg_match('/(\w+)$/', $message, $token);
    5.        $rtoken = $token[1];
    6.         $_SESSION['token'] = $rtoken;
    7.             $vk->sendMessage($id, $_SESSION['token']);
    8. } elseif (strpos($message, 'id') !== false) {
    9.             $vk->sendMessage($id, $_SESSION['token']);
    10. }
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    Сессии разные
     
  3. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    подозреваю что проблема в странных условиях с strpos(). они срабатывают не так как ты задумал. по крайней мере, логика их неочевидна, а значит хрупка.

    http://phpfaq.ru/debug
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    задачу норм опишите - откуда приходят сообщения? откуда берется $message?
     
  5. EmilioSmerty

    EmilioSmerty Новичок

    С нами с:
    6 июн 2020
    Сообщения:
    27
    Симпатии:
    1
    Приходит массив $data от апи сайта
    Код (Text):
    1. $message = $data->object->text;
    .
    И стоит проверка на то, что пришло новое сообщение
    Код (Text):
    1.  
    2. if ($data->type == 'message_new')
     
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    Что я и подозревал в первом ответе )))
    У запросов с апи нет сессий....

    Не очень понятна сама суть проблемы, тс пытается свое видение считать верным - что не факт.

    Я так понимаю от внешнего апи, боту приходят два сообщения, и нужно сохранить состояние между этими сообщениями, то есть если в первом сообщении передано какое то значение, чтоб при передаче второго сообщения бот мог использовать то первое значение, так?
     
  8. EmilioSmerty

    EmilioSmerty Новичок

    С нами с:
    6 июн 2020
    Сообщения:
    27
    Симпатии:
    1
    Да, так
     
  9. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    Ну в качестве такого временного хранилища нужно использовать бд, например mysql, sqlite, redis, на худой конец текстовые файлы.

    Но конечно же необходима идентификация сообщений от апи, чтоб знать что к чему относится.

    Либо изменить апи сайта, чтоб присылалт всю необходимую информацию в одном запросе.