【问题标题】:Catch contents of PHP session under Apache with Python (mod_wsgi)?使用 Python (mod_wsgi) 在 Apache 下捕获 PHP 会话的内容?
【发布时间】:2009-10-02 13:53:44
【问题描述】:

有没有办法使用mod_wsgi Python 脚本捕获PHP 会话变量$_SESSION['user_id'] 的内容?我正在后台运行一个脚本,它将决定用户是否可以继续查看文档。

我想做这样的事情:

def allow_access(environ, host):
    allow_access = False

    if environ['SCRIPT_NAME'] == 'forbidden_dir':
        if session['user_id'] == '1':
            allow_access = True

    if allow_access:
        return True
    else:
        return False

有可能吗?

【问题讨论】:

  • 你在服务器上同时使用php和python吗?
  • 仅供参考。 SCRIPT_NAME 在 mod_wsgi 访问挂钩中不可用。您需要在 Apache 配置中使用 Location 指令来限制对特定 URL 上下文的访问挂钩。
  • SilentGhost:是的,应用程序是用PHP编写的,因为我是在开始编写应用程序后开始学习Python的。
  • Graham:你能给我指点关于使用 access hook 的教程吗?官方文档没有提供太多信息:)
  • Location 和 Directory 指令是 Apache 指令,因此您需要查看 Apache 文档了解如何使用 Location 指令。顺便说一句,您也不应该在访问挂钩中检查 REQUEST_URI,因为它是未处理的形式,并且如果期望它始终是某个值,除非您要先对其执行所有 HTTP 解码,否则对它的任何检查都可能失败。如果您觉得可用的文档还不够,请使用从 mod_wsgi 网站引用的 Google 组上的官方 mod_wsgi 列表提出问题。

标签: python apache mod-wsgi


【解决方案1】:

如果可能,这并不容易; apache 以特殊格式将会话变量存储在文件中。

您最好的选择可能是编写一个打印所有会话变量的 php 页面。 (将其硬编码为仅服务于 localhost。)从您的 python 脚本中打开该页面的 url。使用会话信息向 url 请求添加标头。然后,在 Python 中加载 php 页面后,解析输入。

【讨论】:

  • 我认为你肯定需要让 Python 调用你的 PHP 页面,因为 $_SESSION 变量实际上是 PHP 的产物,而不是 Apache。
  • 啊哈,这可能会很好。我可以清楚地看到解决方案:)
【解决方案2】:

请不要这样做:

if allow_access:
    return True
else:
    return False

什么时候可以做:return allow_access

【讨论】:

  • 对不起,我不知道我在想什么。 ://
猜你喜欢
  • 1970-01-01
  • 2012-08-02
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
相关资源
最近更新 更多