Heim  >  Artikel  >  php教程  >  一个完整php验证码实例程序

一个完整php验证码实例程序

WBOY
WBOYOriginal
2016-05-25 16:40:381125Durchsuche

<!doctype html> 
<html xml:lang="en-us" xmlns="http://www.w3.org/1999/xhtml"> 
<title>login</title> 
<link rel="stylesheet" type="text/css" href="/tryit.css" /> 
<script type="text/javascript"> 
function getpinimg() 
{ 
    document.getelementbyid("pinimg").src="log_demo.php?a=pin&r=" + math.random(); 
} 
</script> 
</head> 
 
<body> 
<form action="log_demo.php" method="get"> 
 <input type="hidden" name="a" value="log" /> 
 user:<input type="text" name="user" size="20" value="test" /><br /><br /> 
 password:<input type="password" name="pass" size="12" value="123456" /><br /><br /> 
 pincode:<input type="text" name="pin" size="8" value="" />  
 <input type="button" value="getpin" onclick="getpinimg();"> 
   <img  id="pinimg" src="log_demo.php?a=pin" onclick="getpinimg();" / alt="一个完整php验证码实例程序 " >  
 <input type="submit" value="submit"><br /> 
</form> 
</body> 
</html>

log_demo.php代码如下:

<?php
require_once ("log_aux.php");
if ($_get[&#39;a&#39;] == "pin") {
    getpinimg();
    exit;
}
if ($_get[&#39;a&#39;] == "log") {
    $ret = checkpincookie($_get[&#39;pin&#39;], 300);
    if ($ret < 0) { //开源代码phprm.com
        echo "pin error:$ret ";
        exit;
    }
    // check user name and password.
    echo "ok..$ret ";
    if ("123xx" == 123) {
        echo "dddd ";
    }
    echo $_get[&#39;u&#39;];
}
?>

log_aux.php代码如下:

<?php
$magic_a = "www.phprm.com34589";
$magic_b = "234566***+";
function getpincookie($pin_code) {
    global $magic_a;
    global $magic_b;
    $now = time();
    $client_ip = $_server[&#39;remote_addr&#39;];
    $pin = md5($now . $client_ip . $magic_a . $pin_code . $maigc_b) . $now;
    return $pin;
}
function checkpincookie($pin_code_in, $timeout = 300) // 5 miniuteswww.phprm.com
{
    global $magic_a;
    global $magic_b;
    $pin = substr($_cookie[&#39;pin&#39;], 0, 32);
    $time = substr($_cookie[&#39;pin&#39;], 32);
    $now = time();
    if ($now - $time > $timeout) {
        return -100; // time_out
        
    }
    $pin_code_in = strtolower($pin_code_in);
    $client_ip = $_server[&#39;remote_addr&#39;];
    $pin_2 = md5($time . $client_ip . $magic_a . $pin_code_in . $maigc_b);
    if ($pin === $pin_2) {
        return 0;
    } else {
        return -200; // pincode is error.
        
    }
}
function getpinimg() {
    // $rnd = rand(0, 10);
    $rnd = 0;
    $path = "./www.phprm.com/" . substr("00000$rnd", -4);
    for ($i = 0; $i < 4; ++$i) {
        if (__getpinimg($path)) {
            break;
        }
    }
    exit;
}
function __getpinimg($path) {
    require ("$path/pinmap.php");
    $pinv = $pin[rand(0, $pin_max) ];
    list($file, $pin_code) = explode(&#39;#&#39;, $pinv);
    $filepath = "$path/$file$pin_ext";
    //  output pincode image.
    $fh = fopen($filepath, "rb");
    if (!$fh) {
        return false;
    }
    $data = fread($fh, 10240); // php just read max size: 8k.
    fclose($fh);
    if (strlen($data) < 200) {
        return false;
    }
    // set cookie;
    header("content-type: image/jpeg");
    $pin_code = strtolower($pin_code);
    $pin = getpincookie($pin_code);
    setcookie("pin", $pin);
    echo $data;
    return true;
}


永久链接:

转载随意!带上文章地址吧。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:php非法字符过滤 Nächster Artikel:php简单数据保存程序实例