91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP 驗證碼   高洛峰 細說PHP

發布時間:2020-07-25 01:16:42 來源:網絡 閱讀:225 作者:津沙港灣 欄目:web開發

前端頁面index.php

<?php
header('content-type:text/html;charset=utf-8');
if(isset($_POST['dosubmit'])){
    session_start();
    if(strtoupper($_SESSION['code']) == strtoupper($_POST['code'])){
        echo '輸入成功!<br/>';
    }else{
        echo '輸入不對<br/>';
    }
}
?>
<form action="index.php" method="post">
用戶名:<input type="text" name="username" value=""/><br/>
標題:<input type="text" name="title" value=""/><br/>
內容:<textarea name="content" cols="40" rows="4"></textarea><br/>
驗證碼:<input type="text" size="4" name="code"><img src="test.php" onclick ="this.src='test.php?'+Math.random()"/><br/>
<input type="submit" name="dosubmit" value="留言"/>
</form>

生成驗證碼圖片test.php

<?php 
       //開啟session
       session_start();
        require 'print.php';//導入驗證碼類文件
        $vcode =new Vcode(80,30,4);//實例化驗證碼類
        //將驗證碼放到服務器自己的空間保存一份
        $_SESSION['code'] = $vcode->getCode();
        //將驗證碼的圖片輸出
        $vcode->outimg();//調用方法

驗證碼類 print.php

<?php 
    class Vcode{
        private $width;         //寬
        private $heigth;        //高
        private $num;           //數量
        private $code;          //驗證碼
        private $img;           //圖像資源
        //構造方法
        function __construct($width=80,$height=25,$num=4){
                $this->width        =   $width;
                $this->heigth       =   $height;
                $this->num          =   $num;
                $this->code        =   $this->createCode();
        }
        //獲取字符的驗證碼
        function getCode(){
            return $this->code;
        }
        
        
        //輸出驗證碼圖形
        function outimg(){
            //創建背景 顏色 大小 邊框
            $this->createBack();           
            //畫字 大小 字體顏色
            $this->outString();
            //干擾元素 點 線條
            $this->setDisturb();
            //輸出圖像
            $this->printImg();
        }
        //創建背景
        private function createBack(){
            //創建資源
            $this->img = p_w_picpathcreatetruecolor($this->width, $this->heigth);
            //設置隨機背景顏色
            $bgcolor = p_w_picpathcolorallocate($this->img, rand(225, 255), rand(225, 255), rand(225, 255));
            //填充背景色
            p_w_picpathfill($this->img, 0, 0, $bgcolor);
            //畫矩形
            $bordercolor = p_w_picpathcolorallocate($this->img, 0, 0, 0);
            p_w_picpathrectangle($this->img, 0, 0, $this->width-1, $this->heigth-1, $bordercolor);
        }
        //畫字
        private function  outString(){
                for($i=0;$i<$this->num;$i++){                        
                $color  =   p_w_picpathcolorallocate($this->img, rand(0, 128), rand(0, 128), rand(0, 128));
                $font = rand(3,5);
                $x = 3 + ($this->width/$this->num)*$i;
                $y = rand(1, 5);
                p_w_picpathstring($this->img, $font,$x, $y, $this->code{$i}, $color);
                           }
        }
        //設置干擾元素
        private function setDisturb(){
                //加上點數
                for($i=0;$i<100;$i++){
                    $color  =   p_w_picpathcolorallocate($this->img, rand(0, 255), rand(0, 255), rand(0, 255));
                    p_w_picpathsetpixel($this->img, rand(1, $this->width-2), rand(1, $this->heigth-2), $color);
                }
                //加上線條
                for($i=0;$i<10;$i++){
                    $color  =   p_w_picpathcolorallocate($this->img, rand(0, 255), rand(0, 128), rand(0, 255));
                    p_w_picpatharc($this->img, rand(-10, $this->width+10), rand(-10, $this->heigth+10), rand(30, 300), rand(30, 300), 55, 44, $color);
                }
        }
        //輸出圖像
        private function printImg(){
          //      header("Content-Type:p_w_picpath/jpeg");
           //     p_w_picpathjpeg($this->img);
           if(p_w_picpathtypes() & IMG_GIF){
                  header("Content-Type:p_w_picpath/gif");
                 p_w_picpathjpeg($this->img);
           }elseif(p_w_picpathtypes() & IMG_JPEG){
                  header("Content-Type:p_w_picpath/jpeg");
                 p_w_picpathjpeg($this->img);
           }elseif(p_w_picpathtypes() & IMG_JPG){
                  header("Content-Type:p_w_picpath/jpg");
                 p_w_picpathjpeg($this->img);
           }elseif(p_w_picpathtypes() & IMG_PNG){
                  header("Content-Type:p_w_picpath/png");
                 p_w_picpathjpeg($this->img);
           }
        }
        //生成驗證碼
        private function  createCode(){
            $codes = "23456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";
            $code = "";
            for($i=0;$i<$this->num;$i++){
                $code .=$codes{rand(0,strlen($codes)-1)};
            }
            return $code;
        }
        
        //釋放圖像資源
        function __destruct(){
            p_w_picpathdestroy($this->img);
        }
        
    }



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

磐安县| 神农架林区| 江北区| 英德市| 驻马店市| 阳谷县| 揭西县| 天峨县| 永善县| 通江县| 舟山市| 惠州市| 叶城县| 荣成市| 大港区| 南岸区| 楚雄市| 社会| 颍上县| 大英县| 永仁县| 临夏县| 泰兴市| 汶上县| 郁南县| 应城市| 新安县| 延津县| 霍山县| 抚远县| 化隆| 江山市| 长阳| 延安市| 华容县| 佳木斯市| 乌苏市| 曲松县| 南木林县| 桃源县| 乌什县|