Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的参考URL_Php - Fatal编程技术网

PHP中的参考URL

PHP中的参考URL,php,Php,我使用这段代码在我的表单中存储referer URL以跟踪转换,问题是它存储的URL是表单所在的URL,而不是访问者来自的URL 我试图得到该用户来自的网站的URL,也就是说,如果该用户来自谷歌,我需要的URL是谷歌 这是我的密码 function hiddenreferer_shortcode($tag) { if ( ! is_array( $tag ) ) return ''; $options = (array) $tag['options'];

我使用这段代码在我的表单中存储referer URL以跟踪转换,问题是它存储的URL是表单所在的URL,而不是访问者来自的URL

我试图得到该用户来自的网站的URL,也就是说,如果该用户来自谷歌,我需要的URL是谷歌

这是我的密码

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);
函数hiddenreferer\u短代码($tag){
如果(!is_数组($tag))
返回“”;
$options=(数组)$tag['options'];
foreach($options作为$option){
if(preg_match(“^name:([-0-9a-zA-Z_]+)$”,$option,$matches)){
$name_att=$matches[1];
}
}
$pageURL='http';
如果($_服务器[“HTTPS”]=“on”){$pageURL.=“s”}
$pageURL.=“:/”;
如果($\服务器[“服务器\端口”!=“80”){
$pageURL.=$\u服务器[“服务器名称”]。:“$\u服务器[“服务器端口”]。$\u服务器[“请求URI”];
}否则{
$pageURL.=$\u服务器[“服务器名称”]。$\u服务器[“请求URI”];
}
$value_att=$pageURL;
$html='';
返回$html;
}
//联系方式7中的推荐人
wpcf7_add_shortcode('hiddenreferer','hiddenreferer_shortcode',true);

这可能是以下内容的副本:

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

$_SERVER["HTTP_REFERER"];
编辑:正如Martin在下面的评论中提醒我的那样,所有数据都来自您控制的环境之外——请对其进行消毒


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

您需要使用
$\u SERVER['HTTP\u REFERER']
,尽管它不可靠-请参见并诚实地说,参考URL值(
HTTP\u REFERER
)很容易通过浏览器或人工浏览器进行调整,甚至在一些根本没有给出的浏览器中,这是一种非常不确定的获取数据的方式,你想要这些数据的原因是什么?你能用谷歌分析之类的东西作为一种工具吗(非常好)替换?在提交表单之前,请使用$_SERVER['HTTP_REFERER']添加一个隐藏输入,但请记住-它不可信,用户可以更改它。阅读您在答案和状态中发布的答案链接可能是一个好主意:不要忘了转义$_SERVER[“HTTP_REFERER”]因为它是一个常见的网络应用攻击向量。同意和欢呼提醒我。我忘记了“消毒、消毒、消毒”的咒语并不总是记住。(让我们面对它,如果我的话,我的工作会轻松多了!)