0

我得到这个错误,我不知道为什么。

Fatal error: Maximum execution time of 30 seconds exceeded in E:\web\autoopti\thanks.php on line 65

我为 PHP 脚本编写的代码是:

<?php
    $key = 129;

    $email = $_REQUEST["payer_email"];
    $first = $_REQUEST["first_name"];
    $last = $_REQUEST["last_name"];
    $acode = $_REQUEST["hash"];

    $txt = $email . "|" . $email . "|" . $first . "|" . $last . "|" . $acode;
    $outtxt = '';

    for($i=0;$i<strlen($txt);)
    {
        for($j=o;$j<strlen($key);$j++,$i++)
        {
            $outtxt .= $txt{$i} ^ $key{$j};
        }
    }

    echo "thanks";
?>

错误消息所指的行是:

$outtxt .= $txt{$i} ^ $key{$j};

所以,我猜这行代码完成它的工作时间太长了。有人可以帮我解决这个问题吗?

谢谢

4

5 回答 5

5

你有一个无限循环。 $j从 o 开始(转换为 'o',因为没有o常数),而不是 0,并且:

$j = 'o';
$j++;

结果 $j = 'p' (即使'o' + 1是 1...)

它继续 $j 最终从“z”变为“aa”。任何非数字字符串都是<任何数字,因此内循环是无限的。

我不太确定脚本的意义是什么。但看起来您正在尝试进行一些本土加密或散列,这通常是一个错误。请改用mcrypthash 。

编辑:关于无限循环的原因,我最初的回答是错误的。

于 2010-07-31T04:46:38.060 回答
1

看看这个肯定会奏效

于 2010-07-31T06:56:14.153 回答
0
<?php
$key = 129;

$email = $_REQUEST["payer_email"];
$first = $_REQUEST["first_name"];
$last = $_REQUEST["last_name"];
$acode = $_REQUEST["hash"];

$txt = $email . "|" . $email . "|" . $first . "|" . $last . "|" . $acode;
$outtxt = '';

for($i=0;$i<strlen($txt);)
{
    for($j=0;$j<strlen($key);$j++,$i++)
    {
        $outtxt .=  ( $txt{ $i } ^ $key{$j} ) ;
    }
}

echo "thanks";
?>

请查看这是否是已修复的错误或评论我

于 2010-07-31T06:08:45.687 回答
-1

如果set_time_limit(0)您想继续执行您的代码,该代码将忽略 php.ini 中的任何超时设置,请使用此选项。

于 2010-07-31T05:02:38.840 回答
-1

这里没什么好奇怪的。您的代码运行时间过长。您可以在 PHP 配置文件中增加超时限制。但是,我建议您使用命令行 PHP 解释器来查看您的程序在这 30 秒内花费的时间,然后找出如何优化它。

于 2010-07-31T04:50:21.193 回答