Всем привет, делаю бота: У меня приходят сообщения: приходит сообщение 1 (токен...), я сохраняю сообщение в сессию, когда приходит сообщение 2 (id) мне нужно достать сообщение 1 из сессии и вывести его. Где ошибка? Код (Text): session_start(); if (strpos($message, 'токен') !== false) { preg_match('/(\w+)$/', $message, $token); $rtoken = $token[1]; $_SESSION['token'] = $rtoken; $vk->sendMessage($id, $_SESSION['token']); } elseif (strpos($message, 'id') !== false) { $vk->sendMessage($id, $_SESSION['token']); }
подозреваю что проблема в странных условиях с strpos(). они срабатывают не так как ты задумал. по крайней мере, логика их неочевидна, а значит хрупка. http://phpfaq.ru/debug
Приходит массив $data от апи сайта Код (Text): $message = $data->object->text; . И стоит проверка на то, что пришло новое сообщение Код (Text): if ($data->type == 'message_new')
> от апи сайта обычно если используется API, то не используются куки. без куки нет сессии. т.е. сессионные данные не сохраняются. См. также: SO: Why is jquery's .ajax() method not sending my session cookie?
Что я и подозревал в первом ответе ))) У запросов с апи нет сессий.... Не очень понятна сама суть проблемы, тс пытается свое видение считать верным - что не факт. Я так понимаю от внешнего апи, боту приходят два сообщения, и нужно сохранить состояние между этими сообщениями, то есть если в первом сообщении передано какое то значение, чтоб при передаче второго сообщения бот мог использовать то первое значение, так?
Ну в качестве такого временного хранилища нужно использовать бд, например mysql, sqlite, redis, на худой конец текстовые файлы. Но конечно же необходима идентификация сообщений от апи, чтоб знать что к чему относится. Либо изменить апи сайта, чтоб присылалт всю необходимую информацию в одном запросе.