認証コードの問題

WBOY
リリース: 2016-06-20 12:46:47
オリジナル
1014 人が閲覧しました

session_start();
//ランダムコードの数
$_rnd_code = 4;

//($i=0;$i
) のランダムコードを作成します。 $ _rnd_code;$i++){
$_nmsg .= dechex(mt_rand(0,15))
}

//セッションに保存
$_SESSION['code']= $_nmsg;

//長さと高さを設定します
$_width=75;

//画像を作成します
$_img = imagecreatetruecolor ($_width,$_height);

//White
$_white = imagecolorallocate($_img,255,255,255);

//Fill
imagefill($_img,0, 0,$_white);

//黒枠
$_black = imagecolorallocate($_img,0,0,0);
imagerectangle($_img,0,0,$_width-1) ,$_height-1,$_black);

//ランダムな 6 行
for($i=0;$i $_rnd_color = imagecolorallocate($ _img) ,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imageline($_img,rand(0,$_width),rand(0,$_height),rand(0,$_width), rand (0,$_height),$_rnd_color);

}
//検証コードを出力します

for($i=0;$iimagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code' ] ['$i'],$_black);

}
確認コードを作成しましたが、出力された 4 文字はすべて同じでした。何が起こっているか見てみましょう。










ディスカッションへの返信 (解決策)

imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2 ) ,$_SESSION['code'][ '$i'],$_black);

次のようになります
imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1, 10) ,mt_rand(1,$_height/2),$_SESSION['code'][ $i],$_black);

( ! ) 注意: 未定義の変数: _nmsg (demo.php の行) 10

呼び出しスタック
# 時間メモリ関数の場所
1 0.0006 146856 {main}( ) ..demo.php:0

( ! ) 警告: 不正な文字列オフセット '$i'デモ .php の 42 行目
Call Stack
# Time Memory Function Location
1 0.0006 146856 {main}( ) ..demo.php:0

( ! ) 警告: 違法文字列オフセット '$i' (demo.php の 42 行目)
呼び出しスタック
# 時間メモリ関数の場所
1 0.0006 146856 {main}( ) ..demo.php:0

( ! ) 警告: 42 行目のデモ.php の文字列オフセット '$i' が不正です
呼び出しスタック
# 時間メモリ関数の場所
1 0.0006 146856 {main}( ) ..demo.php:0

( ! ) 警告: 42 行目のデモ.php の文字列オフセット '$i' が不正です
呼び出しスタック
# 時間メモリ関数の場所
1 0.0006 146856 {main}( ) 。 .demo .php:0



これを次のように変更してください

<?phpheader('content-type:image/jpeg');session_start();//随机码的个数$_rnd_code = 4;$_nmsg = '';//创建随机码for($i=0;$i<$_rnd_code;$i++){$_nmsg .= dechex(mt_rand(0,15));}//保存在session里$_SESSION['code']=$_nmsg;//设置长和高$_width=75;$_height=25;//创建一张图像$_img = imagecreatetruecolor($_width,$_height);//白色$_white = imagecolorallocate($_img,255,255,255);//填充imagefill($_img,0,0,$_white);//黑色边框$_black = imagecolorallocate($_img,0,0,0);imagerectangle($_img,0,0,$_width-1,$_height-1,$_black);//随机六个线条for($i=0;$i<6;$i++){$_rnd_color = imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));imageline($_img,rand(0,$_width),rand(0,$_height),rand(0,$_width),rand(0,$_height),$_rnd_color);}//输出验证码for($i=0;$i<strlen($_SESSION['code']);$i++){imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code'][$i],$_black);}imagejpeg($_img);?>
ログイン後にコピー

ありがとうございます、送金されました

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート