我得到这个错误,我不知道为什么.
Fatal error: Maximum execution time of 30 seconds exceeded in E:\web\autoopti\thanks.php on line 65
Run Code Online (Sandbox Code Playgroud)
我对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";
?>
Run Code Online (Sandbox Code Playgroud)
错误消息所指的行是:
$outtxt .= $txt{$i} ^ $key{$j};
Run Code Online (Sandbox Code Playgroud)
所以,我猜这个代码行花了很长时间来完成它的工作.有人可以帮我解决这个问题吗?
谢谢
你有一个无限循环. $j从o开始(由于没有o常数而转换为'o' ),而不是0,并且:
$j = 'o';
$j++;
Run Code Online (Sandbox Code Playgroud)
导致$ j ='p'(即使'o' + 1是1 ...)
它继续以$ j最终从'z'变为'aa'.任何非数字字符串都是<任意数字,因此内部循环是无限的.
我不太确定剧本的重点是什么.但看起来你正在尝试做一些本土加密或散列,这通常是一个错误.再看看mcrypt和hash.
编辑:我的初步答案是关于无限循环的原因是错误的.