Rumah  >  Artikel  >  rangka kerja php  >  Cara thinkphp melaksanakan kod pengesahan pemisahan bahagian hadapan dan belakang

Cara thinkphp melaksanakan kod pengesahan pemisahan bahagian hadapan dan belakang

PHPz
PHPzke hadapan
2023-05-31 20:18:531396semak imbas

1. Peranan kod pengesahan

Dalam era Internet, kami sering menggunakan kod pengesahan untuk meningkatkan keselamatan. Melaksanakan fungsi kod pengesahan boleh membantu kami:

  1. Mencegah serangan robot: Kod pengesahan boleh mengesan sama ada ia adalah operasi manusia untuk mengurangkan serangan oleh robot berniat jahat dan penggodam.

  2. Meningkatkan keselamatan: Kod pengesahan boleh mengukuhkan kawalan kebenaran, memastikan ketulenan identiti pengguna dan melindungi pelayan dan tapak web daripada serangan yang tidak perlu.

  3. Tingkatkan pengalaman pengguna: Kod pengesahan boleh menghalang pengguna daripada kehilangan minat dengan berkesan akibat aksara yang tidak boleh dibaca secara berterusan.

2. Pelaksanaan kod pengesahan bahagian hadapan

Dalam proses pelaksanaan kod pengesahan bahagian hadapan, kami memerlukan langkah utama berikut :

  1. Tentukan jenis kod pengesahan: Kod pengesahan biasanya dibahagikan kepada kod pengesahan aksara dan kod pengesahan grafik. Reka bentuk dengan mengambil kira pengalaman pengguna dan keselamatan.

  2. Jana kod pengesahan pada halaman hadapan: Gunakan Kanvas atau teknologi lain untuk menjana kod pengesahan pada halaman hujung hadapan. Anda boleh menggunakan elemen Kanvas HTML5 untuk menyesuaikan fon, saiz dan warna kod pengesahan.

  3. Secara amnya, kami perlu mengesahkan sama ada input pengguna sepadan dengan kod pengesahan yang dijana oleh pelayan. Melalui teknologi JavaScript dan Ajax, kami dapat memperoleh input pengguna dan menghantarnya ke bahagian pelayan.

  4. Kod pengesahan pengesahan: Sahkan input pengguna pada bahagian pelayan Jika antara muka API disediakan, antara muka akan mengembalikan maklumat pengesahan kejayaan atau kegagalan kepada pelanggan.

Dengan menggunakan teknologi ini, pengguna boleh mendapatkan kod pengesahan di kaunter hadapan untuk mengelakkan akses atau serangan berniat jahat automatik.

3. Pelaksanaan kod pengesahan back-end

Untuk melaksanakan kod pengesahan dalam thinkphp, kami biasanya memberi perhatian kepada aspek berikut:

  1. Buat pengawal kod pengesahan

Untuk mengawal penjanaan dan pengesahan kod pengesahan, anda boleh meletakkan pengawal kod pengesahan dalam direktori latar belakang. Dalam pengawal, kaedah berikut biasanya disertakan:

  • generateCode: Jana kod pengesahan dan simpan kod pengesahan dalam Sesi.

  • verifyCode: Sahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah betul.

  • getCode: Mengembalikan kod pengesahan yang disimpan dalam Sesi.

  1. Jana kod pengesahan

Apabila menjana kod pengesahan, kami boleh menggunakan perpustakaan GD untuk menjana imej, dan kemudian lulus Cara untuk mengeluarkan imej dan menyimpan imej, hantar hasil kod pengesahan kepada pelanggan. Berikut ialah contoh kod:

public function generateCode($width=80,$height=22,$verifyName=''){
    //生成一个4位的随机字符串
    $code = '';
    $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    for($i=0;$i<4;$i++){
        $code .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    //将验证码存储到session中
    if($verifyName){
        session($verifyName, $code);
    }else{
        session(&#39;verify_code&#39;, $code);
    }

    //生成验证码图像
    $img = imagecreate($width,$height);
    //背景色
    imagecolorallocate($img, 102,102,102);
    //字体颜色
    $color = imagecolorallocate($img, 255, 255, 255);
    //生成干扰线
    for($i=0;$i<5;$i++){
        imageline($img,mt_rand(0,$width/2),mt_rand(0,$height/2),mt_rand($width/2,$width),mt_rand($height/2,$height),$color);
    }
    //将验证码绘制到图像上
    imagefttext($img, 18, 0, 10, $height-5, $color, &#39;./arial.ttf&#39;, $code);
    //输出图像
    header(&#39;Pragma:no-cache&#39;);
    header(&#39;Cache-Control:no-cache&#39;);
    header("content-type:image/png");
    imagepng($img);
    imagedestroy($img);
}
  1. Kod pengesahan pengesahan

Kami biasanya mendapat kod pengesahan yang dimasukkan oleh pengguna, dan kemudian mencari kod pengesahan yang sepadan dalam sesi Nilai kod pengesahan untuk disahkan. Apabila nilai kod pengesahan yang disimpan dalam sesi adalah sama dengan nilai yang dimasukkan oleh pengguna, pengesahan kod pengesahan berjaya.

// 验证码验证
if(empty($verify)) {
    $this->error(&#39;验证码不能为空!&#39;);
}
if($verify != session(&#39;verify_code&#39;)){
    $this->error("验证码错误!");
}

4 Kelebihan pelaksanaan kod pengesahan pemisahan bahagian hadapan dan belakang

Pemisahan bahagian hadapan dan bahagian belakang membolehkan pembangun bahagian belakang memberi tumpuan. pada pemprosesan data dan perniagaan logik, dan Pembangun bahagian hadapan boleh menumpukan pada pembangunan pengalaman pengguna dan kaedah interaksi. Menggunakan pemisahan bahagian hadapan dan belakang, keselamatan tapak web dan aplikasi web boleh dipertingkatkan dan kod pengesahan boleh digunakan untuk menyekat akses dan serangan automatik berniat jahat secara berkesan.

Atas ialah kandungan terperinci Cara thinkphp melaksanakan kod pengesahan pemisahan bahagian hadapan dan belakang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam