以编程方式提交 WordPress 表单密码

mar*_*dge 3 php forms url wordpress post

如何让用户通过 URL 访问受 WordPress 保护的页面,该 URL 将在下面的表单中提交密码?

我希望能够让用户无需输入密码即可访问受密码保护的 WordPress 页面,因此当他们访问该页面时,密码会在页面加载时通过 POST URL 提交。

这并不意味着在任何方面都是安全的;我需要在 URL 和 PHP 中对密码进行硬编码。这只是为了用户的简单性。

编辑 2010 年 4 月 19 日:根据下面的答案,可以直接设置 cookie 以允许用户不必输入密码。让搜索机器人进入的最好方法是检测用户代理并重定向,因为机器人不会处理 cookie。

这是形式(这是WordPress核心代码):

<form action="http://mydomain.com/wp-pass.php" method="post">

Password: <input name="post_password" type="password" size="20" />

<input type="submit" name="Submit" value="Submit" /></form>
Run Code Online (Sandbox Code Playgroud)

这是 wp-pass.php (这是 WordPress 核心代码):

<?php
require( dirname(__FILE__) . '/wp-load.php');

if ( get_magic_quotes_gpc() )
    $_POST['post_password'] = stripslashes($_POST['post_password']);

setcookie('wp-postpass_' . COOKIEHASH, $_POST['post_password'], time() + 864000, COOKIEPATH);

wp_safe_redirect(wp_get_referer());
?>
Run Code Online (Sandbox Code Playgroud)

Ard*_* Xi 5

我不会继续附加之前的答案,而是尝试在这里进一步解释这个问题。

WordPress 密码的工作方式是:

  1. 原始页面有一个表单,该表单被发送到wp-pass.php
  2. wp-pass.php获取提供的密码,将其放入 cookie 中并将用户重定向回原始页面。
  3. 原始页面会检查cookie,如果密码正确,则会显示该页面。

这里的问题是搜索引擎不接受cookie。所以,你有两个选择:

  1. 将 WordPress 用于密码内容的代码更改为也接受$_GET变量的代码。
  2. 使用cURL使用标头发送cookie,有单独的页面搜索引擎可以使用。

如果您愿意,我很乐意扩展后一个答案,但我确实想知道;如果您要让搜索引擎访问密码内容,那么任何人都可以访问。为什么不直接删除密码呢?