我正在尝试应用php来停止直接访问我们的网站确认页面(谢谢页面)。我们的印象是,我们的关联公司可能会通过使用其网址访问我们的确认页面来触发转换像素。这使得它们看起来比我们实际付出了更多的付款。我们只希望人们在完成购买后访问该页面。 我目前正在尝试的是,如果从托管我们表单的URL重定向,他们只能访问该页面。我遇到的问题是每个进行购买的客户的链接始终是唯一的。 然而,它们都是一样的。我不知道怎么做它所以它看起来重定向url以特定的东西开始并且基本上忽略了以下字符,因为它们总是唯一的。我没有经验的PHP和我能找到的代码只能找到完全匹配。
<?php
// This is to check if the request is coming from a specific URL
$ref = $_SERVER['HTTP_REFERER'];
if($ref !== 'http://example.com/page.html') {
die("Hotlinking not permitted");
}
echo "Executing code here";
?>
希望我走在正确的轨道上。 提前感谢您对此事的任何帮助。
答案 0 :(得分:1)
我认为你正在寻找命令substr。
但我推荐一种不同的解决方案,因为很多人使用浏览器插件来禁用Header中的referer,他们会得到一个奇怪的消息。
如果它位于同一台服务器上,请查看sessions。
在不同的服务器上,您可能拥有像MySql数据库这样的共享媒体,您可以在其中验证用户。您还可以使用脚本并在服务器之间发送唯一ID以确认付款。
答案 1 :(得分:0)
您可以使用PHP(您猜对了)parse_url
函数来解析URL。这里解释了:http://php.net/manual/en/function.parse-url.php
基本上:
<?php
// This is to check if the request is coming from a specific URL
$ref = $_SERVER['HTTP_REFERER'];
$urlArray = parse_url($ref);
if($urlArray['host'] != 'example.com' && $urlArray['path'] != 'page.html') {
die("Hotlinking not permitted");
}
echo "Executing code here";
?>
我没有对此进行测试,因此您可能希望查看$urlArray['path']
和$urlArray['host']
是否真正返回我认为它的作用。您可以通过以下方式检查:
var_dump($urlArray['path']);
并相应调整。
答案 2 :(得分:0)
您正在寻找的东西称为regular expressions。你可以match part of a string this way。
但要小心!骗子将能够设置$ _SERVER ['HTTP_REFERER'](例如:打开您的页面,添加Thank You page
的链接并点击它。)
要解决此问题,您应该使用会话来检查用户是否真的进行了购买。
答案 3 :(得分:0)
也许我不理解这个问题的全部问题
您的客户位于payment_page.php
,并且会转发至thank_you.php
但是,如果我直接转到thank_you.php
,您希望将它们转发到index.php
。或者其他的东西。
我会在payment_page.php
上设置一个会话变量,它是真正的客户
然后在thank_you.php
,如果会话变量不存在,则将其重定向到index.php
付款页面
Session_start();
$_SESSION["customer"] = true;
谢谢你.php
Session_start();
If($_SESSION["customer"]){
Echo "thank you";
}Else{
//Redirect
}
答案 4 :(得分:0)
很可能parse_url()php函数可以帮助你:
range(