一个完整php验证码实例程序 |
时间:2015-01-23 来源:西部数据 作者:西部数据 |
|
- <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.phpfensi.com/tr/xhtml1/dtd/xhtml1-transitional.dtd">
- <html lang="en-us" 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) {
- echo "pin error:$ret ";
- exit;
- }
-
- echo "ok..$ret ";
- if ("123xx" == 123) {
- echo "dddd ";
- }
- echo $_get['u'];
- }
log_aux.php代码如下:
- <?php
- $magic_a = "www.phpfensi.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)
- {
- 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;
- }
- $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;
- }
- }
-
- function getpinimg()
- {
-
- $rnd = 0;
- $path = "./www.phpfensi.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";
-
-
- $fh = fopen($filepath, "rb");
- if (!$fh) {
- return false;
- }
- $data = fread($fh, 10240);
- fclose($fh);
-
- if (strlen($data) < 200) {
- return false;
- }
-
- header("content-type: image/jpeg");
- $pin_code = strtolower($pin_code);
- $pin = getpincookie($pin_code);
- setcookie("pin", $pin);
-
- echo $data;
- return true;
- }
|
|
|
|