| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Curl, pfsockopen и сессии удалённого сервера |
| Автор: maxbrown 2.10.2008, 05:39 |
| Привет, All! Задача: отобразить капчу, чтобы посетителю оставалось ввести только её, а не все остальные данные, которые он уже вводил на моём сайте. Сразу оговорюсь: не сочтите ни в коем случае меня за спамера, все договорённости с владельцами второй городской доски объявлений есть, и при постинге объявлений сайт партнёров будет открываться чинно-благородно в новом окне. Просто у них нет сейчас программиста, чтобы сделать нормальный "служебный вход" (сделали им сайт на заказ, как готовый продукт, и ради меня переделывать никто ничего не будет). Поэтому для того, чтобы поделиться с партнёрами размещаемыми у меня объявлениями, мне придётся ломиться через капчу. Дело осложняется тем, что эти ррррразработчики за каким-то лешим сделали так, что при неправильном вводе все (!) поля очищаются. Т.е., выдать заполненную форму, чтобы уже партнёрский сайт обругал за неверную капчу, показал её и после правильного ввода принял-таки объявление - увы, так не получится. Собственно, спамеры-то как раз эту проблему давным-давно уже решили, и даже какие-то файнридеры к этому делу у них, я слышал, прикручены Я хочу написать своё, ни в коем случае не универсальное, а простенькое решение исключительно данной конкретной задачи. Готовые решения мне тоже не нужны, просто нужно, чтобы кто-то опытный дал совет, верной ли дорогой я иду: 1. PHPSESSID, присутствующий в SRC рисунка, никакой роли не играет? Можно просто скачивать partnersite.ru/captcha.php, сохранять в джипег и отдавать в имге посетителю? 2. А вот саму сессию закрывать ни в коем случае нельзя - так? И поэтому для открытия используем не fsockopen, а pfsockopen, так? 3. Где-то надо сохранить выданный pfsockopen'ом идентификатор для вызова на следующем шаге. Его можно записать в файл? 4. А вот на втором шаге уже закрываем сессию и 5. Перед этим всем этом надо как-то предусмотреть обязательное закрытие всех предыдущих сессий (когда юзер до второго шага не дошёл, а просто закрыл браузер и свалил) - или они сами со временем закроются? У меня, в принципе, не большая посещаемость на доске, ну 2, ну 5 посетителей в час. Если и случится иногда коллизия - ничего страшного, введут капчу ещё раз, пальцы не отвалятся. |
| Автор: maxbrown 2.10.2008, 20:22 | ||||
У разных провайдеров. И надо это, к сожалению, не им, а мне. |
| Автор: maxbrown 4.10.2008, 19:39 |
| Столкнулся с небольшой проблемой. Как НЕ закрыть сессию по завершению работы скрипта, если я использую Curl? Ведь между закачкой капчи и отправкой запроса надо ещё дать посетителю эту капчу набрать. Т.е., скрипт должен отработать дважды, но при этом для Curl'а это должна быть одна и та же сессия. И что делать, если второй раз посетитель скрипт не запустит, а увидев капчу, просто закроет браузер? Тогда, получается, незакрытые сессии так и будут накапливаться? UPD: Нашёл ответ самостоятельно. Curl сессию и не прерывает. При условии, конечно, что правильно настроен путь к файлу, в котором Curl хранит куки. Блин. Одна ошибка - и 3 дня геморроя... |