ホームページ >バックエンド開発 >PHPの問題 >PHPで画像認証コードを設定する方法

PHPで画像認証コードを設定する方法

藏色散人
藏色散人オリジナル
2021-02-25 10:11:433394ブラウズ

画像検証コードを設定する

php メソッド: 最初にランダムな文字列を生成し、セッションを使用して保存します。次に、単純な画像を作成し、背景色とテキストの色を設定し、干渉線 (インターフェロン) を追加します。次に、生成されたランダムな文字列を含むイメージを作成し、最後に出力バッファをクリアして、検証コード イメージを生成します。

PHPで画像認証コードを設定する方法

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

PHP がイメージ検証コードを生成します(シンプル)

私は php の初心者で、Web ログイン インターフェイスを作成しました。ユーザー名とパスワードに加えて、確認コードがあったほうがクールだと感じたので、画像を書きました.phpを参考書の簡単な紹介文をもとに作成し、簡単な画像認証コードを生成したのですが、なかなか感動的なので共有したいと思います。

1. 画像検証コードの生成手順:

(1) ランダムな文字列を生成し (6 桁のみが必要であると仮定)、検証用のセッションを使用して保存します。 (2) 単純な画像 (80X20) を作成し、背景色、文字色を設定し、干渉線を追加します。interferon;

<? = ($i=;$i<;$i++= rand(,= $] = $str;

(3) 画像の背景色を塗りつぶし、生成されたランダムな文字列 文字列で埋められたイメージ;

    $img_handle = Imagecreate(80, 20);  //图片大小80X20
    $back_color = ImageColorAllocate($img_handle, 255, 255, 255); //背景颜色(白色)
    $txt_color = ImageColorAllocate($img_handle, 0,0, 0);  //文本颜色(黑色)    
    //加入干扰线
    for($i=0;$i<3;$i++)
    {
        $line = ImageColorAllocate($img_handle,rand(0,255),rand(0,255),rand(0,255));
        Imageline($img_handle, rand(0,15), rand(0,15), rand(100,150),rand(10,50), $line);
    }    //加入干扰象素
    for($i=0;$i<200;$i++) 
    {
        $randcolor = ImageColorallocate($img_handle,rand(0,255),rand(0,255),rand(0,255));
        Imagesetpixel($img_handle, rand()%100 , rand()%50 , $randcolor);
    }

(4) 出力バッファをクリアし、検証コード イメージを生成し、イメージを表示します。

    Imagefill($img_handle, 0, 0, $back_color);             //填充图片背景色
    ImageString($img_handle, 28, 10, 0, $str, $txt_color);//水平填充一行字符串

2. イメージ検証コードのリファレンス [推奨学習: 「

PHP ビデオ チュートリアル

」] 検証コード イメージを src="image という形式で追加します。 .php」は、上記の手順で認証コード画像を生成するために使用したphpです。効果を高めるために、認証コードをjsでリフレッシュする機能を追加しました。参考にしてください。

    ob_clean();   // ob_clean()清空输出缓存区    
    header("Content-type: image/png"); //生成验证码图片    
    Imagepng($img_handle);//显示图片?>

3. 検証コードの検証

post.phpでは、最初のステップでユーザーが入力した検証コードと一致する文字列を保存したセッションを使用します。

<form id="form1" name="form1" method="post" action="post.php">
    <input type="text" name="code" />
    <img  src="image.php" id = "refresh" title="刷新验证码" align="absmiddle" onclick="document.getElementById(&#39;refresh&#39;).src=&#39;image.php&#39; ">
    <font color="#ffffff">点击图片刷新</font>
    <input type="submit" value="登录"/>
</form>

4. 効果の表示:

生成された検証コード画像:

ログイン ボックスの効果:

4. 残りの問題についての議論

(1) 検証コード画像を生成して表示する前に、ob_clean() を使用して出力バッファをクリアする必要があるのはなぜですか? ?

私は PHP にあまり詳しくないので、 http://www.php.net/manual/zh/function.ob-clean.php

(2) Fill を参照してください。画像のフォントのサイズを設定する方法はありますか? ?

ImageString 関数は組み込みフォントを使用するため、imagettftext() 関数でのみ置き換えることができます。参照してください: http://us3.php.net/manual/zh/function.imagettftext.php

議論へようこそ、軽くスプレーしてください~

以上がPHPで画像認証コードを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。