How to write a nice PHP verification code? Brother even PHP training
Small series to share a piece of code to everyone:
<?php
Class imagecode{
Private $width;
Private $height;
Private $counts;
Private $distrubcode;
Private $fonturl;
Private $session;
function __construct ($width = =5, $height = $counts, $distrubcode = "1235467890qwertyuipkjhgfdaszxcvbnm", $fonturl = "C:\Windows\Fonts\TektonPro-BoldCond.otf") {
$this->width= $width;
$this->height= $height;
$this->counts= $counts;
$this->distrubcode= $distrubcode;
$this->fonturl= $fonturl;
$this->session= $this->sessioncode ();
Session_Start ();
$_session[' code ']= $this->session;
}
function Imageout () {
$im = $this->createimagesource ();
$this->setbackgroundcolor ($im);
$this->set_code ($im);
$this->setdistrubecode ($im);
Imagegif ($im);
Imagedestroy ($im);
}
Private Functioncreateimagesource () {
Returnimagecreate ($this->width, $this->height);
}
Private Functionsetbackgroundcolor ($im) {
$bgcolor = Imagecolorallocate ($im, Rand (200,255), Rand (200,255), Rand (200,255));//±3°é
Imagefill ($im, 0,0, $bgcolor);
}
Private Functionsetdistrubecode ($im) {
$count _h= $this->height;
$cou =floor ($count _h*2);
for ($i =0; $i < $cou; $i + +) {
$x =rand (0, $this->width);
$y =rand (0, $this->height);
$jiaodu =rand (0,360);
$fontsize =rand (8,15);
$fonturl = $this->fonturl;
$originalcode = $this->distrubcode;
$countdistrub =strlen ($originalcode);
$dscode = $originalcode [rand (0, $countdistrub-1)];
$color = Imagecolorallocate ($im, Rand (40,140), Rand (40,140), Rand (40,140));
Imagettftext ($im, $fontsize, $jiaodu, $x, $y, $color, $fonturl, $dscode);
}
}
Private Functionset_code ($im) {
$width = $this->width;
$counts = $this->counts;
$height = $this->height;
$scode = $this->session;
$y =floor ($height/2) +floor ($height/4);
$fontsize =rand (30,35);
$fonturl = "C:\WINDOWS\FONTS\ADOBEGOTHICSTD-BOLD.OTF";//$this->fonturl;
$counts = $this->counts;
for ($i =0; $i < $counts; $i + +) {
$char = $scode [$i];
$x =floor ($width/$counts) * $i +8;
$jiaodu =rand ( -20,30);
$color =imagecolorallocate ($im, Rand (0,50), Rand (50,100), Rand (100,140));
Imagettftext ($im, $fontsize, $jiaodu, $x, $y, $color, $fonturl, $char);
}
}
Private Functionsessioncode () {
$originalcode = $this->distrubcode;
$countdistrub =strlen ($originalcode);
$_dscode = "";
$counts = $this->counts;
for ($j =0; $j < $counts; $j + +) {
$dscode = $originalcode [rand (0, $countdistrub-1)];
$_dscode.= $dscode;
}
return $_dscode;
}
}
Header ("Content-type:image/gif");
$imagecode =newimagecode (160,50);
$imagecode->imageout ();
PHP Introductory Training Tutorial A nice PHP verification code