ホームページ  >  記事  >  php教程  >  一个完整php验证码实例程序

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

WBOY
WBOYオリジナル
2016-05-25 16:40:381126ブラウズ

<!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;
}


永久链接:

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。