超出最大执行时间(PHP)

0 php xor

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

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)

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

谢谢

Mat*_*hen 5

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

$j = 'o';
$j++;
Run Code Online (Sandbox Code Playgroud)

导致$ j ='p'(即使'o' + 1是1 ...)

它继续以$ j最终从'z'变为'aa'.任何非数字字符串都是<任意数字,因此内部循环是无限的.

我不太确定剧本的重点是什么.但看起来你正在尝试做一些本土加密或散列,这通常是一个错误.再看看mcrypthash.

编辑:我的初步答案是关于无限循环的原因是错误的.