PHP是一门很好的语言,可以很方便的开发web应用程序,下面介绍一下PHP如何通过AJAX方式实现登录功能:

1 login.php

登录界面中,javascript脚本用ajax方式异步请求dologin.php,dologin.php负责用户信息验证(包括验证码,php生成验证码可以自行搜索).登录界面的代码如下:

 <?php session_start();?>
<!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=gb2312" />
<title>login</title>
<link rel="stylesheet" type="text/css" href="CSS/login.css" />
<script src="JS/ajaxhelper.js" type="text/javascript"></script>
<script src="JS/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
function chkForm() {
if (m$('username').value == "") { alert('用户名不能为空.');
m$('username').focus();
return false; }
if (m$('password').value == "") { alert('密码不能为空.');
m$('password').focus();
return false; }
if (m$('password').value != "" && m$('username').value != "") { var xmlhttp = createRequest();
if (xmlhttp) {
m$('loading').innerHTML = "<font color='red'>loading...</font>";
var username = m$('username').value;
var pwd = m$('password').value;
var code = m$('txtCode').value;
var url = "dologin.php";
xmlhttp.open("POST", url, true);
xmlhttp.onreadystatechange = ValidateResult;
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send("username=" + escape(username) + "&password=" + escape(pwd) + "&code=" + escape(code)); } else {
alert('xmlHttp创建失败.'); } function ValidateResult() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
if (xmlhttp.responseText != "") { //window.alert(xmlhttp.responseText);
var obj = eval("(" + xmlhttp.responseText + ")");
if (obj.result == true) {
alert("提示:" + obj.info);
window.location = 'index.php'; } else {
alert("错误:" + obj.info); }
} else {
window.alert("从服务器获取失败"); window.location.reload();
}
m$('loading').innerHTML = "";
}
} } } } function m$(id) {
return document.getElementById(id);
} function changeCode() {
var xmlhttp = createRequest();
if (xmlhttp) {
m$('loading').innerHTML = "<font color='red'>loading...</font>";
var dt = new Date().getTime();
// alert(dt);
var url = "function/imagecode.php?dummay" + escape(dt);
xmlhttp.open("GET", url, true);
xmlhttp.onreadystatechange = ValidateResult;
xmlhttp.send(null); } else {
alert('xmlHttp创建失败.'); } function ValidateResult() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var dt = new Date().getTime();
var url = "function/imagecode.php?dummay" + escape(dt);
m$('imgCode').src = "function/imagecode.php?dummay" + escape(dt);
m$('loading').innerHTML = "";
}
} }
} function showTool() {
$('#divToolTip').css("display", "block");
} function hideTool() {
$('#divToolTip').css("display", "none");
}
window.onload = initPage; function initPage() {
$('#divToolTip').css("display", "none");
}
</script>
</head>
<body>
<div style="background-color:#2A3F55; height:80px;"> </div>
<div style="min-height:500px;"> <div class="left"> <div style="margin:120px auto auto auto; height:300px; text-align:left">
<div style="font-size:26px;color:#2A3F55; text-align:center;">Ajax PHP Demo System
<img src="Images/appstorm-icon.png" alt="appcation storm image" style="position:relative;top:-18px; left:-12px; vertical-align:middle; text-align:center;font-size:10px; width:65px; height:46px;"/>
</div>
<br/>
<hr style="border:dashed thin #2A3F55;width:70%; text-align:center;"/>
<div style="font-size:13px;color:#999999; margin:20px auto 0 auto; padding-left:200px;">
Author:<a href="#" onmousemove="showTool();" onmouseout="hideTool();">wangming</a>
</div>
<div style="font-size:13px;color:#999999;margin:20px auto auto auto; padding-left:200px;">DateTime:2009-9-1</div>
<div style="font-size:13px;color:#999999;margin:20px auto auto auto; padding-left:200px;">Version:1.0.0</div>
<div style="font-size:13px;color:#999999;margin:20px auto auto auto; padding-left:200px;">Email:wangmingemail@163.com </div>
<div id="divToolTip">
<img src="Images/ming.jpg" height="86px;"/>
<span class="authordes">
<br/>
姓名:wangming<br/>
电商06-2<br/>
</span> </div> </div> </div> <div class="right"> <form>
<br/>
<table class="flogin">
<tr>
<td>用户名:</td>
<td><input type="text" name="username" id="username"/></td>
<td></td>
</tr>
<tr>
<td>密&nbsp;&nbsp;&nbsp;码:</td>
<td><input type="password" name="password" id="password" /></td>
<td></td>
</tr>
<tr>
<td>验证码:</td>
<td>
<input type="text" name="txtCode" id="txtCode" size="12" />&nbsp;
<img src="function/imagecode.php" id="imgCode" alt="image code" height="22px;" style=" vertical-align:bottom;"/>
</td>
<td><input type="button" class="btnrefresh" onclick="changeCode();" /></td>
</tr>
<tr>
<td></td>
<td><input type="button" class="btnlogin" onclick="chkForm();" /></td>
<td></td>
</tr>
<tr>
<td></td>
<td><span id="loading"></span></td>
<td><span id="code"></span></td>
</tr> </table>
</form>
</div> </div>
<div style="background-color:#2A3F55; height:60px; margin:auto 0 0 0; clear:both; text-align:center; line-height:60px; color:#FFFFFF;font-size:12px;">
&copy;Copyright 2015.
</div>
</body>
</html>

2 ajaxhelper.js

 function createRequest() {
try {
request = new XMLHttpRequest();
} catch (tryMS) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (otherMS) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = null;
}
}
}
return request;
} function getActivatedObject(e) {
var obj;
if (!e) {
// early version of IE
obj = window.event.srcElement;
} else if (e.srcElement) {
// IE 7 or later
obj = e.srcElement;
} else {
// DOM Level 2 browser
obj = e.target;
}
return obj;
} function addEventHandler(obj, eventName, handler) {
if (document.attachEvent) {
obj.attachEvent("on" + eventName, handler);
} else if (document.addEventListener) {
obj.addEventListener(eventName, handler, false);
}
}

3 dologin.php

 <?php
session_start();
header("Content-type:text/html;charset=gb2312");//防止返回的中文乱码
$name=$_POST['username'];
$pwd=$_POST['password'];
$imagecode=$_POST['code'];
if(strtoupper($imagecode)==$_SESSION["code"])
{
include("conn/conn.php");
$sql="select studentName,studentPwd from tbstudent where studentId='".$name."'";
$result=mysql_query($sql,$conn);
if($row=mysql_fetch_assoc($result))
{
if($pwd==$row['studentPwd'])
{
$_SESSION['username']=$row['studentName'];
//echo "{'result':true,'info':'登陆成功!','code':'".$_SESSION["code"]."'}";
echo "{'result':true,'info':'登陆成功!'}"; }
else
{
echo "{'result':false,'info':'密码错误!'}";
}
}
else
{
echo "{'result':false,'info':'该用户不存在!'}";
}
}
else
{
echo "{'result':false,'info':'验证码错误!'}";
}
?>

4 conn.php

 <?php
$conn=$mysql_connect("localhost","root", "");
mysql_select_db("bbs",$conn);
mysql_query("SET NAMES GB2312");
?>

5 user.php

 <?php
class Users {
function Users() {
}
function checkLogin($username, $userpwd) {
try {
mysql_connect("localhost", "root", "123");
mysql_select_db("studentdb");
mysql_query("SET NAMES GB2312");
$sql = "select userid from tbuser where username='$username' and userpwd='" . md5(trim($userpwd)) . "'";
$result = mysql_query($sql);
if ($result) {
$arr = mysql_fetch_row($result);
$uid = $arr[0];
if ($uid != "") {
return "true|$uid login ok.$sql";
mysql_close();
} else {
return "false|login failed!$sql";
mysql_close();
}
} else {
return "false|$result link db failed!";
mysql_close();
}
}
catch(Exception $ex) {
return "false|$ex";
mysql_close();
}
}
function AddUser($name, $pwd) {
try {
mysql_connect("localhost", "root", "123");
mysql_select_db("studentdb");
mysql_query("set names gb2312");
$sql0 = mysql_query("select userid from tbuser where username='$name'");
$info0 = mysql_fetch_array($sql0);
$userid = $info0[0];
if ($info0 != false) {
return "false | $name is exisis.(id:$userid)";
}
$pwd = md5(trim($pwd));
$query = mysql_query("insert into tbuser(username,userpwd)values('$name','$pwd')");
$error = mysql_errno();
if ($query) {
return "true | add ok";
} else {
return "false | $error";
}
}
catch(Exception $ex) {
return "false | $ex";
}
}
function DeleteUser($name) {
mysql_connect("localhost", "root", "123");
mysql_select_db("studentdb");
mysql_query("set names gb2312");
$name = trim($name);
$sql0 = mysql_query("select userid from tbuser where username='$name'");
$info0 = mysql_fetch_array($sql0);
if ($info0 != false) {
if (mysql_query("delete from tbuser where username='$name'")) {
return "true | delete ok.(id:" . $info0[0] . ")";
} else {
return "false | 删除失败";
}
} else {
return "false | 删除失败 $name 不存在";
}
}
function UpdateUser($id, $name, $pwd) {
if (is_numeric(intval(trim($id)))) {
if ($id && $name && $pwd) {
mysql_connect("localhost", "root", "123");
mysql_select_db("studentdb");
mysql_query("set names gb2312");
$pwd = md5(trim($pwd));
$isexists = mysql_query("select * from tbuser where userid='$id'");
if (mysql_fetch_array($isexists)) {
$sql0 = mysql_query("update tbuser set username='$name',userpwd='$pwd' where userid= $id");
if ($sql0) {
return "ture | update ok";
} else {
return "false | 更新失败";
}
} else {
return "false | usrid=$id not exists.";
}
} else {
return "false |id=$id name=$name and pwd=$pwd .At least one of them is null.";
}
} else {
return "false | $id is not type of int.";
}
}
}
?>

与登录无关,只为了记录一下PHP如何在数据库MYSQL上实现CURD操作.

6 效果图

Ajax+PHP+MySQL 登陆示例的更多相关文章

  1. AJAX 与 MySQL

    AJAX 与 MySQL AJAX 可用来与数据库进行交互式通信. AJAX 数据库实例 下面的实例将演示网页如何通过 AJAX 从数据库读取信息: 实例   Select a person:   P ...

  2. JAVA使用jdbc连接MYSQL简单示例

    以下展示的为JAVA使用jdbc连接MYSQL简单示例: import java.sql.DriverManager; import java.sql.ResultSet; import java.s ...

  3. Android客户端与服务端交互之登陆示例

    Android客户端与服务端交互之登陆示例 今天了解了一下android客户端与服务端是怎样交互的,发现其实跟web有点类似吧,然后网上找了大神的登陆示例,是基于IntentService的 1.后台 ...

  4. jQuery Ajax: $.post请求示例

    jQuery Ajax: $.post请求示例 leyangjun.html页面 <html> <head> <meta http-equiv="Content ...

  5. MySQL 登陆

    #==========================登陆mysql ============================================ # 登陆用户名:-u,登陆IP: -h, ...

  6. jquery Ajax请求示例,jquery Ajax基本请求方法示例

    jquery Ajax请求示例,jquery Ajax基本请求方法示例 ================================ ©Copyright 蕃薯耀 2018年5月7日 https: ...

  7. PHP MYSQL登陆和模糊查询

    PHP MYSQL登陆和模糊查询   PHP版本 5.5.12    MYSQL版本 5.6.17  Apache 2.4.9 用的wampserver 一.PHPMYSQL实现登陆:  一共含有两个 ...

  8. (转)MySQL登陆后提示符的修改

    MySQL登陆后提示符的修改 方法一:mysql命令行修改方式 mysql>prompt \u@night \r:\m:\s-> PROMPT set to '\u@night \r:\m ...

  9. MySql登陆密码忘记了 怎么办?

    MySql登陆密码忘记了 怎么办?root密码:连root密码忘记没用root进修改mysql数据库user表咯 root密码: 方法一:MySQL提供跳访问控制命令行参数通命令行命令启MySQL服务 ...

随机推荐

  1. 分享10条Visual Studio 2012的开发使用技巧

    使用Visual Studio 2012有一段时间了,并不是追赶潮流,而是被逼迫无可奈何.客户要求的ASP.NET MVC 4的项目,要用.NET 4.5来运行.经过一段时间的摸索,得到一点经验和体会 ...

  2. 利用CSS3 clip-path裁剪各种图形。

    'clip-path'是css3的一个强大属性,我们可以利用它来绘制各种各样的图形,当然不只是这些,接下来一起看看它的强大功能吧. 首先介绍的是clip-path里面的polygon功能,我们可以通过 ...

  3. JAVA_Collection容器

    因为项目的需要,今天抽时间把JAVA中的容器复习了一下,为了以后的不时之需,现在把它记下来. 容器有其名,知其意,用来盛放数据的集合,JAVA中为我们提供了三种容器类:set.list.map,三种容 ...

  4. Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)二

    接着上一篇博客<Spring整合MyBatis(Maven+MySQL)一>继续. Spring的开放性和扩张性在J2EE应用领域得到了充分的证明,与其他优秀框架无缝的集成是Spring最 ...

  5. 初探JavaScript(一)——也谈元素节点、属性节点、文本节点

    Javascript大行其道的时候,怎么能少了我来凑凑热闹^_^ 基本上自己对于js的知识储备很少,先前有用过JQuery实现一些简单功能,要论起JS的前世今生,来龙去脉,我就一小白.抱起一本< ...

  6. 判断js数据类型和clone

    判断返回js数据类型 function judgeType(arg){//判断返回js数据类型 return Object.prototype.toString.call(arg).slice(8,- ...

  7. Windows Azure Virtual Machine (31) 迁移Azure虚拟机

    <Windows Azure Platform 系列文章目录> 为什么要写这篇Blog? 之前遇到过很多客户提问: (1)我之前创建的虚拟机,没有加入虚拟网络.现在需要重新加入虚拟机网络, ...

  8. JPG渐进 & PNG/PNG24 交错测试

    今天由同事说起,PS导出PNG时,有个选项"交错"是干啥的,想起这也是个问题,所以特意搞了个测试页面: 引用网上"交错-就是类似旧式电视的隔行扫描,让图片只花50%的时间 ...

  9. python生成随机密码

    有时候我们会想生成一个随机密码,这样我们通过Python中的一些随机方法,就可生成我们任意长度和复杂度的密码,代码如下: # -*- coding=utf-8 -*- import random im ...

  10. 动画库Animate.css

    笔记分享: 用法:到官网(http://daneden.github.io/animate.css/),下载animate.min.css文件.点击这里 1.首先引入animate css文件 < ...