Login redirect problem

时间:2011-09-13 作者:Sagive

嘿,我有点奇怪的问题。。

我得到了一个表单,可以根据类别和用户级别登录某些单曲。。它工作得很好,但windows(网站所在的服务器)返回的“当前页面”值错误

意思这是:

\'redirect\' => site_url( $_SERVER[\'REQUEST_URI\'] ), 
返回:www.somewebsite。com/sub/sub/?p=100

而不是:www.somewebsite。com/sub/?p=100

This is the actuall form:

          <div class="logincategory">
            <?php wp_login_form( $args );
             $args = array(
            \'echo\' => true,
            \'redirect\' => site_url($_SERVER[\'REQUEST_URI\']),
            \'form_id\' => \'loginform\',
            \'label_username\' => __( \'Username\' ),
            \'label_password\' => __( \'Password\' ),
            \'label_remember\' => __( \'Remember Me\' ),
            \'label_log_in\' => __( \'Log In\' ),
            \'id_username\' => \'user_login\',
            \'id_password\' => \'user_pass\',
            \'id_remember\' => \'rememberme\',
            \'id_submit\' => \'wp-submit\',
            \'remember\' => true,
            \'value_username\' => NULL,
            \'value_remember\' => false ); ?> 
            </div>
So.. 这是服务器的一个bug,我无法直接解决

so i used

$myCurrentUrl=站点\\u url($\\u服务器[\'REQUEST\\u URI\'])$myCurrentUrltwo=str\\u替换(“www.somewebsite.com/sub/sub/”、“www.somewebsite.com/sub/”、“$myCurrentUrl”);

这(在eching时)返回正确的URL,但如何将变量插入此命令

    \'redirect\' => site_url( $_SERVER[\'REQUEST_URI\'] ), 

4 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

根据此trac记录单上差异的变化:http://core.trac.wordpress.org/ticket/17243

我已将重定向调整为以下内容

\'redirect\' => ( is_ssl() ? \'https://\' : \'http://\' ) . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\']
当WP在子文件夹中时,这似乎对它有效。这将是从WP 3.3开始的新默认值,WP\\u login\\u form()在3.3-beta3中适用于我,无需传递任何参数。

所以现在,我将根据版本有条件地提供论点(可能有点过头了)

if ( !version_compare( $wp_version, \'3.3-beta3\', \'>=\' ) ) {
    $args = array ( \'redirect\' => ( is_ssl() ? \'https://\' : \'http://\' ) . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\']
    );
} else {
    $args = array ();
} 

wp_login_form($args);

SO网友:Alex Older

将重定向更改为:

\'redirect\' => \'/\' . $_SERVER[\'REQUEST_URI\'],
这将带您到达正确的位置。

SO网友:chifliiiii

按如下方式插入:

<?php wp_login_form( $args );
             $args = array(
            \'echo\' => true,
            \'redirect\' => $myCurrentUrltwo,
            \'form_id\' => \'loginform\',
            \'label_username\' => __( \'Username\' ),
            \'label_password\' => __( \'Password\' ),
            \'label_remember\' => __( \'Remember Me\' ),
            \'label_log_in\' => __( \'Log In\' ),
            \'id_username\' => \'user_login\',
            \'id_password\' => \'user_pass\',
            \'id_remember\' => \'rememberme\',
            \'id_submit\' => \'wp-submit\',
            \'remember\' => true,
            \'value_username\' => NULL,
            \'value_remember\' => false ); ?> 

SO网友:Sagive

我试过了。。我想服务器在进入浏览器的过程中被重写了。谢谢你的帮助。。伙计们。。我用以下方法解决了这个问题:

<?php
header("Status: 301 Moved Permanently");
header("Location: /sub/index.php?". $_SERVER[\'QUERY_STRING\']);
exit;
?>
因为客户需要快速解决方案,所以我将继续这样做。

结束