curl cookies

maxweber

Новичок
CURL COOKIES

Необходимо отобразить форум в контент-области страницы, т.е. меню, шапка остаются на своих местах и в качестве контента страницы отображается форум (Invision). Реализовано при помощи curl. Работает в принципе все за исключением логина пользователей. Проблема вот в чем:
PHP:
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/forum_cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/forum_cookie.txt");
если не устанавливать эти параметры - логин проходит, но после обновления страницы пользователь опять становится разлогиненным, при этом в cookie у клиента устанавливается
PHP:
[member_id] = '0'
[pass_hash] = '0'
[anonlogin] = '-1'
Если их установить, то логин работает, но, очевидно, что при одном залогиненом пользователе - все остальные тоже будут залогинены. Необходимо каким-то образом установить правильные cookie у клиента, а не в /tmp/...

Apache/1.3.33 (Unix) PHP/4.3.11
 

Lexx918

Guest
Поставь юзверю ещё пару параметров куки специально для форума и отдавай их в CURL'e не файлом, а строкой "Set-Cookie: ".
Тогда для каждого посетителя будут свои куки и при этом они же будут только для форума.
 

ForJest

- свежая кровь
PHP:
session_start();
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/forum_cookie_".session_id().".txt"); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/forum_cookie_".session_id().".txt");
 

ForJest

- свежая кровь
Lexx918
Добавится пишется без без мягкого знака.
Проверка - "что сделает".
--------------------------------
Распиши пожалуйста, какого гемору добавится, с твоей точки зрения - это будет продуктивнее. А то так получается голословное утверждение.
 

Lexx918

Guest
Сессии надо хранить, место под них выделить и удалять старые. И всё равно они при новом посещении меняются, в отличие от кук, так что файл, в имени которого присутствует сессия, будет бесполезным при новом входе.
Проще добавить в куки юзверю ещё пару переменных с именем и паролем форума - всё!
...ну или хотябы ID мембера из БД. Но не как не сессии
З.Ы. К слову о русском языке: геморр - двойная "р", а "пожалуйста" - выделяется "," с обоих сторон.
Думается форум по PHP - не есть способ показать своё владение могучим и уж точно не учить других.
 

ForJest

- свежая кровь
Lexx918
Расскажи подробнее про хранение куки на винте юзверя в этом конкретном случае.
Как это реализовать? Предложи работающую схему - пока что я вижу одни слова.
Я не вижу твоей схемы, которую может применить человек, который задал вопрос.
Я вижу пока что лишь необоснованную критику моего (работающего) решения и какое-то невнятное "проще добавить".
 

Lexx918

Guest
А по-моему следующий шаг будет таков - я приду к автору топика в гости и своими ручками напишу всю реализацию.
Ну что не понятно?
Человек, который уже работает с cURL и кукаи, я думаю, запросто сможет добавить пару строк типа:
PHP:
setcookie('UserName_FORUM', $name);
setcookie('UserPass_FORUM', $pass);
потом получить их типа:
PHP:
$cookie = $_COOKIE["UserName_FORUM"].
"; ".
$_COOKIE["UserPass_FORUM"];
и отдать CURL'у типа
PHP:
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
Или может теперь ещё всё это в blablabla.php сохранить и на мыло ему выслать???

-~{}~ 18.09.05 22:13:

офтоп
--------
CURL'ом качаю через прокси картинку *.png, а в теле ответа пустота. Сервер сообщает о таймауте. В чём трабла? С txt/html всё нормально.
 

ForJest

- свежая кровь
Гораздо понятнее теперь.
У меня назрел ещё несколько вопросов:
- зачем в данном конкретном случае устанавливать куки с паролем и username?
- как это поможет решить предложенную задачу - т.е. чтобы можно было ходить по страницам форума?
- каким образом передав $cookie (которое судя по коду содержит username с форума) можно помочь решить задачу?

-~{}~ 18.09.05 19:18:

Lexx918
Если у тебя есть конктретный вопрос - заведи новую тему и задай его там.
 

Lexx918

Guest
Потомучто "...в данном конкретном случае..." приведён просто пример того "как бы я хранил ещё несколько значений в куках", а не то "как КОНКРЕТНО юзать ИнвизионФорум через CURL".
Тема такая (почти) уже есть, но там все молчат :(
 

ForJest

- свежая кровь
Lexx918
Понятно. Т.е. ты высказал как бы ты работал с курлом в неизвестно каком случае? Я прошу тебя впредь не разводить пустой трёп, если ты не знаешь как помочь автору топика.
 

Lexx918

Guest
Глупее фразы не слышал. Возникло чуство, что ты как раз ты-то к PHP и программированию в целом не имеешь ни какого отношения, и светишься здесь лишь для понта.
Прочти ещё раз вопрос автора:
"Необходимо каким-то образом установить правильные cookie у клиента, а не в /tmp/..."
Вот тебе более менее сформулированая моя мысля в качестве ответа ему:
"Храни куки не на сервере в одном файле, а в куках конкретного пользователя на его же стороне и используй их индивидуально в каждом запросе к форуму.
Очевидно, что одним файлом в папочке tmp для тысячи посетителей не обойтись"
 

ForJest

- свежая кровь
Lexx918
Ты до сих пор не дал работающего решения. Если тебе хочется пофлеймить попусту - сходи в чат куда-нибудь.
Я дал решение, которое будет работать. Ты же не можешь из себя выжать ничего удобоваримого до сих пор.
 

Lexx918

Guest
PHP:
// Для неавторизированного пользователя
session_start();
setcookie('VarName', session_id()); // VarName - имя любой не зарегистрированной переменной
// Если юзверь уже авторизирован, то ...
$VarName = $_COOKIE['VarName'];
// Запрос одинаков в любом случае:
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/forum_cookie_".$VarName.".txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/forum_cookie_".$VarName.".txt");
Преимущество моего примера над твоим заключается в том, что даже после закрытия браузера пользователь сможет оставаться авторизированым благодаря индивидуальному хранению его кук.
Я не могу привести пример без сессий, так для этого мне нужны сырцы. Я так же не привожу условие проверки авторизации по той же причине. Тема, я думаю, закрыта...
 

ForJest

- свежая кровь
Lexx918
Т.е. мы пришли к моему решению. Твоё решение избыточно, т.к. сессии сами высылают куки.
 

Lexx918

Guest
Нет. Просто мне нужны сырцы и я избавлюсь от сессий вообще.
 
Сверху