注: ここで実装されている確認コードの桁数と必要な文字列は、いくつかの基本コードをコメントにしました。私の注釈があれば、誰でも簡単に理解できるはずです。
基本的なアイデア:
1. mt_rand() を使用して数値をランダムに生成し、取得する文字列を決定し、文字列を結合します (生成された検証コードは少し混雑しすぎていると思います。文字列の真ん中) 、ランダム検証コードを実装します
注: rand() の代わりに mt_rand() を使用することをお勧めします。前者の方が効率的です
2. gd ライブラリを使用して画像を生成し、ランダムに書き込みます画像出力に文字列を追加します。
効果:
更新されるたびに、ランダムな検証が生成されます。後でランダムコードの実装方法を追加し、画像をクリックして再度更新する場合があります
コード:
<?php // 创建画布 $width = 120; // 规定画布的宽高 $height = 45; $image = imagecreatetruecolor($width, $height); // 创建一幅真彩色图像 // 添加一些即将用到的颜色 $white = imagecolorallocate($image, 0xf2, 0xec, 0xe0); $orange = imagecolorallocate($image, 0xff, 0xa5, 0x4c); // 对画布背景填充颜色 imagefill($image, 0, 0, $white); //mt_rand 获取随机数 mt_rand(min, max); function str_rand(){ $str="abcdefghijkmnpqrstuvwxyz0123456789ABCDEFGHIGKLMNPQRSTUVWXYZ"; $rand=""; for($i=0; $i<5; $i++){//获取5个随机的字符串 $rand .= $str[mt_rand(0, strlen($str)-1)]; //如:随机数为30 则:$str[30] } return $rand; } $verifyCode=str_rand(); // 画一串字符串在画布上 imagestring($image, 10, 10, 10, "$verifyCode", $orange); // 通知浏览器输出的是图像(png类型) header('Content-Type: image/png'); // 输出到浏览器 imagepng($image); // 释放图像资源