Overview:
在我的网站上,我想做一个客户区。有一个表单,访问者可以在其中输入名称(例如“event\\u xyz”)和密码。只有一些消息灵通的圈子(想要下载一些文件的xyz活动参与者)才会知道访问数据。通过提交,访问者被重定向到pp重定向。php应该设置cookie来访问访问者想要访问的特定站点-$\\u POST[\'name\']等于POST的slug。
我找到了这个脚本来设置cookie,并试图像这样解决我的问题:
global $wp_hasher;
if ( empty( $wp_hasher ) ) {
require_once( ABSPATH . \'wp-includes/class-phpass.php\' );
$wp_hasher = new PasswordHash(8, true);
}
setcookie( \'wp-postpass_\' . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $_POST[\'pw\'] ) ), 0, COOKIEPATH );
wp_safe_redirect( "http://www.domain.com/wordpress/".$_POST[\'name\'] );
exit();
但这向我显示了此文件和wp includes/pluggable中的错误。php已发送邮件头。我也不知道脚本是如何从wp登录中获取的。php?action=postpass,知道我要访问哪个站点。有什么解决方案吗?
最合适的回答,由SO网友:luke 整理而成
最后,我找到了解决方案:
表格。php
<form action="<?php echo bloginfo(\'template_directory\'); ?>/pp-redirect.php" method="post">
Event: <input name="event" type="text" size="25" /><br />
Passwort: <input name="post_password" type="password" size="25" /><br />
<input name="submit" type="submit" value="Los" />
</form>
pp重定向。php
<?php
/** Make sure that the WordPress bootstrap has run before continuing. */
require( dirname(__FILE__) . \'./../../../wp-load.php\');
global $wp_hasher;
if ( empty( $wp_hasher ) ) {
require_once( ABSPATH . \'wp-includes/class-phpass.php\' );
$wp_hasher = new PasswordHash(8, true);
}
if ( get_magic_quotes_gpc() )
$_POST[\'post_password\'] = stripslashes($_POST[\'post_password\']);
// Expires when the browser shuts down
setcookie( \'wp-postpass_\' . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $_POST[\'post_password\'] ) ), 0, COOKIEPATH );
wp_safe_redirect( get_bloginfo(\'url\') . "/" . $_POST[\'event\'] );
?>
欢迎!
SO网友:s_ha_dum
您需要挂接该代码,以便在将任何数据发送到浏览器之前运行该代码。
function remote_login_wpse_104911() {
global $wp_hasher;
if ( empty( $wp_hasher ) ) {
require_once( ABSPATH . \'wp-includes/class-phpass.php\' );
$wp_hasher = new PasswordHash(8, true);
}
setcookie( \'wp-postpass_\' . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $_POST[\'pw\'] ) ), 0, COOKIEPATH );
wp_safe_redirect( "http://www.domain.com/wordpress/".$_POST[\'name\'] );
}
add_action(\'template_include\',\'remote_login_wpse_104911\');
这完全没有经过测试。如果我想,我没有测试它所需的所有信息。:)几乎可以肯定,要在新的环境中工作,您必须对其进行修改。但这就是想法。