2011-02-05 2 views
-1

У меня этот сценарий, и он выдает следующее сообщение об ошибке: 001 Контрольная сумма отказаКонтрольная сумма Failure

Это сценарий, я не знаю, что случилось с ним, не могли бы вы мне помочь?

<?php 

/* 

    Access control for TargetPay Pay per Use 
    (C) TargetMedia 2007 

    Upload this file in the protected directory and make sure 
    that .htaccess support is enabled. 

    MODIFICATIONS IN THIS CODE ARE ALLOWED BUT NOT SUPPORTED 

    Product-ID: 28717 Generated: 16-01-2011 14:57:05 

*/ 

define ("CHECKSUM", "739b54dc26"); 
define ("ERR001", "001 Checksum failure"); 
define ("ERR002", "002 Can't open .htaccess for writing. Check rights."); 
define ("ERR003", "003 I/O Error, cannot write to .htaccess. Disk full?"); 

list($thispage) = explode("?", 
    "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]); 

$payscreen = "http://www.targetpay.nl/send/?id=28717&rtlo=51090". 
    "&pm=".urlencode("inline=1"). 
    "&ref=".urlencode($thispage); 

header ("Content-type: text/plain"); 

if ($_GET["checksum"] != CHECKSUM) { 
    die (ERR001); 
    } 

function ip2hex ($ip) { 
    list ($a,$b,$c,$d) = explode(".", $ip); 
    return str_pad(dechex($a),2,"0",STR_PAD_LEFT). 
      str_pad(dechex($b),2,"0",STR_PAD_LEFT). 
      str_pad(dechex($c),2,"0",STR_PAD_LEFT). 
      str_pad(dechex($d),2,"0",STR_PAD_LEFT); 
    } 

function hex2ip ($hex) { 
    return hexdec(substr($hex,0,2)).".". 
      hexdec(substr($hex,2,2)).".". 
      hexdec(substr($hex,4,2)).".". 
      hexdec(substr($hex,6,2)); 
    } 

function parse ($whitelist, $payscreen) { 
    $here = substr($_SERVER["SCRIPT_FILENAME"], 
     strrpos ($_SERVER["SCRIPT_FILENAME"], "/") + 1); 

    $o = "ErrorDocument 403 $payscreen\n". 
      "<Files .htaccess>\n". 
      "Order allow,deny\n". 
      "Deny from all\n". 
      "</Files>\n". 
      "<Files $here>\n". 
      "Order allow,deny\n". 
      "Allow from all\n". 
      "</Files>\n". 
      "Order deny,allow\n". 
      "Deny from all\n"; 

    if ((!$whitelist) || ($whitelist=="empty")) { 
     return $o; } 

    $iplist = explode(",", $whitelist); 
    foreach ($iplist as $hex) { 
     $ip = hex2ip ($hex); 
     if ($ip) { 
      $o .= "Allow from $ip\n"; 
      } 
     } 
    return $o; 
    } 

if ($_GET["register"]) { 
    $fp = @fopen(".htaccess", "w+"); 
    if (!$fp) { 
     die (ERR002); 
     } 
    if ([email protected] ($fp, parse($_GET["register"],$payscreen))) { 
     die (ERR003); 
     } 
    @fclose ($fp); 
    echo "000 OK"; 
    } 

if ($_GET["reset"]) { 
    @unlink (".htaccess"); 
    $fp = @fopen(".htaccess", "w+"); 
    if (!$fp) { 
     die (ERR002); 
     } 
    if ([email protected] ($fp, parse("",$payscreen))) { 
     die (ERR003); 
     } 
    @fclose ($fp); 
    echo "000 RESET OK"; 
    } 

if ($_GET["dump"]) { 
    echo @implode("",file(".htaccess")); 
    echo "\n-EOF-"; 
    } 
?> 

Большое спасибо!

+3

Это требует базовой отладки. Что содержит '$ _GET [" checksum "]' и почему оно отличается от '739b54dc26'? Это может помочь только вам (или, возможно, поддержка TargetPay). Это не проблема программирования как таковая –

ответ

1

Я не думаю, что это ошибка. фактически

if($_GET["checksum"] != CHECKSUM) { 
    die (ERR001); 
} 

Это условие становится истинным, поэтому выход не является ошибкой. , так что просто проверьте данные GET, откуда бы вы ни получали его изначально. Это не программная ошибка.

+0

Так что мне нужно удалить! ? Попробуем посмотреть. – Andre

+0

DONT УДАЛИТЕ это как есть. Возможно, он был там для какой-то цели. Узнайте это и найдите, что $ GET вы поставляете на свой скрипт. Надеюсь, вы знаете. http: //localhost/test.php? checksum = 739b54dc26, и этот скрипт будет работать нормально. – ayush

0

вам нужно вызвать скрипт через GET с, по крайней мере, этот параметр:

checksum=739b54dc26 

так что если ваша страница test.php, на локальном хосте, вызовите его таким образом (вы можете добавить другие параметры запрос строка конечно):

http://localhost/test.php?checksum=739b54dc26 

Надеется, что это помогает

+0

Ну, проблема в том, что этот скрипт используется для микроплатежей. Поэтому я не знаю, какое значение они возвращают мне. Я использовал ; echo $ _GET ['checksum']; но это не отразило значение контрольной суммы для меня. – Andre

+0

@ Andre Woons означает, что значение контрольной суммы в $ _GET было пустым? – Ass3mbler

+0

Я думаю, если он ничего не отображает, он пуст? – Andre

Смежные вопросы