PHP中的引荐来源网址

时间:2016-03-02 13:50:20

标签: php

我使用此代码在我的表单中存储引荐来源网址以跟踪转化,我遇到的问题是它存储的网址是表单所在的网址,而不是访问者来自的网址。

我正在尝试获取用户来自的网站的网址,即如果用户来自Google,我需要将网址设为Google。

这是我的代码;

function hiddenreferer_shortcode($tag) {

    if ( ! is_array( $tag ) )
        return '';

    $options = (array) $tag['options'];
    foreach ( $options as $option ) {
        if ( preg_match( '%^name:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
            $name_att = $matches[1];
        }
    }

     $pageURL = 'http';
     if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
     $pageURL .= "://";
     if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
     } else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
     }

     $value_att = $pageURL;
     $html = '<input type="hidden" name="' . $name_att . '" value="'.$value_att.'" />';
     return $html;
}
// REFERER IN CONTACT FORM 7
wpcf7_add_shortcode('hiddenreferer', 'hiddenreferer_shortcode', true);

1 个答案:

答案 0 :(得分:1)

这可能与以下内容重复: Get original URL referer with PHP?

在这种情况下,您正在寻找:

var $_escape_char = '';

编辑:正如Martin在下面的评论中提醒我的那样,所有数据都来自您受控制的环境之外 - 清理它!

如果在PHP中处理字符序列,则转义该字符序列,如果将其存储在数据库中(并使用PDO /预处理语句等),则最好检查它是否为SQL注入尝试。