Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Curl, pfsockopen и сессии удалённого сервера


Автор: maxbrown 2.10.2008, 05:39
Привет, All!
Задача: отобразить капчу, чтобы посетителю оставалось ввести только её, а не все остальные данные, которые он уже вводил на моём сайте.

Сразу оговорюсь: не сочтите ни в коем случае меня за спамера, все договорённости с владельцами второй городской доски объявлений есть, и при постинге объявлений сайт партнёров будет открываться чинно-благородно в новом окне. Просто у них нет сейчас программиста, чтобы сделать нормальный "служебный вход" (сделали им сайт на заказ, как готовый продукт, и ради меня переделывать никто ничего не будет). Поэтому для того, чтобы поделиться с партнёрами размещаемыми у меня объявлениями, мне придётся ломиться через капчу.
Дело осложняется тем, что эти ррррразработчики за каким-то лешим сделали так, что при неправильном вводе все (!) поля очищаются. Т.е., выдать заполненную форму, чтобы уже партнёрский сайт обругал за неверную капчу, показал её и после правильного ввода принял-таки объявление - увы, так не получится.

Собственно, спамеры-то как раз эту проблему давным-давно уже решили, и даже какие-то файнридеры к этому делу у них, я слышал, прикручены  smile  но мне-то спамерские технологии категорически не интересны. Да и западло, откровенно говоря.
Я хочу написать своё, ни в коем случае не универсальное, а простенькое решение исключительно данной конкретной задачи.
Готовые решения мне тоже не нужны, просто нужно, чтобы кто-то опытный дал совет, верной ли дорогой я иду:

1. PHPSESSID, присутствующий в SRC рисунка, никакой роли не играет? Можно просто скачивать partnersite.ru/captcha.php, сохранять в джипег и отдавать в имге посетителю?

2. А вот саму сессию закрывать ни в коем случае нельзя - так? И поэтому для открытия используем не fsockopen, а pfsockopen, так?

3. Где-то надо сохранить выданный pfsockopen'ом идентификатор для вызова на следующем шаге. Его можно записать в файл?

4. А вот на втором шаге уже закрываем сессию и 5. Перед этим всем этом надо как-то предусмотреть обязательное закрытие всех предыдущих сессий (когда юзер до второго шага не дошёл, а просто закрыл браузер и свалил) - или они сами со временем закроются? У меня, в принципе, не большая посещаемость на доске, ну 2, ну 5 посетителей в час. Если и случится иногда коллизия - ничего страшного, введут капчу ещё раз, пальцы не отвалятся.

Автор: MoLeX 2.10.2008, 06:02
Цитата(maxbrown @  2.10.2008,  05:39 Найти цитируемый пост)
Поэтому для того, чтобы поделиться с партнёрами размещаемыми у меня объявлениями, мне придётся ломиться через капчу.

по сути это им надо, пусть и делают  smile шучу


maxbrown, эти два сайта находятся у одного хостинг-провайдера?!

Автор: maxbrown 2.10.2008, 20:22
Цитата(MoLeX @ 2.10.2008,  06:02)
Цитата(maxbrown @  2.10.2008,  05:39 Найти цитируемый пост)
Поэтому для того, чтобы поделиться с партнёрами размещаемыми у меня объявлениями, мне придётся ломиться через капчу.

по сути это им надо, пусть и делают  smile шучу


maxbrown, эти два сайта находятся у одного хостинг-провайдера?!

У разных провайдеров.

И надо это, к сожалению, не им, а мне.


Автор: maxbrown 4.10.2008, 19:39
Столкнулся с небольшой проблемой.

Как НЕ закрыть сессию по завершению работы скрипта, если я использую Curl?
Ведь между закачкой капчи и отправкой запроса надо ещё дать посетителю эту капчу набрать. Т.е., скрипт должен отработать дважды, но при этом для Curl'а это должна быть одна и та же сессия.
И что делать, если второй раз посетитель скрипт не запустит, а увидев капчу, просто закроет браузер? Тогда, получается, незакрытые сессии так и будут накапливаться?

UPD: Нашёл ответ самостоятельно. Curl сессию и не прерывает. При условии, конечно, что правильно настроен путь к файлу, в котором Curl хранит куки. Блин. Одна ошибка - и 3 дня геморроя...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)