ホームページ  >  記事  >  バックエンド開発  >  検証コード機能を実装したPHPサンプル

検証コード機能を実装したPHPサンプル

WBOY
WBOYオリジナル
2016-06-23 13:49:592251ブラウズ

認証コードがウェブサイトの登録、ログイン、その他多くのことに必要な機能であることは誰もが知っています。確認コードがないと、Web サイトのセキュリティが大幅に脅かされます。したがって、認証コードはウェブサイトの開発プロセスにおいて不可欠な機能であり、認証コードの効果はウェブサイトのセキュリティに直接影響します。 (ここのブロガーも認証コード機能について苦情を言っていました。本当に面倒です。毎回認証コードを入力しなければなりません。本当に面倒です。少し前に、12306 も動的認証コードを発行しました。そこで言いたいのですが)寮には誰も正しく入力できません。このクソ機能を廃止する代替機能がすぐにリリースされることを願っています。一日中認証コードに直面するのを好むユーザーは多くないと思います。さて、これ以上ナンセンスはありません。

最初にマインド マップを使用して全体的なアイデアを明確にします:

auth.php の GD ライブラリを使用して描画し、検証コードの背景を配置し、背景にランダムに生成された文字列を追加し、文字を追加します。同時に、文字列はセッションに保存され、どのページでも検証コードを抽出できるようになります。 form.html に簡単なログイン フォームを記述し、検証コード機能を実装したPHPサンプル タグを使用して auth.php に検証コードを読み込みます。次に、データを submit.php ページに送信します。 submit.php では、まず検証コードの検証 (ユーザー名とパスワードについてはここでは説明しません) を実行し、その前にセッションに格納されている文字列が form.html で送信された検証コードの文字列と同じであるかどうかを確認します。大文字と小文字を区別しないようにするには、文字列を常に小文字に変換します。文字列が同じ場合はページがジャンプします。異なる場合は、ログイン ページに戻ります。

1.auth.php

rrree

(1) ヘッダーの前に出力はありません

(2) セッションを使用する前にセッションを開く必要があります

2.form.html

<?phpheader("content-type:text/html;charset=utf-8");//开启sessionsession_start();//准备画布$im=imagecreatetruecolor(50,25);//准备涂料$black=imagecolorallocate($im,0,0,0);$gray=imagecolorallocate($im,200,200,200);//背景填充imagefill($im,0,0,$gray);//文字居中$x=(50-10*4)/2;$y=(25-5)/2+5;//准备文字$arr=array_merge(range(0,9),range('a','z'),range('A','Z'));shuffle($arr);$str=implode(array_slice($arr,0,4));//把$str放入session中,方便所有页面中调用$_SESSION['vstr']=$str;$file="fonts/simsun.ttc";imagettftext($im,10,0,$x,$y,$black,$file,$str);//输出到浏览器上或保存起来header("content-type:image/png");imagepng($im);//关闭画布imagedestory($im);?>
(1) メソッドの送信メソッドは post

(2) テキストボックスと認証コードの連携を図る

3.submit.php

<html> <head>	<meta charset="utf-8">	<title>登录</title>	<style>		table{						border-collapse:collapse;		}		img{			margin-top:5px;		}	</style> </head> <body>	<h2>用户登录页面</h2>	<hr>	<table width="500px" border="1px">		<form action="submit.php" method="post">			<tr>			<td>姓    名:</td>			<td><input type="text" name="username" id=""></td>			</tr>			<tr>			<td>密    码:</td>			<td><input type="password" name="password" id=""></td>			</tr>			<tr>			<td>验证码:</td>			<td><input type="text" name="vcode"> 			<img src="auth.php"></td>			</tr>			<tr>			<td><input type="submit" value="提交"></td>			<td><input type="reset" value="重置"></td>			</tr>		</form>	</table> </body></html>
(1) strto lower() を使用するすべての文字列を小文字に変換すると、検証コードの大文字と小文字を区別する面倒なプロセスが不要になります。

(2) if ステートメントを使用して、2 つの文字列が true に等しいかどうかを判断します。

(3) 直接ジャンプするために、ジャンプする必要があるアドレスを <script>location=''</script> の中に追加します。もちろん、header() を使用することもできますが、header() の前に出力を置くことはできず、制限が多すぎます。 jsを使った方が良いです。






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