ホームページ  >  に質問  >  本文

確認コードに数字が 1 つしか表示されないのはなぜですか?

//このレッスンのコードは次のとおりです。何度か確認しましたが、エラーは見つかりませんでしたが、表示された確認コードには数字が 1 つしかありません...なぜこれが起こっているのですか?ガイダンスをお願いします


<?php

//検証コード生成の背景

header('Content-type:image/jpeg');

//背景画像のサイズ

$width=60;

$height=15;

//キャンバスの作成

$ img=imagecreatetruecolor($width, $height);

//色の割り当て

$white=imagecolorallocate($img, 0xff, 0xff, 0xff);

// キャンバスに色を塗りつぶします

imagefill($img, 0, 0, $white);

//検証コードの値を生成します

$chars='1234567890';

$chars_len=strlen($chars);

$code_len=4;//検証コードの長さ

$code=""; //初期値

for ($i=1; $i < $code_len; $i) {

$rand=mt_rand(0,$chars_len-1);//ランダム4 つの数字を取り出します

$code=$rand;//抽出した数字を結合します

#}

#//それをセッションに保存し、検証を使用します

session_start();

$_SESSION['ver_code']=$code;

//文字列の色をランダムに割り当てる

$str_color=imagecolorallocate($img, mt_rand (0,255), mt_rand( 0,255), mt_rand(0,255));

//中央に表示する文字列を計算

//文字列のサイズ

$font=5;

//キャンバス サイズ

$img_w=imagesx($img);

$img_h=imagesy($img);

//フォント サイズ

$font_w=imagefontwidth($font);

#$font_h=imagefontheight($font);

##//文字列サイズ

$code_w=$font_w*$code_len ;

$code_h=$font_h;

$x=($img_w-$code_w)/2;

$y =($img_h-$code_h)/2 ;

//検証コードをキャンバスに出力します

imagestring($img, $font, $x, $y, $code, $ str_color);

/ /直接出力

imagejpeg($img);

imagedestroy($img);

# #?>


丫头丫头2345日前2974

全員に返信(5)返信します

  • 王承毅

    王承毅2018-04-21 12:33:36

    for($i=0;$i<$code_len;$i++){

    $rand=mt_rand(0,$chars_len-1);//ランダムに数字を取り出す

    $code.=$rand; //取り出した4桁を繋ぎ合わせます

    }

    コネクタが抜けています

    返事
    0
  • 丫头

    大丈夫です、ありがとう

    丫头 · 2018-04-22 10:53:02
  • 丫头

    丫头2018-04-21 11:28:11

    <?php

    //検証コードを生成する背景

    header('Content-type:image/jpeg');

    //背景画像のサイズ

    $width=60;

    $height=15 ;

    //キャンバスを作成

    $img=imagecreatetruecolor($width, $height);

    //カラーを割り当てる

    $white=imagecolorallocate($img, 0xff, 0xff, 0xff);

    //キャンバスに塗りつぶし色

    imagefill($img, 0, 0, $white);

    //認証コードの値を生成

    $chars='1234567890';

    $chars_len=strlen($ chars);

    $code_len =4;//認証コードの長さ

    $code="";//初期値

    for ($i=1; $i < $code_len; ++$i) {

    $rand=mt_rand(0 ,$chars_len-1);//ランダムに4つの数字を取り出します

    $code.=$rand;//取り出した数字をつなぎ合わせます

    }

    //それをセッションに保存し、検証を使用

    session_start( );

    $_SESSION['ver_code']=$code;

    //文字列の色をランダムに割り当てる

    $str_color=imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand (0,255));

    //文字列の中央表示を計算

    //文字列のサイズ

    $font=5;

    //キャンバスサイズ

    $img_w=imagesx($img);

    $img_h=imagesy($img );

    //フォントサイズ

    $font_w=imagefontwidth($font);

    $font_h=imagefontheight($font);

    //文字列サイズ

    $code_w=$ font_w*$code_len;

    $code_h=$font_h;

    $x=($img_w-$code_w)/2;

    $y=($img_h-$code_h)/2;

    //検証を出力しますキャンバスへのコード

    imagestring ($img, $font,$x.$y.$code,$str_color);

    //直接出力

    imagejpeg($img);

    imagedestroy($img);


    ?>

    返事
    0
  • 丫头

    丫头2018-04-21 11:21:00

    TIM图片20180421112016.png

    これに変更すると3つの数字になります…

    返事
    1
  • 王承毅

    for ループにエラーがあります。次のようになります。 for($i=0;$i<$code_len;$i++){ $rand=mt_rand(0,$chars_len-1);//ランダムに数値を取り出す $code.=$rand; //取り出した4桁をつなぎ合わせます。 }

    王承毅 · 2018-04-21 12:35:29
  • キャンセル返事