一个完整php验证码实例程序
<!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();" />
<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;
}永久链接:http://www.phprm.com/develop/fs4748.html
转载随意!带上文章地址吧。