Heim  >  Fragen und Antworten  >  Hauptteil

Warum zeigt mein Bestätigungscode nur eine Zahl an?

//Mein Code für diese Lektion ist so: Ich habe ihn mehrmals überprüft und keine Fehler festgestellt, aber der angezeigte Bestätigungscode enthält nur eine Nummer ... Warum passiert das?

<?php

//Der Hintergrund zum Generieren des Bestätigungscodes

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

//Die Größe des Hintergrundbilds

$width=60;

$height=15 ;

//Leinwand erstellen

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

//Farbe zuweisen

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

//Füllen Sie die Leinwand mit Farbe

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

//Generieren Sie den Wert des Bestätigungscodes

$chars='1234567890';

$chars_len=strlen( $chars);

$code_len =4;//Verifizierungscodelänge

$code="";//Anfangswert

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

$rand=mt_rand(0 ,$chars_len-1);//Nimm zufällig vier Zahlen heraus

$code=$rand;//Verbinde die genommenen Zahlen miteinander

}

//Speichere sie in der Sitzung und Verifizierung verwenden

session_start() ;

$_SESSION['ver_code']=$code;

//Zufällige Zeichenfolgenfarbe zuweisen

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

//Berechnen Sie die mittlere Anzeige der Zeichenfolge

//Die Größe der Zeichenfolge

$font=5;

//Leinwandgröße

$img_w=imagesx($img);

$img_h=imagesy($img) ;

//Schriftgröße

$font_w=imagefontwidth($font);

$font_h=imagefontheight($font);

//Stringgröße

$code_w=$ font_w*$code_len;

$ code_h=$font_h;

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

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

//Überprüfung ausgeben Code auf die Leinwand übertragen

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

//Direkte Ausgabe

imagejpeg($img);

imagedestroy($img);

?>

丫头丫头2345 Tage vor2976

Antworte allen(5)Ich werde antworten

  • 王承毅

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

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

    $rand=mt_rand(0,$chars_len-1);//随机取出数字

    $code.=$rand; //将取出的四位数字拼接在一起

    }

    你少了个连接符

    Antwort
    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);//随机取出四个数字

    $code.=$rand;//将取出的数字连接在一起

    }

    //存入session中,用验证

    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);


    ?>


    Antwort
    0
  • 丫头

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

    TIM图片20180421112016.png

    改成这样之后就会变成3个数字了...

    Antwort
    1
  • 王承毅

    你for循环出错了,应该是这样的。 for($i=0;$i<$code_len;$i++){ $rand=mt_rand(0,$chars_len-1);//随机取出数字 $code.=$rand; //将取出的四位数字拼接在一起 }

    王承毅 · 2018-04-21 12:35:29
  • StornierenAntwort