php 验证码程序_PHP

Jun 01, 2016 pm 12:30 PM
i image var program mengesahkan

验证码

        // -------------------------------------------------------------
        // 名称: my_authimg class
        //
        // 用途: 根据图片数字字母验证
        // 实例:
        // $ai = new my_authimg();
        // $ai->render();
        //
        // 判断结果是否正确
        // $ai = new my_authimg();
        // $ai->is_true($str);
        //
        // @作者: hightman
        // @版本: 0.0.0
        // @时间: 2005/05/26
        // $Id: $
        // -------------------------------------------------------------
       
        class my_authimg {
                // public var
                var $width          = 72;
                var $height         = 20;
                var $text_font      = 5;
                var $text_space     = 10;
                var $text_length    = 5;
                var $sess_name      = "__auth_xyz_123__";
                var $num_only       = false;
               
                // private
                var $_top           = 1;
                var $_move          = 3;
                var $_lines         = 5;
               
                function auth_image($params = array()) {
                        settype($params, "array");
                        foreach ($params as $key => $value) {
                                if (isset($this->$key)) {
                                        $this->$key = $value;
                                }
                        }
                        $this->_lines = intval($this->height / 10);
                }
               
                function set_sess_name($name = "") {
                        if (!empty($name)) {
                                $this->sess_name = $name;
                        }
                }
               
                function set_text_length($length = 5) {
                        $this->text_length = $length;
                }
               
                function set_img_size($width = 100, $height = 15) {
                        $this->width = $width;
                        $this->height = $height;
                }
               
                function get_sess_value() {
                        @session_start();
                       
                        $sess_key = $this->sess_name;
                        $sess_value = NULL;               

                        if (isset($_SESSION) && isset($_SESSION[$sess_key])) {
                                $sess_value = $_SESSION[$sess_key];
                                unset($_SESSION[$sess_key]);                               
                        } else {
                                global $HTTP_SESSION_VARS;
                               
                                if (isset($HTTP_SESSION_VARS[$sess_key])) {
                                        $sess_value = $HTTP_SESSION_VARS[$sess_key];
                                        session_unregister($this->sess_name);
                                }
                        }
                       
                        if (isset($GLOBALS[$sess_key])) {
                                unset($GLOBALS[$sess_key]);
                        }

                        return $sess_value;
                }
               
                function is_true($str) {
                        $sess_value = $this->get_sess_value();
                        return (!strcasecmp($sess_value, $str));
                }
               
                function render() {
                        $radix = "123456789";
                        if (!$this->num_only) {
                                $radix .= "ABCDEFGHIJKLMNPQRSTUVWXYZ";
                        }
                        $radix_len = strlen($radix);
      
                        // 种下随机种子
                        mt_srand();

                        // 初始化图片
                        $image          = ImageCreate($this->width, $this->height);
                       
                        // 设定颜色
                        $r = mt_rand() % 255; //2 ? 255 : 0;
                        $g = mt_rand() % 255; //2 ? 255 : 0;
                        $b = mt_rand() % 255; //2 ? 255 : 0;
                        $fgcolor        = ImageColorAllocate($image, $r, $g, $b);
                        $bgcolor        = ImageColorAllocate($image, 255 - $r, 255 - $g, 255 - $b);
                        $silver                = ImageColorAllocate($image, (255 - $r) * 2, (255 - $g) * 2, (255 - $b) * 2);
                       
                        // 生成背景
                        ImageFill($image, 0, 0, $bgcolor);                       
                       
                        // 画出横向干扰线
                        $line_space = ceil($this->height / ($this->_lines + 1));
                        $line_move  = ceil($line_space * 2);
                        for ($i = 1; $i _lines; $i++) {
                                $y  = $line_space * $i;
                                $y2 = $y + (($i - rand(0, 2 * $i)) % 2) * $line_move;
                                ImageLine($image, 0, $y, $this->width, $y2, $silver);
                        }
                       
                        // 画出干扰点
                        $pixel_num = intval($this->height * $this->width / 20);
                        for($i = 0; $i                                 $x = mt_rand() % $this->width;
                                $y = mt_rand() % $this->height;
                                ImageSetPixel($image, $x, $y, $silver);
                        }
                       
                        // 画出字符
                        $rand_str = "";
                        $step_len = intval($this->width / ($this->text_length + 1));
                        $left_len = $step_len - 6;

                        for ($i = 0; $i text_length; $i++) {
                                $x = $left_len + ($step_len * $i);
                                $y = ($i % 2) * $this->_move + $this->_top;

                                $rand = mt_rand(0, $radix_len - 1);
                                $rand_str .= substr($radix, $rand, 1);
                               
                                ImageString($image, $this->text_font, $x, $y, substr($radix, $rand, 1), $fgcolor);
                        }
                       
                        // 设定 SESSION 值
                        @session_start();
                        if (isset($_SESSION)) {
                                $sess_key = $this->sess_name;
                                $_SESSION[$sess_key] = $rand_str;
                        }
                        else {
                                session_register($this->sess_name, $rand_str);
                        }
                       
                        // 输出图象
                        header("Content-type: image/png");
                        ImagePNG($image);
                        ImageDestroy($image);
                }
        }
?>

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menjadikan Peta Google sebagai peta lalai dalam iPhone Bagaimana untuk menjadikan Peta Google sebagai peta lalai dalam iPhone Apr 17, 2024 pm 07:34 PM

Peta lalai pada iPhone ialah Peta, pembekal geolokasi proprietari Apple. Walaupun peta semakin baik, ia tidak berfungsi dengan baik di luar Amerika Syarikat. Ia tiada apa-apa untuk ditawarkan berbanding Peta Google. Dalam artikel ini, kami membincangkan langkah yang boleh dilaksanakan untuk menggunakan Peta Google untuk menjadi peta lalai pada iPhone anda. Cara Menjadikan Peta Google Peta Lalai dalam iPhone Menetapkan Peta Google sebagai aplikasi peta lalai pada telefon anda adalah lebih mudah daripada yang anda fikirkan. Ikut langkah di bawah – Langkah prasyarat – Anda mesti memasang Gmail pada telefon anda. Langkah 1 – Buka AppStore. Langkah 2 – Cari “Gmail”. Langkah 3 – Klik di sebelah apl Gmail

Bagaimana untuk mengesahkan tandatangan dalam PDF Bagaimana untuk mengesahkan tandatangan dalam PDF Feb 18, 2024 pm 05:33 PM

Kami biasanya menerima fail PDF daripada kerajaan atau agensi lain, sesetengahnya dengan tandatangan digital. Selepas mengesahkan tandatangan, kami melihat mesej SignatureValid dan tanda semak hijau. Sekiranya tandatangan tidak disahkan, kesahihannya tidak diketahui. Mengesahkan tandatangan adalah penting, mari lihat cara melakukannya dalam PDF. Cara Mengesahkan Tandatangan dalam PDF Mengesahkan tandatangan dalam format PDF menjadikannya lebih boleh dipercayai dan dokumen lebih cenderung untuk diterima. Anda boleh mengesahkan tandatangan dalam dokumen PDF dengan cara berikut. Buka PDF dalam Adobe Reader Klik kanan tandatangan dan pilih Show Signature Properties Klik butang Tunjukkan Sijil Penandatangan Tambah tandatangan pada senarai Sijil Dipercayai daripada tab Amanah Klik Sahkan Tandatangan untuk melengkapkan pengesahan Biarkan

Kaedah terperinci untuk menyahsekat menggunakan pengesahan bantuan rakan WeChat Kaedah terperinci untuk menyahsekat menggunakan pengesahan bantuan rakan WeChat Mar 25, 2024 pm 01:26 PM

1. Selepas membuka WeChat, klik ikon carian, masukkan pasukan WeChat, dan klik perkhidmatan di bawah untuk masuk. 2. Selepas memasukkan, klik pilihan alat layan diri di sudut kiri bawah. 3. Selepas mengklik, dalam pilihan di atas, klik pilihan untuk menyahsekat/merayu untuk pengesahan tambahan.

Apakah kad grafik terbaik untuk i7 3770? Apakah kad grafik terbaik untuk i7 3770? Dec 29, 2023 am 09:12 AM

Apakah kad grafik yang baik untuk Core i73770 ialah kad grafik yang sangat berkuasa dengan prestasi cemerlang dan teknologi canggih. Sama ada anda bermain permainan, memaparkan grafik atau melakukan pembelajaran mesin, RTX3070 boleh mengendalikannya dengan mudah. Ia menggunakan seni bina Ampere NVIDIA, mempunyai teras CUDA 5888 dan memori GDDR6 8GB, yang boleh memberikan pengalaman permainan yang lancar dan kesan grafik berkualiti tinggi. RTX3070 juga menyokong teknologi pengesanan sinar, yang boleh memberikan kesan cahaya dan bayang yang realistik. Secara keseluruhannya, RTX3070 ialah kad grafik yang berkuasa dan canggih yang sesuai untuk mereka yang mengejar prestasi tinggi dan kualiti tinggi. RTX3070 ialah kad grafik siri NVIDIA. Menggunakan NVID generasi ke-2

Apl jam tiada dalam iPhone: Cara membetulkannya Apl jam tiada dalam iPhone: Cara membetulkannya May 03, 2024 pm 09:19 PM

Adakah apl jam hilang dari telefon anda? Tarikh dan masa masih akan dipaparkan pada bar status iPhone anda. Walau bagaimanapun, tanpa apl Jam, anda tidak akan dapat menggunakan jam dunia, jam randik, jam penggera dan banyak ciri lain. Oleh itu, membetulkan apl jam yang hilang hendaklah berada di bahagian atas senarai tugasan anda. Penyelesaian ini boleh membantu anda menyelesaikan isu ini. Betulkan 1 – Letakkan Apl Jam Jika anda tersilap mengalih keluar apl Jam daripada skrin utama anda, anda boleh meletakkan semula apl Jam pada tempatnya. Langkah 1 – Buka kunci iPhone anda dan mula meleret ke kiri sehingga anda mencapai halaman Pustaka Apl. Langkah 2 – Seterusnya, cari "jam" dalam kotak carian. Langkah 3 – Apabila anda melihat "Jam" di bawah dalam hasil carian, tekan dan tahan dan

Bagaimana untuk menulis program undur mudah dalam C++? Bagaimana untuk menulis program undur mudah dalam C++? Nov 03, 2023 pm 01:39 PM

C++ ialah bahasa pengaturcaraan yang digunakan secara meluas yang sangat mudah dan praktikal dalam menulis program undur. Program undur ialah aplikasi biasa yang boleh memberikan kita pengiraan masa dan fungsi kira detik yang sangat tepat. Artikel ini akan memperkenalkan cara menggunakan C++ untuk menulis program kira detik yang mudah. Kunci untuk melaksanakan program kira detik ialah menggunakan pemasa untuk mengira peredaran masa. Dalam C++, kita boleh menggunakan fungsi dalam fail pengepala time.h untuk melaksanakan fungsi pemasa. Berikut ialah kod untuk program kira detik yang mudah

Bagaimana untuk membuka tapak web menggunakan Penjadual Tugas Bagaimana untuk membuka tapak web menggunakan Penjadual Tugas Oct 02, 2023 pm 11:13 PM

Adakah anda kerap melawat tapak web yang sama pada masa yang hampir sama setiap hari? Ini boleh menyebabkan menghabiskan banyak masa dengan berbilang tab penyemak imbas dibuka dan mengacaukan penyemak imbas semasa melakukan tugas harian. Nah, bagaimana pula dengan membukanya tanpa perlu melancarkan penyemak imbas secara manual? Ia sangat mudah dan tidak memerlukan anda memuat turun sebarang apl pihak ketiga, seperti yang ditunjukkan di bawah. Bagaimanakah cara saya menyediakan Penjadual Tugas untuk membuka tapak web? Tekan kekunci, taip Penjadual Tugas dalam kotak carian, dan kemudian klik Buka. Windows Pada bar sisi kanan, klik pada pilihan Cipta Tugas Asas. Dalam medan Nama, masukkan nama tapak web yang ingin anda buka dan klik Seterusnya. Seterusnya, di bawah Pencetus, klik Kekerapan Masa dan klik Seterusnya. Pilih berapa lama anda mahu acara itu berulang dan klik Seterusnya. Pilih dayakan

iOS 17: Cara mengatur apl iMessage dalam Messages iOS 17: Cara mengatur apl iMessage dalam Messages Sep 18, 2023 pm 05:25 PM

Dalam iOS 17, Apple bukan sahaja menambah beberapa ciri pemesejan baharu, tetapi juga mengubah reka bentuk aplikasi Mesej untuk memberikan rupa yang lebih bersih. Semua apl dan alatan iMessage, seperti pilihan kamera dan foto, kini boleh diakses dengan mengetik butang "+" di atas papan kekunci dan di sebelah kiri medan input teks. Mengklik butang "+" memaparkan lajur menu dengan susunan pilihan lalai. Bermula dari bahagian atas, terdapat kamera, foto, pelekat, wang tunai (jika ada), audio dan lokasi. Di bahagian paling bawah terdapat butang "Lagi", yang apabila diketik akan mendedahkan sebarang apl pemesejan lain yang dipasang (anda juga boleh meleret ke atas untuk mendedahkan senarai tersembunyi ini). Cara menyusun semula apl iMessage anda Anda boleh melakukannya dengan mengikuti

See all articles