如何使用WP Nonce URL和WP Redirect或PHP标头去掉&符号

时间:2016-03-29 11:20:42

标签: php wordpress redirect

我的代码工作正常:

$registrado = "no";

$redirect_url = site_url( "/pedido-nao-recebido/?mpms2pagarme=retorno&codigo=nao200&mensagem=oui&registrado=$registrado");      

wp_redirect($redirect_url);

exit;

有了这个,我被重定向到

http://s16138.p360.sites.pressdns.com/pedido-nao-recebido/?mpms2pagarme=retorno&codigo=nao200&mensagem=oui&registrado=no.

正是我需要的。

然后我决定采用wp_nonce_url安全措施。

$registrado = "no";

$redirect_url = site_url( "/pedido-nao-recebido/?mpms2pagarme=retorno&codigo=nao200&mensagem=oui&registrado=$registrado");      

//WP Nonce (security measure)
$nonce_redirect_url = wp_nonce_url( $redirect_url, 'pedido-nao-recebido', 'mpms2nonce' );

wp_redirect($nonce_redirect_url);

exit;

现在我收到了这个网址:

http://s16138.p360.sites.pressdns.com/pedido-nao-recebido/?mpms2pagarme=retorno&codigo=nao200&mensagem=oui&registrado=no&mpms2nonce=aeb5ba40d2.

由于这些amp;,我的代码已损坏,浏览器为我提供了The s16138.p360.sites.pressdns.com page isn’t working。重定向页面上有一个未运行的脚本。它是这样的:

//If it is not a subscription request, abort...  
if ( !isset( $_GET['mpms2pagarme'] ) || 'retorno' != $_GET['mpms2pagarme'] || !isset( $_GET['codigo'] ) || !isset( $_GET['mensagem'] )  ) {  
    return;  
}

//Checking WP Nonce
check_admin_referer( 'pedido-nao-recebido', 'mpms2nonce' );

(...)

我尝试使用php header函数而不是wp_redirect,但同样的情况发生了(&符号)。我也尝试了esc_urlesc_url_rawurlencode ......但没有成功。

奇怪的是...... wp_redirect(或header)仅适用于没有wp_nonce_url的我。我应该摆脱后者吗?还有其他解决办法吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用html_entity_decode()&转换回&

答案 1 :(得分:0)

字符串在路上的某处被编码

您可以使用 urldecode

对其进行解码
wp_redirect(urldecode($nonce_redirect_url));