“HTTP_REFERER”
链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是正确真实的。
链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是正确真实的。
解决方案 »
- 谁能不能帮我实现删除浏览过产品的代码啊,要的是删除cookie中一条数据的那种
- 使用mysql_fetch_array 获取mysql date_format返回的值
- 网站防盗链问题
- 请教:如何用PHP做视频
- 如何在php程序中调用google或百度的API把结果显示在自己的网页中
- php如何生成静态页并且能得到相应的CSS样式
- 关于phpMyAdmin控制MYSQL的问题
- 如何把seesion文件保存到当前目录下?
- 关于php序列化的问题
- 微信公众平台开发文本消息嵌入超链接失败,求助
- 我想在本地机localhost/job.html这个页面不断地刷新一个远程的页面http://www.8848.net/job.php, 这个代码怎么写?
- 控件问题
作者:game.19xz 来源:19xz.com
下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER")的:
1.直接用<a href>
2.用Submit或<input type=image>提交的表单(POST or GET)
3.使用Jscript提交的表单(POST or GET) 下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况:
1.从收藏夹链接
2.单击'主页'或者自定义的地址
3.利用Jscript的location.href or location.replace()
4.在浏览器直接输入地址
5.<%Response.Redirect%>
6.<%Response.AddHeader%>或<meta http-equiv=refresh>转向
7.用XML加载地址 显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的,下面我们看一个例子:
ref.asp
<%
response.write "You came from: " & request.servervariables("http_referer")
%> ref.htm
<%
Response.AddHeader "Refresh", "10;URL=ref.asp"
%> <meta http-equiv='refresh' content='10;URL=ref.asp'> <form method=GET action=ref.asp name=getform>
<input type=submit value=' Go there (GET) >> '>
<input type=image style='cursor:hand'>
</form><p>
看看上面的代码会得到什么的结果.
<form method=POST action=ref.asp name=postform>
<input type=submit value=' Go there (POST) >> '>
<input type=image style='cursor:hand'>
</form><p> <a href='ref.asp'>直接链接<p> <a href='#' onclick='window.location.href="ref.asp";return false;'>Javascript location<p> <a href='#'onclick='window.location.replace("ref.asp");return false;'>Javascript replace<p> <a href='#' onclick='document.getform.submit();return false;'>javascript GET<p> <a href='#' onclick='document.postform.submit();return false;'>javascript POST 原著:歪书生
来自:chinaasp.com
------------------------------------------------------------------
虽然是ASP的,但原理是一样的,相信能对楼主有所帮助。
SESSION?聪明的人都知道先打开你的网站,事先写入session,然后再在站外提交如果你在服务端加了严密的判断,防外部提交就没有什么意思
如果你想减少服务端的压力,可以把判断全部用js写,这时候就有加防外部提交的必要了
我想把数据验证,放到客户端来
这样,可以减少服务端的压力。
可是,站外提交就成了问题了。
如果使用SESSION,还不如在服务端验证
象这样行不行
if(strpot($_server['refer']===false)exit;
$Pname = trim($_POST["Pname"]);
$Pprice = trim($_POST["Pprice"]);
$Ptel = trim($_POST["Ptel"]);
$Paddr = trim($_POST["Paddr"]); $sql = "INSERT INTO products(pname,pprice,ptel,paddr) VALUES('$Pname','$Pprice','$Ptel','$Paddr')";
$result = mysql_query($sql,$conn) or die("添加失败!" . mysql_error()); //执行添加命令! if ($result){echo "<br><center>添加成功!</center>";}
if($GLOBALS[$var]) {
global $HTTP_SERVER_VARS;
if($allowget || ($HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST' &&
preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $HTTP_SERVER_VARS['HTTP_REFERER']) == preg_replace("/([^\:]+).*/", "\\1", $HTTP_SERVER_VARS['HTTP_HOST']))) {
return TRUE;
} else {
return FALSE;
}
} else {
return FALSE;
}
}
验证码验证码
这对安全性来说比较重要吧?
另代问一句:SESSION可以伪造吗??
谁说一下防盗连。我用验证码了。
我有个不需要SESSION的验证码
这样能否防止站外提交?
<%
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "<br><br><center><table border=1 cellpadding=20 bordercolor=black bgcolor=#EEEEEE width=450>"
response.write "<tr><td style=font:9pt Verdana>"
response.write "<center>你提交的路径有误,禁止从站点外部提交数据!</center>"
response.write "</td></tr></table></center>"
response.end
end if
%>
哪位大哥,帮忙改一下
改好了。
麻烦附带个应用例子
^_^
马上结贴送分