校验和失败

时间:2011-02-05 17:41:42

标签: php checksum

我有这个脚本,它会产生以下错误:001校验和失败

这是剧本,我不知道它有什么问题,你能帮助我吗?

<?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 (!@fwrite ($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 (!@fwrite ($fp, parse("",$payscreen))) { 
        die (ERR003); 
        } 
    @fclose ($fp); 
    echo "000 RESET OK"; 
    } 

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

非常感谢!

2 个答案:

答案 0 :(得分:1)

我不认为这是一个错误。实际上

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

这个条件是真的,所以输出没有错误。 所以只需从最初得到它的地方检查GET数据。这不是一个程序错误。

答案 1 :(得分:0)

你需要通过GET调用脚本,至少使用以下参数:

checksum=739b54dc26

所以,如果您的页面是test.php,则在localhost上以这种方式调用它(当然,您可以在请求字符串中添加其他参数):

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

希望有所帮助