Maison > Article > développement back-end > Comment résoudre le problème de vérification php tronqué
Solution au code tronqué de vérification php : ouvrez d'abord le code du fichier ; puis utilisez la fonction "mb_convert_encoding($code,"utf-8","gbk");" pour convertir et encoder le chinois.
Recommandé : "Tutoriel vidéo PHP"
Code de vérification chinois php, code chinois tronqué
Code du fichier :
1.cn.php
<?php /********************************* * Code by Gently * 24/07/07 *严正声明:验证码为程序随机生成,“某种巧合”的词语组合属于正常现象 , *某些别有用心的人不要借题发挥! *Power by ZendStudio.Net *(http://www.zendstudio.net/) *********************************/ session_start(); header("Content-type: image/PNG"); $w=180; $h=60; $fontface="fonts/GB2312.ttf"; //字体文件linux支持直接使用windows的字体 $str = "据了解受意大利卡拉拉市文化部部长乔凡娜贝尔纳迪尼邀请云浮市美术家协会主席叶仲桥带着他的四十多幅作品前往卡拉拉市在当地的大理石博物馆举办画展其中欢乐兰寨花开时节两幅作品赠予卡拉拉市博物馆永久收藏全国书法家协会副会长陈永正欣然为画展题字叶仲桥中国画展此次画展不但获得卡拉拉市政府高度重视与支持还引起当地市民及华人华侨的热情关注卡拉拉市的新闻媒体记者专门采访了叶仲桥当地报纸以图文形式大篇幅报道了此次画展的情况"; $code=""; for($i=0;$i<4;$i++){ $Xi=mt_rand(0,strlen($str)/2); if($Xi%2) $Xi+=1; $code.=substr($str,$Xi,2); } $_SESSION["checkcode"] = mb_convert_encoding($code,"utf-8","gbk"); $im=imagecreatetruecolor($w,$h); $bkcolor=imagecolorallocate($im,250,250,250); imagefill($im,0,0,$bkcolor); /***添加干扰***/ for($i=0;$i<15;$i++){ $fontcolor=imagecolorallocate($im,mt_rand(0,255),mt_rand (0,255),mt_rand(0,255)); imagearc($im,mt_rand(-10,$w),mt_rand(-10,$h),mt_rand (30,300),mt_rand(20,200),55,44,$fontcolor); } for($i=0;$i<255;$i++){ $fontcolor=imagecolorallocate($im,mt_rand(0,255),mt_rand (0,255),mt_rand(0,255)); imagesetpixel($im,mt_rand(0,$w),mt_rand(0,$h),$fontcolor); } /***********内容*********/ for($i=0;$i<4;$i++){ $fontcolor=imagecolorallocate($im,mt_rand(0,120),mt_rand (0,120),mt_rand(0,120)); //这样保证随机出来的颜色较深。 $codex=iconv("GB2312","UTF-8",substr($code,$i*2,2)); imagettftext($im,mt_rand(20,24),mt_rand(- 60,60),40*$i+20,mt_rand(30,35),$fontcolor,$fontface,$codex); } imagepng($im); ?>
2. Fichier de formulaire
<?php #header("Content-Type: text/html; charset=utf-8"); session_start(); if(@$_POST['checkcode']) { if($_POST["checkcode"] == $_SESSION["checkcode"]) { echo" 恭喜你!验证码输入正确!"; }else{ echo" 不好意思验证码输入错误!<br>"; echo" 你刚才输入的验证码是:<br>"; echo $_POST["checkcode"]; echo" <br>正确验证码是:<br>"; echo $_SESSION["checkcode"]; } } ?> <form action="" method="post"> <img src="cn.php"/></br> <input type="text" name="checkcode"></br> <input type="submit" value="submit"></br> </form>
Le premier fichier cn.php contient des éléments très critiques. une seule ligne de code a été écrite dans le programme mis en ligne.
C'est-à-dire que
$_SESSION["checkcode"] = mb_convert_encoding($code,"utf-8","gbk");
utilise la fonction mb_convert_encoding pour convertir le chinois, sinon les variables envoyées par la session seront tronquées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!