描画に関しては、前に述べたように、PHP 描画は真に動的描画です。生成される画像が非常に醜いことは認めますが、主な関心事はデータ処理です。
検証コードはほとんどどこでも見られますが、その生成と描画テクノロジーは切り離せないもので、次のコードのように、文字と数字を含む要素を描画するのは非常に簡単です。
<?php $checkCode=""; for($i=0; $i<=3;$i++){ $checkCode.=dechex(rand(1,15)); } session_start(); $_SESSION['checkCode']=$checkCode; //建立画布 $img_1=imagecreatetruecolor(110, 30); $red=imagecolorallocate($img_1, 255, 0, 0); imagestring($img_1, 5, 0, 0, $checkCode, $red); header("Content-type: image/png"); imagepng($img_1); imagedestroy($img_1);?>上記のコードは、単に検証コードの描画について説明しているだけで、実際には、このコードはセキュリティ処理を実行しません。
以下は比較的複雑な認証コードの処理です:
<?php $checkCode=""; for($i=0; $i<=3;$i++){ $checkCode.=dechex(rand(1,15)); } session_start(); $_SESSION['checkCode']=$checkCode; //建立画布 $img_1=imagecreatetruecolor(70, 40); //必须是先创建画布,在创建颜色。 $red=imagecolorallocate($img_1, rand(0,255), rand(0,255), rand(0,255)); for($k=0; $k<=20; $k++){ imageline($img_1, rand(0,50),rand(0,30),0,0,0,0, imagecolorallocate($img_1, rand(0,255), rand(0,255), rand(0,255))); } imagestring($img_1, rand(3,7), rand(0,40), rand(0,20), $checkCode, $red); header("Content-type: image/png"); imagepng($img_1); imagedestroy($img_1);?>