ajax异步登录
以下是ajax代码示例:
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript"> function validation() { var name = document.getElementById("username").value; var pwd = document.getElementById("password").value; var postStr = "username="+name+"&password="+pwd; ajax("connect.php",postStr,function(result){ document.getElementById("info").innerHTML=result; }); } function ajax(url,postStr,onsuccess) { var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //创建XMLHTTP对象,考虑兼容性。XHR xmlhttp.open("POST", url, true); //“准备”向服务器的GetDate1.ashx发出Post请求(GET可能会有缓存问题)。这里还没有发出请求 //AJAX是异步的,并不是等到服务器端返回才继续执行 xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) //readyState == 4 表示服务器返回完成数据了。之前可能会经历2(请求已发送,正在处理中)、3(响应中已有部分数据可用了,但是服务器还没有完成响应的生成) { if (xmlhttp.status == 200) //如果Http状态码为200则是成功 { onsuccess(xmlhttp.responseText); } else { alert("AJAX服务器返回错误!"); } } } xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); //不要以为if (xmlhttp.readyState == 4) {在send之前执行!!!! xmlhttp.send(postStr); //这时才开始发送请求。并不等于服务器端返回。请求发出去了,我不等!去监听onreadystatechange吧! } </script> </head> <body> 用户名:<input id="username" name="username" type="text" /> <BR /> 密码:<input id="password" name="password" type="password" /> <BR /> <input type="button" name="button" value="提交" onclick="validation();" /> <div id="info"></div> </body> </html>
php
<?php $con = mysql_connect('localhost','root','root'); if(!$con) { die('error:'.mysql_error()); } mysql_select_db("ajax-login",$con); $result = mysql_query("select * from user where username='$_POST[username]'"); while($row = mysql_fetch_array($result)) { if($row['password'] == md5($_POST['password'])) { header("Location:success.php"); } else { echo 'error'; } } //echo "<br/>"; //print_r($_POST['password']);exit(); ?>
mysql
/* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50553 Source Host : localhost:3306 Source Database : ajax-login Target Server Type : MYSQL Target Server Version : 50553 File Encoding : 65001 Date: 2017-12-05 14:32:16 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(30) NOT NULL COMMENT '用户名', `password` varchar(32) NOT NULL COMMENT '密码', `login_time` int(10) DEFAULT NULL COMMENT '登录时间', `login_ip` varchar(32) DEFAULT NULL COMMENT '登录IP', `login_counts` int(10) NOT NULL DEFAULT '0' COMMENT '登录次数', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES ('1', 'demo', 'fe01ce2a7fbac8fafaed7c982a04e229', '0', '', '0'); INSERT INTO `user` VALUES ('2', 'admin', 'admin', '0', '', '0');