>백엔드 개발 >PHP 문제 >PHP에서 로그인 인증 코드를 구현하는 방법

PHP에서 로그인 인증 코드를 구현하는 방법

藏色散人
藏色散人원래의
2020-09-28 09:09:024345검색

PHP에서 로그인 확인 코드를 구현하는 방법: 먼저 4~6자리의 무작위 확인 코드를 생성한 다음 생성된 각 문자를 세션이나 데이터베이스에 저장하고 확인 코드를 사용자의 휴대폰으로 전송합니다. 입력된 인증코드와 비교하여 확인할 수 있습니다.

PHP에서 로그인 인증 코드를 구현하는 방법

추천: "PHP 비디오 튜토리얼"

PHP는 간단한 인증 코드 기능 메커니즘을 구현합니다

웹사이트의 보안은 현재 개발자가 가장 일반적으로 사용하는 보안 문제로 무시할 수 없습니다. 개선 웹 사이트 보안 방법은 인증 코드 메커니즘을 사용하는 것입니다. 일부는 여러 숫자와 문자로 구성된 인증 코드만 사용하고, 일부는 확인을 위해 휴대폰을 사용하여 문자 메시지를 보내고, 일부는 이메일을 사용하여 확인을 위해 이메일을 보냅니다. 코드 메커니즘 이것은 어떻게 달성됩니까? 다음은 검증 코드 기능 메커니즘의 구현 아이디어와 간단한 구현 방법에 대한 자세한 설명입니다.

1. 인증 코드 기능 메커니즘 구현을 위한 아이디어

① 기존 인증 코드 구현:

a, png 그림 생성

b, 그림의 배경색 설정

c, 글꼴 색상 및 스타일 설정

d , 4자리 무작위 인증코드 생성

e, 생성된 각 문자의 회전 각도와 위치를 조정하고 png 그림에 그려보세요

f, 노이즈 및 간섭선을 추가하여 등록 기계가 원본 이미지를 분석하지 못하도록 방지 악성 등록

g. 이미지 출력

h, 이미지가 차지한 메모리 해제

i, 인증 코드를 세션이나 데이터베이스에 저장

j, 입력 인증 코드와 비교

② SMS ( 이메일) 인증 코드 메커니즘:

a. 4~6자리의 무작위 인증 코드를 생성합니다.

b. 생성된 각 문자를 세션이나 데이터베이스에 저장합니다.

c. 사용자의 휴대폰으로 인증 코드를 보냅니다.

d. 사용자가 지정된 시간 내에 입력하고

e 세션 또는 데이터베이스에서 인증 코드를 검색하고

f 입력한 인증 코드와 비교하고 확인합니다

2. 인증 코드 기능 메커니즘의 간단한 구현

① 새로운 captcha.php를 생성하고 다음 코드를 작성하세요

<?php
/**
 * =======================================
 * Created by WeiBang Technology.
 * User: Wei ZhiHua
 * Date: 2016/10/12 0020
 * Time: 下午 4:14
 * Power: 实现验证码功能
 * =======================================
 */
 
//开启session
session_start();
//创建一个大小为 100*30 的验证码
$image = imagecreatetruecolor(100, 30);
$bgcolor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgcolor);
 
$captch_code = &#39;&#39;;
for ($i = 0; $i < 4; $i++) {
    $fontsize = 6;
    $fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));
    $data = &#39;abcdefghijkmnpqrstuvwxy3456789&#39;;
    $fontcontent = substr($data, rand(0, strlen($data) - 1), 1);
    $captch_code .= $fontcontent;
    $x = ($i * 100 / 4) + rand(5, 10);
    $y = rand(5, 10);
    imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
//就生成的验证码保存到session
$_SESSION[&#39;authcode&#39;] = $captch_code;
 
//在图片上增加点干扰元素
for ($i = 0; $i < 200; $i++) {
    $pointcolor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200));
    imagesetpixel($image, rand(1, 99), rand(1, 29), $pointcolor);
}
 
//在图片上增加线干扰元素
for ($i = 0; $i < 3; $i++) {
    $linecolor = imagecolorallocate($image, rand(80, 220), rand(80, 220), rand(80, 220));
    imageline($image, rand(1, 99), rand(1, 29), rand(1, 99), rand(1, 29), $linecolor);
}
//设置头
header(&#39;content-type:image/png&#39;);
imagepng($image);
imagedestroy($image);
 
?>

② 새로운 form.php를 생성하고 다음 코드를 작성하세요

<?php
/**
 * =======================================
 * Created by WeiBang Technology.
 * User: Wei ZhiHua
 * Date: 2016/10/12 0021
 * Time: 下午 4:14
 * Power: 实现验证码功能
 * =======================================
 */
 
if (isset($_REQUEST[&#39;authcode&#39;])) {
    session_start();
    if (strtolower($_REQUEST[&#39;authcode&#39;]) == $_SESSION[&#39;authcode&#39;]) {
        echo "输入正确!";
    } else {
        echo "输入错误!";
    }
    exit();
}
?>
 
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    <title>确认验证码</title>
</head>
<body>
<form method="post" action="./form.php">
    <p>验证码图片:
        <img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand(); ?>" width=100 height=30>
        <a href="javascript:void(0)"
           onClick="document.getElementById(&#39;captcha_img&#39;).src=&#39;./captcha.php?r=&#39;+Math.random()">换一个?</a>
    </p>
    <p>请输入图片中的内容:<input type="text" name="authcode" value=""/></p>
    <p><input type="submit" value="提交" style="padding:6px 20px;"></p>
</form>
</body>
</html>

위는 PHP 인증 코드의 아이디어와 구현 방법으로, 간단한 것부터 복잡한 것까지 작성할 수 있습니다. 이러한 메커니즘을 기반으로 완벽한 인증코드 기능을 제공합니다.

위 내용은 PHP에서 로그인 인증 코드를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.