ordPress 与 ASP.NET 整合PHP 的一点优势就在于拥有大量优秀的开源 CMS 系统(WordPress、Joomla 等等)、表单应用程序(phpBB 及其他)和 wiki(Mediawiki 及其他),其中很多都通过了 Phalanger 的测试。这些应用通常会比 .NET 平台下类似的程序包提供更多特性。 开发基于 ASP.NET 网页的公司可能会面临以下情况: 它需要向现存的 ASP.NET 解决方案中添加 wiki、论坛或者博客,但是只有在 PHP 中存在合适的应用程序(例如,免费并且带有所有必要特性)。 应用程序可能会在子域下运行,但是它应该共享用户数据库。 此外,一旦用户登录到主页,那么他就应该同时登录到 wiki、论坛和博客上。ASP.NET 应用程序可以使用 ASP.NET 的成员管理(ASP.NET Membership),它还用来管理用户、角色和功能的标准机制。 有了 Phalanger,我们就可以修改开源的 PHP 项目,从而使用同样的机制。 下一部分会演示使用 WordPress 如何做到这一点。为 WordPress 实现 ASP.NET 成员管理插件如果你对代码不感兴趣,那么就可以略过这个部分,直接查看第三种情况。 但是,我们不会查看技术细节,只是对让 PHP 调用 .NET 程序库的 PHP 扩展做简要的概述。我们可以使用插件轻松地自定义在 WordPress 管理用户的方式。 管理用户的插件需要实现一个 PHP 类,其中有各种成员函数。 其中最值得期待的功能就是身份验证,它会获得用户名和密码。 它应该填充当前用户的信息,或者,当用户不存在的时候,就会把名称设置为 NULL。为了使用 .NET 中的 ASP.NET 成员管理来实现身份验证功能,我们可以使用 System.Web.Security 命名空间中的功能。 静态方法 Membership.ValidateUser 会检查密码是否正确,而 Membership.GetUser 会返回用户的基本信息。 使用 Phalanger,我们可以访问 .NET 对象,就像它是标准的 PHP 对象一样,这样实现验证机制就很简单了。 代码 1 展示了简化后的代码。代码 1 在 WordPress 插件中实现身份验证功能的函数import namespace System:::Web:::Security; function authenticate (&$username,$password) {global $errors; // Test whether the password is correct if (Membership::ValidateUser ($username,$password)) { // Get information about the user and fill $userarray $user = Membership::GetUser ($username); $userarray[''user_login''] = $user->UserName; $userarray[''user_email''] = $user->Email; $userarray[''display_name''] = $username; $userarray[''user_pass''] = $password; // Loading of roles & profiles omitted for simplicity // Update or create the user information in WordPress if ($id = username_exists ($username)) { $userarray[''ID''] = $id; wp_update_user ($userarray); } else wp_insert_user ($userarray); } else { // Report error if the login failed $errors->add (''user-rejected'', ''Log-in failed!''); $username = NULL;}} 代码首先声明了重要的命名空间。 这是一个非标准的 Phalanger 扩展,它从引用的程序库的 .N