繁体   English   中英

PHP 解锁图案图形查看器

[英]PHP unlock pattern graphical viewer

我创建了一个解锁模式查看器。 通过给脚本一个解锁模式,例如“1-5-9”,它会为你绘制它。 但是,当解锁图案以数字 7 或 8 开头时,我遇到了一些错误。然后它在数字 6 中放置了一个点。

1-4-7-8-9

在此处输入图像描述

1-5-9

在此处输入图像描述

8-5-2-3 - 这里脚本在数字 6 中画了一个点

在此处输入图像描述

我的剧本

要使脚本正常工作,只需运行以下命令: unlock_pattern_drawer_to_image.php?pattern=8-5-2-3

<?php 
/**
*
* File: edb/unlock_pattern_drawer_to_image.php
* Version 1.1
* Date 13:04 03.07.2020
* Copyright (c) 2019-2020 S. A. Ditlefsen
* License: http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/*- Variables -------------------------------------------------------------------------- */
if(isset($_GET['pattern'])) {
    $pattern = $_GET['pattern'];
    $pattern = strip_tags(stripslashes($pattern));
}
else{
    $pattern = "";
}

$pattern_array = explode("-", $pattern);
$pattern_array_size = sizeof($pattern_array);


/*- Generate image ---------------------------------------------------------------------- */

$img_width = 150;
$img_height = 150;
 
$img = imagecreatetruecolor($img_width, $img_height);

$white = imagecolorallocate($img, 255, 255, 255);
$light_blue = imagecolorallocate($img, 134, 180, 203);
$dark_blue  = imagecolorallocate($img, 9, 39, 88);
$red  = imagecolorallocate($img, 100, 44, 44);
 
imagefill($img, 0, 0, $white);

// Draw 3x3 circles
// Ready cordinates
$cord_counter = 1;
for($x=1;$x<4;$x++){
    for($y=1;$y<4;$y++){
        $from_left = ($x*50)-25;
        $from_top  = ($y*50)-25;
        imageellipse($img, $from_left, $from_top, 20, 20, $light_blue);

        // Cord
        $cord_array_x[$cord_counter] = "$from_left";
        $cord_array_y[$cord_counter] = "$from_top";

        $cord_counter = $cord_counter + 1;
    } // y
} // x

// Draw the array
for($z=0;$z<$pattern_array_size;$z++){
    $pattern_placement = $pattern_array[$z];
    $place_on_image_cord_x = $cord_array_x[$pattern_placement];
    $place_on_image_cord_y = $cord_array_y[$pattern_placement];

    // echo"<p>z=$z. pattern_placement=$pattern_placement</p>\n";

    // First = circle, rest=arrow, last=diamond
    if($z == 0){
        imagefilledellipse($img, $place_on_image_cord_x, $place_on_image_cord_y, 6, 6, $dark_blue);
    }
    elseif($z == $pattern_array_size-1){
        imagefilledrectangle($img, $place_on_image_cord_y-3, $place_on_image_cord_x-3, $place_on_image_cord_y+3, $place_on_image_cord_x+3, $dark_blue);
    }
    else{

    }

    if(isset($coming_from_place_on_image_cord_x)){
        imageline($img, $coming_from_place_on_image_cord_y, $coming_from_place_on_image_cord_x, $place_on_image_cord_y, $place_on_image_cord_x, $dark_blue);    
    }
    

    // Transfer
    $coming_from_pattern_placement = "$pattern_placement";
    $coming_from_place_on_image_cord_x = "$place_on_image_cord_x";
    $coming_from_place_on_image_cord_y = "$place_on_image_cord_y";
} // z


header("Content-type: image/png"); 
imagepng($img);

?>

所以你自己的评论说神秘的点应该是绘图的开始

    // First = circle, rest=arrow, last=diamond
    if($z == 0){
        imagefilledellipse($img, $place_on_image_cord_x, $place_on_image_cord_y, 6, 6, $dark_blue);
    }

所以显然它的 position 被错误地选择了。 不仅开始是七八。 如果您尝试从起点 1 到 9 系统地进行模式化,您会立即看到问题所在,并且您只需更改两个字符即可修复它。

$pattern_array[$z]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM