Dieser Artikel stellt hauptsächlich die Methode zur Implementierung von arithmetischem Verifizierungscode in PHP vor. Jetzt kann ich ihn mit Ihnen teilen.
Ich habe kürzlich gelernt Ich habe auch die Implementierung von Bildfunktionen und Verifizierungscodes geübt. Es war das erste Mal, dass ich eine kleine Übung selbstständig gemacht habe Eigene Einschränkungen. Deshalb habe ich es speziell geschrieben, in der Hoffnung, dass die Experten aus allen Lebensbereichen mir etwas Anleitung geben und meinen Horizont weiter erweitern können
Der PHP-Code lautet wie folgt: Implementieren Sie die Funktion des Bestätigungscodes
<?php/** * @param int $width 宽度,默认为120 * @param int $height 高度,默认为50 * @param int $fontSize 字体的大小 * @return 图片资源 */function arithmeticCode($width=120,$height=50,$fontSize=20){ //开启session session_start(); //创建画布 $img = imagecreatetruecolor($width,$height); //分配颜色 $color = imagecolorallocate($img,255,255,255); //填充颜色 imagefill($img,0,0,$color); //干扰点 for ($i = 0;$i < 500;$i++){ $pixColor = imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(100,200)); imagesetpixel($img,mt_rand(0,$width),mt_rand(0,$height),$pixColor); } //干扰线 for ($i = 0;$i < 4;$i++){ $lineColor = imagecolorallocate($img,mt_rand(0,120),mt_rand(0,120),mt_rand(0,120)); imageline($img,mt_rand(0,$width),mt_rand(0,$height),mt_rand(0,$width),mt_rand(0,$height),$lineColor); } //定义一个数组存放运算符号 $arr = ['+','-','*']; //计算数组的长度 $len = count($arr); //定义一个1到20的数组 $num = range(1,20); $numLen = count($num); //定义一个空数组来存放随机取得的验证码 $code = []; for ($i = 0;$i < $len;$i++) { if ($i == 1) { $code[] = $arr[mt_rand(0,$len-1)]; }else { $code[] = $num[mt_rand(0,$numLen-1)]; } } $str = implode($code);//将数组转为字符串 $textColor = imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(100,200)); $fontAngle = 0; $x = ($width - $fontSize*3)/2; $y = ($height - $fontSize) / 2 + $fontSize; imagettftext($img,$fontSize,$fontAngle,$x,$y,$textColor,"./img/msyh.ttc",$str); $res = getRes($code); //将函数存放在session中 $_SESSION['res'] = $res; //输出图片 header("content-type:image/png"); imagepng($img); }/** * @param $arr 一个包含运算符号的数组 * @return 返回一个运算结果 */function getRes($arr) { $sum = 0; //判断数组元素下标为1的运算符号是什么 switch ($arr[1]){ case '+': $sum = $arr[0] + $arr[2]; break; case '-': $sum = $arr[0] - $arr[2]; break; case '*': $sum = $arr[0] * $arr[2]; break; } return $sum; }//调用函数arithmeticCode(100,40,18);
Teil des HTML-Codes
<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> img { position: relative; top: 20px; } </style></head><body><form action="test.php"> 验证码 <input type="text" name="code"> <img src="./demo5.php" alt="点击刷新"> <br> <button>提交</button></form></body></html><script> //实现点击图片刷新验证码的功能 var img = document.querySelector("img"); img.onclick = function () { this.src = this.src+"?m="+Math.random(); }</script>
Test.php test.php
<?phpsession_start();$res = $_SESSION['res'];$value = $_GET['code'];if ($res == $value) { echo "test success"; }else{ echo "test fail"; }
Das Obige ist die Zusammensetzung meines Codes
Ich hoffe, dass jeder bereit ist, Ihnen einige Ratschläge zu geben [freuen Sie sich darauf]
Das Obige ist der gesamte Inhalt dieses Artikels Ich hoffe, es wird für das Lernen aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!
Verwandte Empfehlungen:
Einführung in die Verwendung des MongoDB-Treibers in PHP7
Zuweisen von Werten in einem Array zu einer Reihe von Variablen in der PHP-Methode
Das obige ist der detaillierte Inhalt vonSo implementieren Sie arithmetischen Verifizierungscode in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!