使用PHP停止直接流量到确认页面



我正在尝试应用PHP,以停止直接访问我们的网站确认页面(谢谢您的页面)。我们的印象是,我们的关联公司可能通过使用其URL访问我们的确认页面来触发转换像素。这使得他们比实际的付款更多。我们只希望人们完成购买时访问页面。我目前正在尝试制作它,以便只有从我们的表单托管的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";
?>

希望我在正确的道路上。预先感谢您对此事的任何帮助。

我认为您正在寻找命令substr。

,但我建议一个不同的解决方案,因为很多人使用浏览器插件来禁用标题中的参考器,他们会收到一条奇怪的消息。

如果会话在同一服务器上,请看一下会话。

在不同的服务器上,您可能会有一个共享媒体,例如MySQL数据库,您可以在其中验证用户。您也可以使用脚本并在服务器之间发送唯一ID来确认付款。

您要寻找的东西称为正则表达式。您可以以这种方式匹配字符串的一部分。

但是要小心!作弊者将能够设置$ _server ['http_referer'](例如:打开页面,向Thank You page添加链接并单击它。)

要解决它,您应该使用会话来检查用户是否真的进行了购买。

您可以使用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']);

并进行相应调整。

也许我不了解此问题。
您在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
}

parse_url()php函数可能会帮助您:

$ref = $_SERVER['HTTP_REFERER'];
$url1 = parse_url($ref);
$url2 = parse_url("http://example.com/page.html");
if ($url1['host'] != $url2['host']){
   //do this
   die("Hotlinking not permitted");
}
echo "Executing code here";

最新更新