Bagaimana untuk melaksanakan kod pengesahan digital dalam php

藏色散人
Lepaskan: 2023-03-13 10:54:01
asal
2613 orang telah melayarinya

Cara melaksanakan kod pengesahan digital dalam PHP: 1. Laksanakan imej asas kod pengesahan melalui fungsi imagecreatetruecolor; 2. Laksanakan kod pengesahan digital melalui kaedah imagecolorallocate 4. Simpan sahaja maklumat pengesahan.

Bagaimana untuk melaksanakan kod pengesahan digital dalam php

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3

Bagaimana untuk melaksanakan kod pengesahan digital dalam PHP?

PHP melaksanakan kod pengesahan digital

Gunakan PHP untuk melaksanakan kod pengesahan adalah untuk membezakan antara operasi mesin dan manusia serta meningkatkan keselamatan. Perisian pelayan perlu dipasang Saya menggunakan wamp, dan kemudian tulis halaman kod pengesahan php.

Ia dibahagikan kepada langkah berikut untuk mencapai:

1 Laksanakan peta asas kod pengesahan
Matlamat: Menjana gambar 100*30px melalui kod php
Kaedah :

resource imagecreatetruecolor(int $width,int $height)

Nota:
(a) Bergantung pada sambungan GD
(b) Sebelum mengeluarkan imej, imej mesti dikeluarkan maklumat pengepala terlebih dahulu
(c) Output lalai kaedah ini ialah latar belakang hitam
//
2. Laksanakan kaedah pengesahan digital
:

int imagecolorallocate(resource $image ,int $red ,int $green,int $blue);
bool imagestring(resource $image,int $font,int $x,int $y,string $s,int $col);
Nota: /Kawal dengan baik Saiz dan pengedaran fon untuk mengelakkan pertindihan fon atau paparan tidak lengkap
//
3 Tambah elemen yang mengganggu
Matlamat: Menambah elemen yang mengganggu, titik atau garis yang mengganggu pada kod pengesahan
Kaedah:

bool imagesetpixel(resource $image,int $x,int $y,int $color);
bool imageline(resource $image,int $x1,int $y1,int $x2,int $y2 ,int $ color)

Nota: Maklumat yang mengganggu mesti mengawal warna untuk mengelak daripada "mengambil perhatian";

4 Simpan maklumat pengesahan melalui SESI
Objektif: Merekod maklumat kod pengesahan bahagian pelayan untuk kemudahan Pengesahan selepas input pengguna
Kaedah: bool session_start(void)
Nota: (a) session_start() mesti berada di bahagian atas skrip
(b) Dalam kes berbilang pelayan , pengurusan maklumat sesi berpusat perlu dipertimbangkan

5. Serahkan dan sahkan kod pengesahan melalui borang
Matlamat: Berikan kod pengesahan yang dijana kepada pengguna, dan sahkan ketepatan kod pengesahan pengguna
Kaedah: html

Asas Borang
mengesahkan.php

<?php
session_start();
$image=imagecreatetruecolor(100,30);
$bgcolor=imagecolorallocate($image,255,255,255); //#fff
imagefill($image, 0, 0, $bgcolor);
$captch_code=&#39;&#39;;
//画出4个随机的数字或者字母
for($i=0;$i<4;$i++){
$fontsize=6;
//为了让数字的颜色不同,使用随机颜色rand(0,120),120之前是深色
$fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
$data=&#39;abcdefghijklmnopqrstuvwxyz123456789&#39;;//由于o和0对于一些人不太好区别,所以把0去掉了
$fontcontent=substr($data,rand(0,strlen($data)),1);
$captch_code.=$fontcontent;
$x=($i*100/4)+rand(5,10);
$y=rand(5,10);
//水平画一条字符串
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
$_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,99),$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);
Salin selepas log masuk

form.php

<?php
if(isset($_REQUEST[&#39;authcode&#39;])){
session_start();
if(strtolower($_REQUEST[&#39;authcode&#39;])==$_SESSION[&#39;authcode&#39;]){
echo &#39;<font color="#0000cc">输入正确</font>&#39;;
}else{
echo &#39;<font color="#cc0000><b>输入错误</b></font>&#39;;
}
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>确认验证码</title>
</head>
<body>
    <form method="post" action=&#39;./form.php&#39;>
        <div>验证码图片:
        <img id="code_img" border="1" src="./validate.php?r=<?php echo rand();?>" width="100" alt="">
        <a href="javascript:void(0)" οnclick="document.getElementById(&#39;code_img&#39;).src=&#39;./validate.php?r=&#39;+Math.random()">换一个?</a>
        </div>
        <div>请输入图片中的内容:<input type="text" name="authcode" value=""></div>
        <div><input type="submit" value="提交" style="padding:6px 20px;"></div>
    </form>
</body>
</html>
Salin selepas log masuk

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kod pengesahan digital dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan