2010-11-21 36 views
0

我有一个网站,我使用CGI在python中编写。直到最近,这种情况都很好,当时规模的能力变得重要。如何在使用mod_python时读取python脚本中的cookie

我决定,因为它非常简单,使用mod_python。我网站的大部分功能存储在一个python模块中,我称之为渲染各种页面。其中一个CGI脚本可能是这样的:

#!/usr/bin/python 

import mysite 

mysite.init() 
mysite.foo_page() 
mysite.close() 

和mysite的,我可能是这样的:

def get_username(): 
    cookie = Cookie.SimpleCookie(os.environ.get("HTTP_COOKIE","")) 
    sessionid = cookie['sessionid'].value 
    ip = os.environ['REMOTE_ADDR'] 
    username = select username from sessions where ip = %foo and session = %bar 
    return(username) 

获取当前用户的用户名。问题在于,这取决于在将os导入到脚本中时(位于模块的顶部)os.envrion将被填充。因为我现在使用mod_python,所以解释器只加载一次该模块,并且只填充一次。我无法读取cookie,因为它具有本地机器的环境变量,而不是远程用户。

我确信有一种解决方法,但我不确定它是什么。我试图mod_python的版本是否使用的是在get_username功能重新导入操作系统,但没有骰子:(。

有什么想法?

回答

0

?mod_python的3.x中包括一个独立的Cookie类来简化这个过程(见here

在早期版本IIRC你可以得到传入饼干请求对象的headers_in元件内部

+0

req.headers_in [“曲奇”] - 是的,这是它。谢谢! – Ryan 2010-11-22 00:14:21

相关问题