1

我需要让 PHP 对 Exchange 服务器进行身份验证。一旦能够成功连接到它,我需要在 PHP 中编写 webdav 请求,这样我就可以从交换服务器中提取数据并在 Web 应用程序中使用它。

除了 2003 Exchange 服务器启用了基于表单的身份验证 (FBA) 之外,这会有些简单。启用 FBA 后,我相信我应该按照以下(请参阅链接)博客文章所说的去做。我的问题是我需要帮助将他的 ASP 指令转换为 PHP。

http://blogs.msdn.com/webdav_101/archive/2008/12/12/webdav-fba-authentication-sample-explained.aspx

有人了解他在这篇文章中描述的细节吗?任何见解都会有所帮助。

如果需要,更具体的信息:我对如何配置 POST 请求感到困惑(我的意思是,当您通常将数据发布到表单时,您通常不加载您发布到的页面吗?在他的指示中,他对 POST 说它到 /exchweb/bin/auth/owaauth.dll 。这是如何工作的?)

我也对如何执行列出的第三步感到困惑:3) WebReq.KeepAlive 和 AllowAutoRedirect 应在请求上设置为 True。

最重要的是,我真的可以使用一些帮助来详细说明如何获取发布数据并将其放入 PHP 中的 cookie 中。

提前感谢您提供的任何帮助!

4

3 回答 3

2

我相信最好的方法是通过 curl。( http://ca.php.net/curl )

在链接的页面上,第一个示例是一个很好的类(我用它来自动登录到其他网站)

默认情况下,它应该有 KeepAlive (header) 和 Redirect ( curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);)

您需要确保网络服务可以创建/修改 cookie.txt 然后尝试:

$cc = new cURL();
$cc->post('http://www.yourexchange.com','destination=https%3A%2F%2F' . $strServerName . '%2Fexchange%2F' . $strUserName . '%2F&username=' . $strDomain . '%5C' . $strUserName . '&password=' . $strPassword . '&SubmitCreds=Log+On&forcedownlevel=0&trusted=0'); 

以上是您链接到的页面上信息的快速翻译,如果有特殊字符,您可能需要在变量上使用 urlencode()。一旦上述成功工作,您就可以使用

$page=$cc->get('http://www.yourexchange.com/?whatever=youneed');

$page 将包含来自 get 的字符串结果(它在此请求上发送存储在文本文件中的 cookie)然后您可以使用正则表达式来获取您需要的内容。

这应该让你非常接近你需要的东西。

于 2009-01-13T20:22:37.637 回答
1

看起来文本文件实际上名为“cookies.txt”。您可以使用此名称创建一个空白文本文件并将其上传到同一目录。在您的 ftp 客户端中,您应该能够设置权限,我相信 777 是您需要的权限代码。如果您不能只输入权限代码,请尝试选中所有框以授予所有权限。

回复:最后一个帖子,

没错,脚本运行的地方基本上是一个客户端,而 cookie 文件是一种存储 cookie 以便于重用的简单方法。

于 2009-01-14T02:00:23.290 回答
1

链,

是的,这是指与cookies.txt您的代码文件位于同一文件夹中的名为(注意:带有“s”的“cookies”)的文件curlclass.php

cURL 使用它来存储和发送后续请求的 cookie。您假设运行 PHP 脚本的 Web 服务器充当客户端是正确的;基本上,它通过模拟 POST 到登录表单来登录到 Exchange 服务器,然后保存 cookie 并将其与每个请求一起发送,就像浏览器一样。

创建文件cookies.txt并设置权限,以便运行 Apache 实例的用户可以写入文件。

于 2009-02-05T22:58:08.780 回答