【问题标题】:Get stored Zend_Auth data from outside the zend project (in an extern non-zend-project)从 zend 项目外部(在外部非 zend 项目中)获取存储的 Zend_Auth 数据
【发布时间】:2011-07-25 11:55:28
【问题描述】:

我正在处理一个 Zend 项目,我需要在其中包含另一个未使用 ZF 的项目。这个其他项目存储在zend项目文件夹中的public目录中。

对于这个其他项目,我需要来自 zend 项目的登录数据(zend auth 用于此)。我认为有两种方法可以做到这一点。

  1. 只需获取存储的登录会话变量。 但是在哪里/什么变量?
  2. 或者尝试在其他项目中使用zend方法获取数据。 但是怎么做呢?无需更改此其他项目的结构。

或者也许(可能)有其他/更好的解决方案?!

希望很清楚。 天呐

【问题讨论】:

    标签: php zend-framework zend-auth


    【解决方案1】:
    $authNamespace = new Zend_Session_Namespace('Zend_Auth');
    $authNamespace->user = "myusername";
    

    来自您的“nonzend”项目的include pathToZendProjectDirectory\Zend\Session.php

    【讨论】:

    • Tnx 用于响应。我已经尝试过这个解决方案,但服务器在 Session.php 中找不到要求。原因(我猜)需要的路径(require_once 'Zend/Session/Abstract.php';)总是来自 Zend 目录。如果我将所有路径更改为相对路径,那么它可能会起作用,但需要做很多工作。 :) 必须有其他解决方案来解决此需求问题。
    • 如果您将 Zend 库目录添加到此其他应用程序的包含路径中,则您只需在 Zend/Session/Namespace.php 中进行 require,ZF 将自行找到所有其余类。更好的是,您可以设置自动加载器。
    • 开始觉得自己很笨。 ^^ 我的“nonzend”项目位于 zendproject 的公共文件夹中的一个文件夹中。所以我的 Session.php 包含路径是'../../library/Zend/Session.php' 还是绝对的?我也试过了,但还是觉得项目无法使用 ZF 来“找到”需求。
    • @Tim Fountain 做到了这一点:仅仅打电话给require_once '/path/to/Zend/Session.php'; 是不够的。您需要将库文件夹(Zend 文件夹的父文件夹)添加到非 ZF 项目中的include_path。然后当您调用require_once Zend/Session.php 时,Zend 文件的所有后续包含/要求都将起作用。
    • Tnx 一切正常。对于那些只想获得会话(没有任何 zf 帮助)的人,请查看 $_SESSION['Zend_Auth'] 数组。
    【解决方案2】:

    登录数据在 SESSION 变量中。但是我们不能直接在项目外部访问会话数据,因为 SESSION 包含一些 Zend 对象。当我们开始会话时,它会出现错误 __PHP_Incomplete_Class has no unserializer。 为了解决这个问题,请在页面的开头添加代码。

    function __autoload($class) { // required files load automatically
      require_once "pathToZendProjectDirectory/PathToZendLibrary/$class.php";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      相关资源
      最近更新 更多