Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mendapatkan kod pengesahan dalam php

Bagaimana untuk mendapatkan kod pengesahan dalam php

王林
王林asal
2021-09-22 15:40:433904semak imbas

Kaedah pelaksanaan PHP untuk mendapatkan kod pengesahan: [

Bagaimana untuk mendapatkan kod pengesahan dalam php

Persekitaran operasi artikel ini: sistem windows10, php 7, komputer thinkpad t480

Kami sering menggunakan fungsi kod pengesahan dalam kehidupan seharian kami, jadi jika Bagaimana kami harus melaksanakan fungsi kod pengesahan sendiri di bawah kami memberikan kod pelaksanaan khusus untuk rujukan anda

Jika anda seorang pemula, maka saya amat mengesyorkan anda mengikuti kod demi langkah menyalin kod secara langsung. lihat dari index.html, borang yang dihantar adalah form.php, jadi terdapat juga borang penghakiman. kod php:

Halaman yang dipaparkan adalah seperti berikut:
<?php
  //11>设置session,必须处于脚本最顶部
  session_start();
  
 
  /*$image = imagecreatetruecolor(100, 30);    //1>设置验证码图片大小的函数
  //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);
  $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff
  //6>区域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的区域着色,col 表示欲涂上的颜色
  imagefill($image, 0, 0, $bgcolor);
  //10>设置变量
  $captcha_code = "";*/
  
  
    //7>生成随机数字
  for($i=0;$i<4;$i++){
    //设置字体大小
    $fontsize = 6;    
    //设置字体颜色,随机颜色
    $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));      //0-120深颜色
    //设置数字
    $fontcontent = rand(0,9);
    //10>.=连续定义变量
    $captcha_code .= $fontcontent;  
    //设置坐标
    $x = ($i*100/4)+rand(5,10);
    $y = rand(5,10);
 
    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
  }
  //10>存到session
  $_SESSION[&#39;authcode&#39;] = $captcha_code;
  //8>增加干扰元素,设置雪花点
  for($i=0;$i<200;$i++){
    //设置点的颜色,50-200颜色比数字浅,不干扰阅读
    $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));    
    //imagesetpixel — 画一个单一像素
    imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);
  }
  //9>增加干扰元素,设置横线
  for($i=0;$i<4;$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);
  }
 
  //2>设置头部,image/png
  header(&#39;Content-Type: image/png&#39;);
  //3>imagepng() 建立png图形函数
  imagepng($image);
  //4>imagedestroy() 结束图形函数 销毁$image
  imagedestroy($image);

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<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=&#39;1&#39; src=&#39;./captcha.php?r=echo rand(); ? alt="Bagaimana untuk mendapatkan kod pengesahan dalam php" >&#39;   style="max-width:90%" />
    <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=&#39;authcode&#39; value=&#39;&#39;/></p>
  <p><input type=&#39;submit&#39; value=&#39;提交&#39; style=&#39;padding:6px 5px;&#39;/></p>
</form>

</body>
</html>

Untuk kod pengesahan digital dan bahasa Inggeris, cuma tukar 7》 di halaman captcha.php Dua halaman yang lain tidak perlu disentuh Kod tersebut adalah seperti berikut:
<?php
  header("Content-Type:text/html;charset=utf-8");      //设置头部信息
  //isset()检测变量是否设置
  if(isset($_REQUEST[&#39;authcode&#39;])){
    session_start();
    //strtolower()小写函数
    if(strtolower($_REQUEST[&#39;authcode&#39;])== $_SESSION[&#39;authcode&#39;]){
      //跳转页面
      echo "<script language=\"javascript\">";
      echo "document.location=\"./form.php\"";
      echo "</script>";
    }else{
      //提示以及跳转页面
      echo "<script language=\"javascript\">";
      echo "alert(&#39;输入错误!&#39;);";
      echo "document.location=\"./form.php\"";
      echo "</script>";
    }
    exit();
  }


Halaman paparan adalah seperti berikut:

Bagaimana untuk mendapatkan kod pengesahan dalam php

Hasilkan kod pengesahan aksara Cina Semasa proses berjalan, mesej ralat bercelaru dipaparkan, yang tidak boleh dipaparkan dan tidak boleh diselesaikan. Kodnya adalah seperti berikut :
<?php
  //11>设置session,必须处于脚本最顶部
  session_start();
  $image = imagecreatetruecolor(100, 30);    //1>设置验证码图片大小的函数
  //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);
  $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff
  //6>区域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的区域着色,col 表示欲涂上的颜色
  imagefill($image, 0, 0, $bgcolor);
  //10>设置变量
  $captcha_code = "";
//7>生成随机的字母和数字
  for($i=0;$i<4;$i++){
    //设置字体大小
    $fontsize = 8;    
    //设置字体颜色,随机颜色
    $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));      //0-120深颜色
    //设置需要随机取的值,去掉容易出错的值如0和o
    $data =&#39;abcdefghigkmnpqrstuvwxy3456789&#39;;
    //取出值,字符串截取方法  strlen获取字符串长度
    $fontcontent = substr($data, rand(0,strlen($data)),1);
    //10>.=连续定义变量
    $captcha_code .= $fontcontent;    
    //设置坐标
    $x = ($i*100/4)+rand(5,10);
    $y = rand(5,10);
    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
  }
  //10>存到session
  $_SESSION[&#39;authcode&#39;] = $captcha_code;
  //8>增加干扰元素,设置雪花点
  for($i=0;$i<200;$i++){
    //设置点的颜色,50-200颜色比数字浅,不干扰阅读
    $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));    
    //imagesetpixel — 画一个单一像素
    imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);
  }
  //9>增加干扰元素,设置横线
  for($i=0;$i<4;$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);
  }
 
  //2>设置头部,image/png
  header(&#39;Content-Type: image/png&#39;);
  //3>imagepng() 建立png图形函数
  imagepng($image);
  //4>imagedestroy() 结束图形函数 销毁$image
  imagedestroy($image);


Pembelajaran yang disyorkan:

latihan php

Bagaimana untuk mendapatkan kod pengesahan dalam php

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

Kenyataan:
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