<!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['a'] == "pin") { getpinimg(); exit; } if ($_get['a'] == "log") { $ret = checkpincookie($_get['pin'], 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['u']; } ?>
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['remote_addr']; $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['pin'], 0, 32); $time = substr($_cookie['pin'], 32); $now = time(); if ($now - $time > $timeout) { return -100; // time_out } $pin_code_in = strtolower($pin_code_in); $client_ip = $_server['remote_addr']; $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('#', $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; }
永久链接:
转载随意!带上文章地址吧。