Maison >php教程 >PHP源码 >登录验证新思路,演示登录代码.

登录验证新思路,演示登录代码.

PHP中文网
PHP中文网original
2016-05-25 17:00:151219parcourir

需要用到 jquery 以及 md5 相关javascrip方法. 代码中直接引用了外部链接. 如果运行出现状况, 请单独下载,修改代码.

演示数据只有一个用户 id:test. passwd:abc123. 用文本存放数据. 简单演示. 喜欢记得收藏, 转载请注明出处.

<?php


define(&#39;H_MAX&#39;, (256*8)-1); 

@ $a = isset($_GET[&#39;a&#39;]);
@ $id = $_POST[&#39;id&#39;];
@ $passwd = $_POST[&#39;passwd&#39;];

if($a) {
$mstr = get_mstr(); 
$hstr = get_hstr(); 
// $hstr = 256*2-1;
$ua = get_u_i(); 
$str = md5($ua[&#39;passwd&#39;].dechex($mstr+$hstr).dechex($hstr));
$ua[&#39;str&#39;] = dechex($hstr);
set_u_i($ua); 
echo json_encode(array(&#39;mstr&#39;=>$mstr, &#39;str&#39;=>$str));
exit;
}


if(isset($_POST[&#39;id&#39;])) {

$st = false;
$ua = get_u_i();
if($id && ($ua[&#39;id&#39;] == $id) && (md5($ua[&#39;passwd&#39;].$ua[&#39;str&#39;]) == $passwd)) {
$st=true;
}
if($st) { 
$ua[&#39;str&#39;] = dechex(get_hstr());
set_u_i($ua); 
echo <<<EOT
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test login</title>
</head>
<body>
胜利大联欢.
</body>
</html>
EOT;
}
else {

}
exit;
}

$ua = array(&#39;id&#39;=>&#39;test&#39;, &#39;passwd&#39;=>md5(&#39;abc123&#39;), &#39;str&#39;=>&#39;&#39;);
set_u_i($ua); 

function get_mstr() {
$t = explode(&#39; &#39;, microtime());
$time = $t[0] * 1000;
$time = intval($time);
//$time = dechex($time);
return $time;
}

function get_hstr() {
$h_max = H_MAX;
return mt_rand(0, $h_max);
}


function get_u_i() {
$file = &#39;test_login.txt&#39;;
$str = file_get_contents($file);
$str = trim($str);
@list($id, $passwd, $str) = explode("t", $str);
return array(&#39;id&#39;=>$id, &#39;passwd&#39;=>$passwd, &#39;str&#39;=>$str);
}

function set_u_i($ua) {
$file = &#39;test_login.txt&#39;;
file_put_contents($file,implode("t", $ua));
}

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test login</title>
<script src="http://fuck.thinksaas.cn/get/http://pajhome.org.uk/crypt/md5/2.2/md5-min.js"type="text/javascript"></script>
<script src="http://fuck.thinksaas.cn/get/http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"type="text/javascript"></script>
<script type="text/javascript">
$(function(){
var h_max = <?=H_MAX;?>;
var last_id=&#39;&#39;;
var mstr=&#39;&#39;;
var str=&#39;&#39;;
var $id = $(&#39;#id&#39;);
var $passwd = $(&#39;#passwd&#39;);
var $form = $("form:first");

$id.focus(); 

$id.blur(function(a,b){
if(last_id == $id.val()) return ;
last_id = $id.val();
var o = s1();
if(o) {
mstr = o.mstr;
str = o.str;
}
});
$form.submit(function() {
$(&#39;#submit&#39;).prop(&#39;disabled&#39;,true);
var p = md5($passwd.val());
var st=0; 
for(var i=0;i<=h_max;i++){
var t=&#39;&#39;+(p)+(parseInt(mstr)+parseInt(i)).toString(16)+i.toString(16);
if(str==md5(t)) {
st=1; 
$passwd.val(md5(p+i.toString(16)));
break;
};
}
if(!st) {

}
//$(&#39;#submit&#39;).attr(&#39;disabled&#39;,&#39;disabled&#39;);
return true;
});

function md5(s) {
return hex_md5(s);
}

function s1(){
var a;
var e;
$.ajax({
url:"?a",
type:"POST",
timeout:10000,
data: {},
dataType:"json",
async: false,
error: function(XMLHttpRequest, textStatus, errorThrown){
e=true;
//alert(textStatus+"&"+errorThrown);
},
success: function(data, textStatus){
a = data;
}
});
if(e) return false;
return a;
}
});
</script>
</head>
<body>
<form action=""method="post"enctype="application/x-www-form-urlencoded"name="form1"target="_self"id="from1">
<label>用户名:
 <input name="id"type="text"id="id">
</label>
<label>密码:
 <input name="passwd"type="password"id="passwd">
</label>
<label>
 <input name="submit"type="submit"id="submit"value="登录">
</label>
</form>
</body>
</html>
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn