PHP中的参考URL
我使用这段代码在我的表单中存储referer URL以跟踪转换,问题是它存储的URL是表单所在的URL,而不是访问者来自的URL 我试图得到该用户来自的网站的URL,也就是说,如果该用户来自谷歌,我需要的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'];
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”]因为它是一个常见的网络应用攻击向量。同意和欢呼提醒我。我忘记了“消毒、消毒、消毒”的咒语并不总是记住。(让我们面对它,如果我的话,我的工作会轻松多了!)