使用cookies和python存储搜索
嘿,我有一个搜索数据库的网页。我希望能够使用python实现cookies来存储用户搜索的内容,并在用户返回时为他们提供最近搜索的字段。有没有一种方法可以使用python Cookie库来实现这一点???通常,我们会执行以下操作使用cookies和python存储搜索,python,cookies,Python,Cookies,嘿,我有一个搜索数据库的网页。我希望能够使用python实现cookies来存储用户搜索的内容,并在用户返回时为他们提供最近搜索的字段。有没有一种方法可以使用python Cookie库来实现这一点???通常,我们会执行以下操作 使用框架 建立一个会议。理想情况下,要求提供某种用户名。如果您不想询问姓名或其他信息,可以尝试将浏览器的IP地址作为会话的密钥(这可能会变成一场噩梦,但您可以尝试一下) 使用会话标识(用户名或IP地址),将搜索保存在服务器上的数据库中 当此人再次登录时,从本地数据库检索
- 故意劫持是一个人冒充另一个人的方式
- 当多人共享同一IP地址(因为他们共享同一台计算机)时,就会发生意外劫持
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()
import cherrypy
导入json
类根(对象):
def索引(自):
last_search=cherrypy.request.cookie.get('terms',None)
如果上次搜索:
last_search=','.join(json.loads(last_search.value))
其他:
上次搜索='无'
返回“”
搜寻
搜寻
请键入您的搜索词:
提示:最后5个使用的术语:%s
“%”(上次搜索,)
index.exposed=True
def do_搜索(自我,查询):
结果=['some','results','here','simulating','a','search']
打印cherrypy.request.cookie
last_search=cherrypy.request.cookie.get('terms',None)
如果上次搜索:
last_search=json.load(last_search.value)[-4:]#获取last 4
其他:
上次搜索=[]
最后一次搜索。追加(查询)#追加新术语
cherrypy.response.cookie['terms']=json.dumps(最后一次搜索)
返回“”
搜寻
%r的搜索结果
%
“%”(查询“,”.join(结果),cherrypy.url(“/”)
do_search.exposed=True
application=cherrypy.tree.mount(根(),“/”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
cherrypy.quickstart()
注:
它使用序列化列表并将其作为字符串存储在cookie中。Pythonjson
是在Python2.6中引入的,因此如果您在2.6之前需要它,那么如果您没有2.6,您可以使用它来运行示例
很抱歉代码中的HTML。这最好是在代码之外,在模板文件中,使用jinja2之类的模板引擎。是的。您使用的是哪种web框架?同意,但您关于意外劫持的说明除外。共享相同IP(即通过代理/NAT)的用户不会意外地劫持彼此。cookie与每个http请求一起发送-IP地址成为问题的唯一方式是在处理响应的应用程序中。