我得到这个错误,我不知道为什么。
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};
所以,我猜这个代码行花了很长时间来完成它的工作。有人可以帮我解决这个问题吗?
谢谢
答案 0 :(得分:5)
你有一个无限循环。 $j
从o开始(由于没有o
常量而转换为'o',而不是0),并且:
$j = 'o';
$j++;
导致$ j ='p'(即使'o' + 1
为1 ...)
继续$ j最终从'z'变为'aa'。任何非数字字符串都是<
任意数字,因此内部循环是无限的。
我不确定剧本的重点是什么。但看起来你正在尝试做一些本土加密或散列,这通常是一个错误。请改为mcrypt和hash。
编辑:我最初的答案是关于无限循环的原因是错误的。
答案 1 :(得分:1)
检查一下它肯定会起作用
答案 2 :(得分: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";
?>
请查看这是错误修正或评论我
答案 3 :(得分:-1)
这里没什么好奇的。您的代码运行时间太长。您可以增加PHP配置文件中的超时限制。但是我建议您使用命令行PHP解释器来查看程序在30秒内所占用的位置,然后找出如何优化它。
答案 4 :(得分:-1)
如果您想继续使用代码,请忽略php.ini中的任何超时设置,请使用set_time_limit(0)
。