這篇文章主要介紹php驗證亂碼怎么辦,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
php驗證亂碼的解決辦法:首先打開文件代碼;然后使用函數“mb_convert_encoding($code,"utf-8","gbk");”對中文進行轉換編碼即可。
php中文驗證碼,中文亂碼
文件代碼:
1.cn.php
<?php /********************************* * Code by Gently * 24/07/07 *嚴正聲明:驗證碼為程序隨機生成,“某種巧合”的詞語組合屬于正?,F象 , *某些別有用心的人不要借題發揮! *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、表單文件
<?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>
第一個文件cn.php中有很關鍵的一行代碼,網上轉貼的程序都沒有寫入。
就是
$_SESSION["checkcode"] = mb_convert_encoding($code,"utf-8","gbk");
使用函數 mb_convert_encoding對中文進行轉換,不然session傳送過去的變量會是亂碼。
以上是php驗證亂碼怎么辦的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。