PHP脚本永远加载而不显示输出

时间:2017-09-29 17:10:26

标签: php

我试图找出问题现在整天在哪里,我写了一些PHP代码来嵌入给定图像中的文本。我使用其ASCII值作为RGB值,在每个像素中放置每3个字母。我的问题是,当我启动脚本时,它会一直保持加载状态。我想我的代码有些问题,但我无法弄清楚,调试器也没有帮助。 这是我的代码:

<?php
$img = imagecreatefromjpeg ("https://dataencrypt.xyz/testimage.jpg"); 
$data = "abcdefghi"; //example
if($q=strlen($data)%3!=0){
    $q==1?$data.="--":$data.="-";
}
if($img!=false){
    for($i = 0;$i<(strlen($data)-3);$i+3){
        $part = substr ($data , $i,3  );
        $color = getEncryptedColor($img,$part);
        imagesetpixel($img, $i,$i, $color);
    }
}
 $decrypted = decryptDataFromImage($img,0,0); // get the first 3 letters.
 echo "".$decrypted;
imagedestroy($img);

function getEncryptedColor($img,$string){
    return imagecolorallocate($img, ord($string[0]), ord($string[1]), ord($string[2]));
}
function printImageValues($image,$num){
    for($x = 0;$x<$num;$x++){
        echo "\n".imagecolorat($image, $x, $x);
    }
    echo "--END--";
}
function decryptDataFromImage($img,$x,$y){
    $currpixel = imagecolorat($img, $x, $y);
    $colors = imagecolorsforindex($img, $currpixel);
    $str = "".chr($colors["red"]).chr($colors["green"]).chr($colors["blue"]);
    return $str;
}
?>

1 个答案:

答案 0 :(得分:0)

您的for循环会永远运行,因为您编写了$i+3,而不是将该值分配给$i,这将是$i = $i + 3

所以改变这一部分:

for($i = 0;$i<(strlen($data)-3);$i+3)

for($i = 0;$i<(strlen($data)-3);$i+=3)