Hey ich habe eine Webseite zum Durchsuchen einer Datenbank. Ich möchte in der Lage sein, Cookies mit Python zu implementieren, um zu speichern, wonach ein Benutzer sucht, und ihnen bei der Rückkehr ein kürzlich gesuchtes Feld zur Verfügung zu stellen. Gibt es eine Möglichkeit, dies mit der Python-Cookie-Bibliothek zu implementieren?Verwenden von Cookies mit Python zum Speichern von Suchen
Antwort
Normalerweise machen wir folgendes.
Verwenden Sie ein Framework.
Eine Sitzung einrichten. Suchen Sie im Idealfall nach einem Benutzernamen. Wenn Sie nicht nach Namen oder irgendetwas fragen möchten, können Sie versuchen, die IP-Adresse des Browsers als Schlüssel für die Sitzung zu verwenden (dies kann zu einem Albtraum werden, aber Sie können es versuchen.)
Verwenden der Sitzung Identifizierung (Benutzername oder IP-Adresse), speichern Sie die Suchen in einer Datenbank auf Ihrem Server.
Wenn sich die Person erneut anmeldet, rufen Sie ihre Abfragedaten aus Ihrer lokalen Datenbank ab.
Moral der Geschichte. Traue dem Cookie nicht, etwas anderes zu haben als die Sitzungsidentifikation. Und selbst dann wird es entweder absichtlich oder versehentlich entführt.
Vorsätzliche Hijacking ist die Art, wie eine Person als eine andere aufwirft.
Das Entführen von Unfällen erfolgt, wenn mehrere Personen dieselbe IP-Adresse teilen (weil sie denselben Computer verwenden).
Einverstanden, außer Ihrer Anmerkung bezüglich versehentlicher Entführung. Benutzer, die die gleiche IP teilen (dh über einen Proxy/NAT), können sich nicht versehentlich gegenseitig entführen. Der Cookie wird mit jeder HTTP-Anfrage gesendet - die einzige Möglichkeit, IP-Adressen zu einem Problem zu machen, wäre in der Anwendung, die die Antwort verarbeitet. – Andru
Um Cookies zu verwenden, können Sie die API für Cookies verwenden, die Ihr Framework verwendet.
Hier ist ein CherryPy voll funktionierendes Beispiel für das, was Sie wollen, speichern suchen und sie später.
import cherrypy
import json
class Root(object):
def index(self):
last_search = cherrypy.request.cookie.get('terms', None)
if last_search:
last_search = ','.join(json.loads(last_search.value))
else:
last_search = 'None'
return """
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Search</title>
</head>
<body>
<h1>Search</h1>
<form action="do_search" method="get">
<p>Please type your search terms:
<input type="text" name="query" /></p>
<p>Hint: Last 5 used terms: %s</p>
<p><input type="submit" value="Search →" /></p>
</form>
</body>
""" % (last_search,)
index.exposed = True
def do_search(self, query):
results = ['some', 'results', 'here', 'simulating', 'a', 'search']
print cherrypy.request.cookie
last_search = cherrypy.request.cookie.get('terms', None)
if last_search:
last_search = json.loads(last_search.value)[-4:] # get last 4
else:
last_search = []
last_search.append(query) # append new term
cherrypy.response.cookie['terms'] = json.dumps(last_search)
return """
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Search</title>
</head>
<body>
<h1>Search Results for %r</h1>
<p>%s</p>
<p><a href="%s">click here to search again</a>
</p>
</body>
""" % (query, ', '.join(results), cherrypy.url('/'))
do_search.exposed = True
application = cherrypy.tree.mount(Root(), '/')
if __name__ == '__main__':
cherrypy.quickstart()
NOTES:
Es verwendet json
die Liste und speichern sie in den Cookie als String serialisiert. Python json
wurde in Python 2.6 eingeführt. Wenn Sie es also vor 2.6 benötigen, können Sie anstelle von 2.6 stattdessen simplejson
verwenden, um das Beispiel auszuführen.
Sorry über das HTML im Code. Das wäre idealerweise außerhalb des Codes, in einer Template-Datei, mit einer Template-Engine wie jinja2.
- 1. Verwenden eines Cookies zum Speichern von Daten
- 2. Verwenden von Regex zum Suchen von Daten in Python
- 3. Verwenden von Joins zum Suchen von Benutzern
- 4. Verwenden von PrincipalSearcher zum Suchen von Benutzern mit "oder" -Parametern
- 5. Verwenden von jQuery zum Suchen einer Teilzeichenfolge
- 6. Verwenden von SSkeychain zum Speichern von Zugriffstoken
- 7. Verwenden einer Hashtabelle zum Speichern von Schlüsseln?
- 8. Verwenden von Apache Lucene zum Suchen
- 9. Speichern von Cookies über XUL mit document.cookie
- 10. Verwenden von Javascript zum Setzen von Cookies in IE
- 11. Verwenden von Python zum Suchen mehrerer Textdateien nach Übereinstimmungen mit einer Liste von Zeichenfolgen
- 12. schnellste Weg zum Speichern von Kommentardaten Python
- 13. Verwenden von LINQ zum Suchen/Löschen von Duplikaten
- 14. Verwenden von Python zum Erstellen von Webanwendungen
- 15. Verwenden von Python zum Entwickeln von Webanwendung
- 16. Verwenden von Python zum Ausgeben von Eingabeaufforderungen
- 17. Verwenden von My.Settings zum Speichern eines Arrays
- 18. Active Directory zum Speichern von Daten verwenden
- 19. Verfolgen von Weiterleitungen und Cookies mit Python
- 20. Verwenden von Session zum Speichern der Authentifizierung?
- 21. Python-Wörterbuch zum Speichern von Socket-Objekten
- 22. Verwenden von Python zum Aufrufen von Mencoder mit einigen Argumenten
- 23. Verwenden von Python-Anfragen: Sitzungen, Cookies und POST
- 24. Speichern von Cookies Windows Store App
- 25. Verwenden von jQuery.data zum Speichern einer Liste von Elementen
- 26. Aktualisierung von Cookies mit jquery
- 27. Verwenden von ZIP-Archiven zum Speichern von NSDocument-Daten
- 28. Verwenden von R zum Akzeptieren von Cookies zum Herunterladen einer PDF-Datei
- 29. Verwenden von NSKeyedArchiver zum Speichern von benutzerdefinierten Datenmodell
- 30. Verwenden von NSUserDefaults zum Speichern von UISwitch-Status
Ja. Welches Web-Framework verwenden Sie? – nosklo