|
原帖由 bestfly 于 2008-2-24 17:01 发表
POST requests are not permitted from "foreign" domains.
弄不懂了,现在啥米都这个问题,发不了信了
- if (count($_POST) > 0)
- {
- $httphost = preg_replace('#^www\.#i', '', $_SERVER['SERVER_NAME']);
- if ($httphost AND $_SERVER['HTTP_REFERER'])
- {
- $refparts = @parse_url($_SERVER['HTTP_REFERER']);
- $refhost = $refparts['host'] . ((int)$refparts['port'] ? ':' . (int)$refparts['port'] : '');
- if (strpos($refhost, $httphost) === false)
- {
- die('POST requests are not permitted from "foreign" domains.');
- }
- }
- }
复制代码
我加了一点输出验证做了实验. 在 米表地址为 http://www.abc.cn http://abc.cn 的情况下. 咨询一个域名"aaaa.cn"
做如下改动
-
- if (count($_POST) > 0)
- {
- $httphost = preg_replace('#^www\.#i', '', $_SERVER['SERVER_NAME']);
- echo $_SERVER['HTTP_REFERER'].'=='.$httphost.'<br>';
- if ($httphost AND $_SERVER['HTTP_REFERER'])
- {
- $refparts = @parse_url($_SERVER['HTTP_REFERER']);
- $refhost = $refparts['host'] . ((int)$refparts['port'] ? ':' . (int)$refparts['port'] : '');
- echo $refhost.'=='.$httphost.'<br>';
- if (strpos($refhost, $httphost) === false)
- {
- die('POST requests are not permitted from "foreign" domains.');
- }
- }
- }
复制代码
得到如下回执
-
- http://www.abc.cn/contact.php?d=6==abc.cn
- www.abc.cn==abc.cn
复制代码
并且发送成功
这个函数是用来验证发送表单来源地址是否为本站内地址.发生你遇到的情况可能是你用了站外表单提交页面导致. 或者你的浏览器无法正常发送http头中的 'HTTP_REFERER 信息. 如果你不需要这样的功能可以把这段代码删掉.
他在 includes\global.php 97行致109行 如果你没改过的话. |
|