Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение и использование Cookie, на Indy 
:(
    Опции темы
Poseidon
Дата 28.1.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 4
Всего: 133



Появилась необходимость сохранять Cookie и потом, при последующем запуске программы их использовать.

Авторизуюсь на сайте, все ОК. Пытаюсь сохранить куки.

Сохраняю так:
Код

var Cookie: TStringList;
i: integer;
begin
Cookie:= TStringList.Create;

for i:= 0 to IdCookieManager.CookieCollection.Count-1 do
Cookie.Add(IdCookieManager.CookieCollection[i].CookieText);

Cookie.SaveToFile('Cookie.txt');
Cookie.Free;
end;


В Cookie.txt все сохраняется прекрасно. Но при поптытке загрузить обратно ничего не получается (сайт показывает что я не авторизован).

Загружаю обратно так

Код

var Cookie: TStringList;
i: integer;
begin
Cookie:= TStringList.Create;
Cookie.LoadFromFile('Cookie.txt');

IdCookieManager.CookieCollection.Clear;
for i:= 0 to Cookie.Count-1 do
IdCookieManager.CookieCollection.Add.CookieText:= Cookie.Strings[i];

Cookie.Free;
end;


При этом, если сравнить Cookie, каторые программа получает сама и каторые остались с предыдущего запуска (т.е. записались в файл), то они эдентичны. Может я не правильно их "подсовываю"?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Romikgy
Дата 28.1.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Poseidon @  28.1.2007,  17:37 Найти цитируемый пост)
IdCookieManager.CookieCollection.Add.CookieText:= Cookie.Strings[i];

Код

IdCookieManager.CookieCollection.AddSrcCookie(Cookie.Strings[i]);

так попробуй


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Poseidon
Дата 29.1.2007, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 4
Всего: 133



Не прокатило.

Если уж никто не знает как нужно делать, то мот кто посоветует, где можно почитать про IdCookieManager.CookieCollection. Что тем делает Add, Add2, AddSrcCookie? В чем разница и т.п.
Только прошу не тыкать в полную документацию по Indy.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
creas0ft
Дата 29.1.2007, 04:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 5.8.2006
Где: Саранск

Репутация: 2
Всего: 2



А время жизни куки?!
Может такое в самой куке?!
--------------------
Форум программистов уклонистов в сторону сео-шмео
PM MAIL WWW ICQ   Вверх
RA
Дата 29.1.2007, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 10
Всего: 115



ЛАжа этот ваш Инди, какой раз говорю слава ICS-у smile

PS:

А что если так
IdCookieManager1.AddCookie(USERNAME, 'http://www.host.com/login.php?');
IdCookieManager1.AddCookie2(PASSWORD, 'http://www.host.com/login.php?'); 

IdCookieManager.CookieCollection.Add.CookieText:=Cookie.Text




Это сообщение отредактировал(а) RA - 29.1.2007, 22:22
PM   Вверх
Poseidon
Дата 30.1.2007, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 4
Всего: 133



RA, не, залогинится-то у меня получается. Нужно сделать что-то вроди "сохранить пароль", только сохранять нужно не пароль, а состояние сайта. Т.е., зашел я на сайт, полазил по нему. В куках сохранилось где я был на сате, а где не был (сайт соответственно это все отображает). Пока сессия продолжается (т.е. пока не зактрою прогу), все ОК. Но как тольок я закрываю прогу, куки, понятное дело, уничтожаются, т.к. они хранятся в памяти. И при последующем запуске программы она (точнее сайт) думает, что я впервые на нем и опять начинает "светить" то, где программы уже побывала. А мне надо так загрузить программу, что бы сайт и не понял, что она вообще закрывалась. Вот. Сам не понял, но думаю вы догадаетесь что надо  smile 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
RA
Дата 30.1.2007, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 10
Всего: 115



Poseidon, ДА это всё понятно, я как человек абсолютно не разбирающийся в Indy решил предположить вариант.


Там выше я имел в виду что:

ты куки добавляешь так 
for i:= 0 to Cookie.Count-1 do
IdCookieManager.CookieCollection.Add.CookieText:= Cookie.Strings[i]; 

а почемубы не сделать так

IdCookieManager.CookieCollection.Add.CookieText:= Cookie.text ?


Это сообщение отредактировал(а) RA - 30.1.2007, 09:59
PM   Вверх
CodeGold
Дата 23.7.2014, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 20.12.2010

Репутация: нет
Всего: нет



Добавлю своих 5 копеек.


сохранение в файл
Код

procedure IdCookieManagerSaveFile(IdCookieManager: TIdCookieManager; dir: string);


загрузка из файла
Код

procedure IdCookieManagerLoadFile(var IdCookieManager: TIdCookieManager; domain, dir: string);


Код

procedure IdCookieManagerSaveFile(IdCookieManager: TIdCookieManager; dir: string);
var
  sl: TStringList;
  i: integer;
begin
  try
    sl := TStringList.Create;
    with IdCookieManager do
      for i := 0 to CookieCollection.Count - 1 do
        sl.Add(CookieCollection[i].CookieName + '=' + CookieCollection[i].Value);
    sl.SaveToFile(dir);
    sl.Free;
  except
  end;
end;

Код

procedure IdCookieManagerLoadFile(var IdCookieManager: TIdCookieManager; domain, dir: string);
var
  sl: TStringList;
  i: integer;
  idURI: TidURI;
begin
  try
    idURI := TidURI.Create(domain);
    sl := TStringList.Create;
    sl.LoadFromFile(dir);
    for i := 0 to sl.Count - 1 do
      IdCookieManager.CookieCollection.AddServerCookie(sl[i], idURI);
    sl.Free;
    idURI.Free;
  except
  end;
end;


delphi xe6


Это сообщение отредактировал(а) CodeGold - 23.7.2014, 08:53
PM MAIL   Вверх
Poseidon
Дата 2.9.2014, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 4
Всего: 133



CodeGold, ты просто офигеть как вовремя. не прошло и 7,5 лет. 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0758 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.