启动url中的取消订阅链接时删除电子邮件地址中的@

时间:2015-11-22 作者:Hermants

我使用WordPress 4.3.1运行Avada儿童主题。对于取消订阅操作,我编写了一个启动此url的简单脚本:

<A HREF="http://test.domain.nl/[email protected]">unsub</a>
激活此url时,url会正确放置在网站上,但url会重写为:

<A HREF="http://test.domain.nl/unsubscribe?email=testdomain.nl">unsub</a>
所以没有@符号。

我已经停用了所有插件,但@仍然被删除。这在所有类型的浏览器中都会发生。此外,将链接复制到浏览器时,还会删除@。

strong text!但是,当我手动将@放入url并再次启动它时,@符号将保持不变,取消订阅将采取行动。strong text

if(isset($_GET[\'email\']) ) {    

$email = $_GET[\'email\'];

$activeEmail    = $GLOBALS[\'wpdb\']->get_row("SELECT email FROM wp_mm_external_emails WHERE active = 1 AND email = \'".$email."\' ");
$notactiveEmail     = $GLOBALS[\'wpdb\']->get_row("SELECT email FROM wp_mm_external_emails WHERE active = 0 AND email = \'".$email."\' ");
$noEmail            = $GLOBALS[\'wpdb\']->get_row("SELECT email FROM wp_mm_external_emails WHERE email = \'".$email."\'");

if($Active == 2) {
    $GLOBALS[\'wpdb\']->update(\'wp_mm_external_emails\',
                             array(
                                \'active\' => \'0\',
                                \'date_unsubscribe\' => date(\'Y-m-d h:i:s\', time() ) 
                                ),
                                array(\'email\' => $email)
                                );
}
} 
输入[email protected],url粘贴[email protected],重写url结果=testdomain。荷兰。重写不是由htaccess引起的,我已经停用了那里的所有重写。

你们中有人知道我必须在哪里寻找解决方案吗?

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

输出到链接标记时,应始终对url进行编码:

urlencode(\'http://test.domain.nl/[email protected]\')

Rewrite

在进一步检查您的网站之后。很明显,URL是在缺少尾部斜杠的情况下被重写的uitschrijven?email=.

做研究时我偶然发现了这个issue 这和你的一模一样。

解决方案是添加RewriteRule 在您的.htaccess 文件

RewriteCond %{REQUEST_URI} !(/$|\\.) RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]