Einzelnen Beitrag anzeigen

Andreas L.
(Gast)

n/a Beiträge
 
#26

Re: CookieCrumbler

  Alt 14. Jun 2009, 12:22
Zitat von Ruio:
Ich hab nur Chrome für Testzwecke Installiert.
Die Tabelle scheint leer zu sein ...
Kannst du ein paar Seiten mit Chrome aufrufen um sicherzustellen das Cookies vorhanden sein müssen? Evtl. noch im Einstellungen-Dialog schauen, gibt z. B. eine Option um alle Cookies beim Beenden zu löschen, vllt. ist deshalb die Tabelle leer. Im Anhang findest du ein Bild wie die Struktur der Db bei mir aussieht. Möglicherweise ist deine Cookies-Datei auch nur beschädigt. Wenn du diese löscht sollte sie von Chrome wieder korrekt angelegt werden.

Den Host_key hatte ich vorher auch schon implementiert, hab da vorhin was durcheinander gebracht (kein Wunder wenn man 11 verschiedene Cookie-Formate im Kopf hat...). Ansonsten kann ich mir nicht erkären warum dieser Fehler auftritt. Ich überprüfe beim Zugriff auf die Datei ob die Tabelle vorhanden ist.
Delphi-Quellcode:
procedure TBcChromeCookies.LoadFromFile(FileName: string);
var
  db: TSQLiteDatabase;
  table: TSQLIteTable;
begin
  Clear;
  db := TSQLiteDatabase.Create(FileName);
  try
    if db.TableExists('cookies') then
    begin
      table := db.GetTable('SELECT creation_utc, host_key, name, value, path, expires_utc, secure, httponly, last_access_utc FROM cookies');
      try
        while not table.EOF do
        begin
          with Cookies[Add] do
          begin
            Name := table.FieldAsString(table.FieldIndex['name']);
            Content := table.FieldAsString(table.FieldIndex['value']);
            Domain := table.FieldAsString(table.FieldIndex['host_key']);
            Path := table.FieldAsString(table.FieldIndex['path']);
            Expires.AsWebKitTime(StrToInt64(table.FieldAsString(table.FieldIndex['expires_utc'])));
            Secure := LongBool(StrToIntDef(table.FieldAsString(table.FieldIndex['secure']), 0));
            WholeDomain := LongBool(StrToIntDef(table.FieldAsString(table.FieldIndex['httpOnly']), 0));
            LastAccessed.AsWebKitTime(StrToInt64(table.FieldAsString(table.FieldIndex['last_access_utc'])));
            Created.AsWebKitTime(StrToInt64(table.FieldAsString(table.FieldIndex['creation_utc'])));
          end;
          table.Next;
        end;
      finally
        table.Free;
      end;
    end;
  finally
    db.Free;
  end;
end;
Miniaturansicht angehängter Grafiken
chrome_cookies_857.png  
  Mit Zitat antworten Zitat