Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie Bildverarbeitungstechnologie, um Bestätigungscodes zu generieren (Tutorial zur typischen Anwendung von PHP-Grafikbildern 3)

Verwenden Sie Bildverarbeitungstechnologie, um Bestätigungscodes zu generieren (Tutorial zur typischen Anwendung von PHP-Grafikbildern 3)

黄舟
黄舟Original
2017-04-24 17:25:012126Durchsuche

Verwendung von Bildverarbeitungstechnologie zum Generieren von Bestätigungscodes (Tutorial zur typischen Anwendung von PHP-Grafiken und -Bildern 3)

Es gibt viele Möglichkeiten, die Bestätigungscodefunktion zu implementieren , einschließlich digitaler Bestätigungscodes, grafischer Bestätigungscodes und Textbestätigungscodes usw. In diesem Abschnitt wird ein mithilfe der Bildverarbeitungstechnologie generierter Verifizierungscode vorgestellt.

Im vorherigen Artikel „So verwenden Sie die GD2-Funktion zum Hinzufügen von Text zu Bildern (Tutorial zur typischen Anwendung von PHP-Grafiken und -Bildern 2)“ haben wir die Einführung zum Hinzufügen von Text zu Bildern vorgestellt , dann stellen wir Ihnen heute weiterhin vor, wie Sie mithilfe der Bildtechnologie Verifizierungscodes generieren können.

Im Folgenden wird die Verwendung der Bildverarbeitungstechnologie zum Generieren von Bestätigungscodes vorgestellt. Der spezifische Code lautet wie folgt:

<?php
session_start();
// 告诉浏览器,这个文件,是一个png图片
header(&#39;Content-type: image/png&#39;);
// 创建图像
$image = imagecreatetruecolor(50,20);
// 填充颜色 - ps里的点击画布填色
imagefill($image,0,0,imagecolorallocate($image,149,188,205));
//加入干扰象素 , 循环100次
for ($i = 0; $i < 100; $i++) {
    $randcolor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
//画像素点函数
    imagesetpixel($image, rand(1, 55), rand(1,18), $randcolor);
}
// 设置颜色
$red = imagecolorallocate($image, 255,255,255);
$code = "";
for( $i=1; $i <=4; $i++){
    $rand_code = rand(1,9); // 生成1-9的随机数
    imagestring($image, 5, 5+($i-1)*10, 2, $rand_code,$red); // 将文字写入图片
    $code .= $rand_code;
}
// 生成图片
imagepng($image);
// 销毁图片, 释放内存
imagedestroy($image);
?>

Das Ausgabeergebnis ist:

Verwenden Sie Bildverarbeitungstechnologie, um Bestätigungscodes zu generieren (Tutorial zur typischen Anwendung von PHP-Grafikbildern 3)

Das Obige ist das einfachste Beispiel für die Generierung eines Verifizierungscodes. Nachfolgend stellen wir ein Beispiel vor, das in der täglichen Entwicklung ernsthaft verwendet wird. Die spezifischen Schritte sind wie folgt:

(1) Erstellen Sie eine checks.php-Datei, verwenden Sie die GD2-Funktion, um einen 4-stelligen Bestätigungscode in der Datei zu erstellen, und speichern Sie den generierten Bestätigungscode in der Sitzungsvariablen. Der Code lautet wie folgt:

<?php
session_start();          //初始化Session变量
header("content-type:image/png");        //设置创建图像的格式
$image_width=70;                          //设置图像宽度
$image_height=18;                          //设置图像高度
srand(microtime()*100000);                //设置随机数的种子
for($i=0;$i<4;$i++){                      //循环输出一个4位的随机数
    $new_number.=dechex(rand(0,15));
}
$_SESSION[check_checks]=$new_number;       //将获取的随机数验
证码写入到Session变量中
$num_image=imagecreate($image_width,$image_height);    //创建一个画布
imagecolorallocate($num_image,255,255,255);         //设置画布的颜色
for($i=0;$i<strlen($_SESSION[check_checks]);$i++){     //循环读取
    Session变量中的验证码
$font=mt_rand(3,5);                                //设置随机的字体
$x=mt_rand(1,8)+$image_width*$i/4;               //设置随机字符所在位置的X坐标
$y=mt_rand(1,$image_height/4);                   //设置随机字符所在位置的Y坐标
$color=imagecolorallocate($num_image,mt_rand(0,100),
    mt_rand(0,150),mt_rand(0,200)); //设置字符的颜色
imagestring($num_image,$font,$x,$y,$_SESSION
[check_checks][$i],$color);   //水平输出字符
}
imagepng($num_image);              //生成PNG格式的图像
imagedestroy($num_image);          //释放图像资源
?>

Im obigen Code werden bei der Ausgabe des Bestätigungscodes die Position, Farbe und Schriftart jedes Zeichens durch Zufallszahlen ermittelt, die im Browser generiert werden können Ein Bestätigungscode kann auch verhindern, dass böswillige Benutzer das Website-System angreifen.

(2) Erstellen Sie ein Benutzeranmeldeformular, rufen Sie die Datei checks.php auf, geben Sie den Inhalt des Bildes auf der Formularseite aus, senden Sie die Formularinformationen und verwenden Sie if-Bedingungsanweisungen, um zu bestimmen, ob die eingegebene Überprüfung vorliegt Code ist korrekt. Wenn der vom Benutzer eingegebene Bestätigungscode mit dem zufällig generierten Bestätigungscode übereinstimmt, wird die Meldung „Benutzeranmeldung erfolgreich!“ angezeigt. Der Code lautet wie folgt:

<?php
session_start();           //初始化Session
if($_POST["Submit"]!=""){
    $checks=$_POST["checks"];        //获取验证码文本框的值
    if($checks==""){           //如果验证码的值为空,则弹出提示信息
        echo "<script> alert(&#39;验证码不能为空&#39;);window.location.
href=&#39;index.php&#39;;</script>";
    }
//如果用户输入验证码的值与随机生成的验证码的值相等,则弹出登录成功提示
    if($checks==$_SESSION[check_checks]){
        echo "<script> alert(&#39;用户登录成功!&#39;);window.location.
href=&#39;index.php&#39;;</script>";
    }else{            //否则弹出验证码不正确的提示信息
        echo "<script> alert(&#39;您输入的验证码不正确!&#39;);window.
location.href=&#39;index.php&#39;;</script>";
    }
}
?>

Sie können es selbst ausprobieren Computer, aber ich werde es hier nicht veröffentlichen. Dies ist die Einführung in die Verwendung der Bildverarbeitungstechnologie zum Generieren von Verifizierungscodes. Im Folgenden stellen wir Ihnen die Verwendung der GD2-Funktion zum Zeichnen geometrischer Figuren vor Tutorial zu PHP-Grafiken und -Bildern 4)" !

Das obige ist der detaillierte Inhalt vonVerwenden Sie Bildverarbeitungstechnologie, um Bestätigungscodes zu generieren (Tutorial zur typischen Anwendung von PHP-Grafikbildern 3). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn