文档库 最新最全的文档下载
当前位置:文档库 › ajax与php结合实现用户登录(详解)

ajax与php结合实现用户登录(详解)

ajax与php结合实现用户登录(详解)
ajax与php结合实现用户登录(详解)

这是login.html页面

无标题文档

这是do_login.php页面

/*********

**

Writer:David

Date :2013-07-01

Describe:实现登录

**

**********/

//数据库连接,smarty引入,封装函数的调用

require("config/config.php");

require("config/template.inc.php");

require("include/fun.inc.php");

if(isset($_POST['sub']))

{

//定义变量,获取用户名,密码

$user = $_POST['user'];

$pwd = $_POST['pwd'];

if($_POST['textfield3']==$_SESSION['rand']){

//查询用户名,密码

$sql = "select * from `st_user` where `u_name`='".$user."' and `u_pwd`='".$pwd."'";

$query = mysql_query($sql);

$rs = mysql_fetch_assoc($query);

$num = mysql_num_rows($query);

if(1==$num)

{

$_SESSION['user'] = $rs['u_name'];

$_SESSION['pwd'] = $rs['u_pwd'];

reto('index.php','正在登录…','1');

}

else

{

reto('login.html','登录失败…','2');

}

}

else

{

reto('login.html','登录失败…','2');

}

}

else

{}

?>

这是js页面

// JavaScript Document

function createXMLHttpRequest()

{

if(window.XMLHttpRequest)

{

XMLHttp=new XMLHttpRequest();

}//mozilla浏览器

else if(window.ActiveXObject)

{

try

{

XMLHttp=new ActiveXObject("Msxml2.XMLHTTP");

}

catch(e){}

try

{

XMLHttp=new ActiveXObject("Microsoft.XMLHTTP");

}

catch (e){}

if(!XMLHttp)

{

window.alert("不能创建XMLHttpRequest对象实例");

return false;

}

}

}

//登录界面的验证码

function changeverify()

{

var date=new Date();

ttime=date.getTime();

document.getElementById("verifyimg").src="yzm.php?"+ ttime; }

//登录界面的用户名

function getuser()

{

createXMLHttpRequest();

var id=document.getElementById('user').value;

var url="user.php?pid="+id;

//alert(url);

XMLHttp.open('GET',url,true);

XMLHttp.onreadystatechange=getC1;

XMLHttp.send(null);

}

function getC1()

{

if(XMLHttp.readyState==4)

{

//alert(XMLHttp.readyState);

if(XMLHttp.status==200)

{

//alert(XMLHttp.responseText);

document.getElementById('abcd').innerHTML=XMLHttp.responseText;

}

}

}

//登录界面的密码

function getpwd()

{

createXMLHttpRequest();

var user=document.getElementById('user').value;

var pwd=document.getElementById('pwd').value;

var url="pwd.php?user="+user+"&pwd="+pwd;

//alert(url);

XMLHttp.open('GET',url,true);

XMLHttp.onreadystatechange=getp;

XMLHttp.send(null);

}

function getp()

{

if(XMLHttp.readyState==4)

{

//alert(XMLHttp.readyState);

if(XMLHttp.status==200)

{

//alert(XMLHttp.responseText);

document.getElementById('mima').innerHTML=XMLHttp.responseText;

}

}

}

//登录界面的验证码

function getyzm()

{

createXMLHttpRequest();

var id=document.getElementById('yzm').value;

var url="yz.php?pid="+id;

//alert(url);

XMLHttp.open('GET',url,true);

XMLHttp.onreadystatechange=getC;

XMLHttp.send(null);

}

function getC()

{

if(XMLHttp.readyState==4)

{

//alert(XMLHttp.readyState);

if(XMLHttp.status==200)

{

//alert(XMLHttp.responseText);

document.getElementById('yz').innerHTML=XMLHttp.responseText;

}

}

}

这里是几个php页面

//yzm.php

/****验证码****/

/*

功能:'rand'为session传递的验证码值。

作者:David

日期:XXXX

*/

Header("Content-type: image/gif");

/*

* 初始化

*/

$border = 0; //是否要边框1要:0不要

$how = 4; //验证码位数

$w = $how*20; //图片宽度

$h = 25; //图片高度

$fontsize = 9; //字体大小

$alpha = "abcdefghijkmnopqrstuvwxyz"; //验证码内容1:字母

$number = "023456789"; //验证码内容2:数字

$randcode = ""; //验证码字符串初始化

srand((double)microtime()*1000000); //初始化随机数种子

$im = ImageCreate($w, $h); //创建验证图片

/*

* 绘制基本框架

*/

$bgcolor = ImageColorAllocate($im, 255, 255, 255); //设置背景颜色

ImageFill($im, 0, 0, $bgcolor); //填充背景色

if($border)

{

$black = ImageColorAllocate($im, 0, 0, 0); //设置边框颜色

ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//绘制边框

}

/*

* 逐位产生随机字符

*/

for($i=0; $i<$how; $i++)

{

$alpha_or_number = mt_rand(0, 1); //字母还是数字

@$str = $alpha_or_number ? $alpha : $number;

$which = mt_rand(0, strlen($str)-1); //取哪个字符

$code = substr($str, $which, 1); //取字符

$j = !$i ? 4 : $j+15; //绘字符位置

$color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字符随即颜色

ImageChar($im, $fontsize, $j, 4, $code, $color3); //绘字符

$randcode .= $code; //逐位加入验证码字符串

}

/*

* 添加干扰

*/

for($i=0; $i<5; $i++)//绘背景干扰线

{

$color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色

ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干扰线

}

for($i=0; $i<$how*40; $i++)//绘背景干扰点

{

$color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色

ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点

}

//把验证码字符串写入session

session_start();

$_SESSION['rand'] = $randcode;

/*绘图结束*/

Imagegif($im);

ImageDestroy($im);

/*绘图结束*/

?>

//user.php

/*********

**

Writer:David

Date :2013-07-02

Describe:实现验证登录名

**

**********/

//数据库连接,smarty引入

require("config/config.php");

require("config/template.inc.php");

$sql = "select * from `st_user` where `u_name`='".$_GET['pid']."'";

$query = mysql_query($sql);

$num = mysql_num_rows($query);

if($num>0)

{

echo "";exit;

}

else

{

echo "该用户名不合法";exit;

}

?>

//pwd.php

/*********

**

Writer:David

Date :2013-07-03

Describe:实现验证登录密码

**

**********/

//数据库连接,smarty引入

require("config/config.php");

require("config/template.inc.php");

$sql = "select * from `st_user` where `u_name`='".$_GET['user']."' and `u_pwd`='".$_GET['pwd']."'";

$query = mysql_query($sql);

$num = mysql_num_rows($query);

if($num>0)

{

echo "";exit;

}

else

{

echo "密码错误";exit;

}

?>

//yz.php

/*********

**

Writer:David

Date :2013-07-03

Describe:实现登录验证验证码

**

**********/

//数据库连接,smarty引入

require("config/config.php");

require("config/template.inc.php");

if($_GET['pid']==$_SESSION['rand'])

{

echo "";exit;

}

else

{

echo "验证码输入错误";exit;

}

?>

C盘命令符

CMD命令 一、常用命令 1、cd.. cd.. 退到次一级目录。 2、cd+文件夹名字进入一个文件夹。 3、md+文件夹名字创建一个指定名称的文件夹。 4、rd+文件夹名字删除一个指定名称的文件夹。(前提是文件夹里没有任何文件) 5. copy+源路径+文件名+目标路径拷贝一个文件到目标路径。 6、del+文件名删除一个指定名称的文件。(至删除文件,不删除文件夹) 7、dir+文件夹名或盘符查看指定的目录或硬盘里的文件和文件夹。 (1)dir的参数: dir/W:宽屏显示,一排显示5个文件名,而不会显示修改时间,文件大小等信息; dir/S:显示当前目录及其子目录下所有的文件; dir/a 查看所有文件包括隐藏文件; dir/p 分页查看。 8、format+盘符格式化硬盘。 9、ren+旧文件名+新文件名更改文件名为指定文件名。 10、type+文件名查看文件内容。(一般用来看bat或txt文件) 11、cls 清屏 12、deltree 删除目录树。 13、help 提供帮助命令。 二、常用网络命令 1、fport 查看系统端口和端口上运行的程序。 2、netstat -an 查看所有连接本机的IP。 3、ipconfig /all 查看所有连接本机的IP。 4、telnet+IP 端口连接对方机器某个端口 5、net user 查看本机用户。 6、net user 用户名密码 /add 建立一个用户。 7、net user 用户名 /del 删除一个用户。 8、net localgroup administrators+用户名 /add 把指定名称的用户添加到管理员。

用户登录验证程序的实现汇编

.486 CRLF MACRO MOV AH,0EH MOV AL,0DH INT 10H MOV AL,0AH INT 10H ENDM OUTX MACRO X MOV AH,09H MOV DX,OFFSET X INT 21H ENDM DA TAS SEGMENT USE16 BUF1 DB 'B08010530' BUF2 DB '11111' IN1 DB 20 DUP(?) IN2 DB 20 DUP(?) OUT1 DB 'please enter the username and the password:','$' OUT2 DB 'USERNAME:','$' OUT3 DB 'PASSWORD:','$' OUT4 DB '*','$' OUT5 DB 'ERROR!','$' OUT6 DB '----------WELCOME----------','$' ;此处输入数据段代码 DA TAS ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DA TAS,ES:DA TAS START:MOV AX,DATAS MOV DS,AX MOV ES,AX OUTX OUT1 CRLF OUTX OUT2 MOV BX,OFFSET IN1 MOV CX,20 LAST1:MOV AH,01H INT 21H MOV BYTE PTR [BX],AL CMP AL,0DH JZ JUMP1

INC BX LOOP LAST1 JUMP1: CRLF OUTX OUT3 MOV BX,OFFSET IN2 MOV CX,20 LAST2:MOV AH,07H INT 21H MOV BYTE PTR [BX],AL CMP AL,0DH JZ JUMP2 INC BX OUTX OUT4 LOOP LAST2 JUMP2: CRLF CMP1: MOV SI,OFFSET IN1 MOV DI,OFFSET BUF1 MOV CX,9 CLD REPE CMPSB JZ CMP2 OUTX OUT5 JMP EXIT CMP2:MOV SI,OFFSET IN2 MOV DI,OFFSET BUF2 MOV CX,5 CLD REPE CMPSB JZ SUCCESS OUTX OUT5 JMP EXIT SUCCESS: OUTX OUT6 EXIT: MOV AH,4CH INT 21H CODE ENDS END START

用户管理模块设计

用户管理模块设计 用户管理模块提供对用户信息的管理,包括用户注册、用户登录、用户权限管理、用户信息修改以及用户等级修改。 1、用户注册 根据用户表,设计相应的注册页面,注册页面包括用户名、密码、邮箱、部门、电话等信息,当用户进行注册时,填写这些信息,用户名是不能与已注册的用户名相同,填写完成后,提交注册请求,后台相应的Action会响应该动作,首先获取到页面发来的参数,然后将这些参数通过Session对象写入到数据库中,最后向用户提示注册成功与否。 2、用户登录 用户注册之后,就可以通过账户和密码登陆至平台。当用户提交登陆请求,后台相应的Action会响应该动作,首先获取到页面发来的用户名和密码,然后通过Query对象查询该用户是否存在且密码正确,最后将根据结果给用户发送跳转页面,如果用户存在且密码正确,则可进入平台主页面,否则,提示登陆错误信息。 3、用户权限管理 用户权限管理将用户分为普通用户和管理员,他们具有不同的权限,他们各自的权限如表1所示。此平台首次使用时,会内置一个超级管理员,有修改用户等级的权限。 表1不同用户权限授权

定义一个权限拦截器,它的功能是用来检验用户类型,对每一个需要管理权限的操作均进行拦截,同时检验用户类型,判断该用户类型是否可执行该操作,即可达到权限管理的作用。如果某操作在当前用户等级对应的操作范围内,则可正常访问,否则跳转到提示页面,提示用户权限不足。 4、用户信息修改 用户管理模块提供用户修改自己信息的功能。当进入信息修改界面,首先会获取Session中当前用户信息,供用户在当前信息基础上进行信息修改。当用户填写完修改信息,并发送修改请求后,后台将响应用户的请求,首先得到所有用户修改参数,然后将修改的信息设置到该对象中,最后更新数据库,将更新结果发送给用户。

php开发实例---用户登陆模块的实现(用户权限的控制、验证码的生成)

PHP开发一个用户登陆模块,关键技术(session会话、cookie应用、GD库应用)大家好,今日我们一起来开发一个PHP随机验证码的生成实例。首先,我们来看一下效果: 开发随机验证码使用到的函数有以下几个。如果有不明白这些函数的使用方法的朋友,请参考PHP5开发手册。 1.imagecreatetruecolor(); //创建一个真彩的画布 2.imagecolorallocate(); //分配颜色 3.imagefill(); //填充颜色 4.imagerectangle(); //画一个矩形,用于绘制验证码的边框 5.imagettftext(); //将文本内容写入到图像中 6.imagesetpixel(); //绘制一个单一像素 6imageline(); //绘制一条线 7.imagepng(); //输出图像 8.imagedesctroy(); //销毁图像,释放内容 PHP开发随机验证码的步骤与思路 1.获取随机验证码的内容 2.创建一个真彩画布,分配字体颜色跟背景颜色 3.开始绘画 4.输出图像 5.销毁图像 6.自定义一个函数用来获取随机验证码 (本人目前在淘宝网上注册了一家小小的店铺,主要营业服装之类的商品。有兴趣有需要的朋友请访问:https://www.wendangku.net/doc/025468557.html,可以直联系到本人!) 接下来我们开始开发,在网站的根目录下新建一个PHP文件(code.php):

//生成随机验证码 $num=4; $str=getCode($num,0); $_SESSION["code"]=$str; //1.创建图像,定义颜色 $width=$num*20; $height=25; $im=imagecreatetruecolor($width,$height); //1.1字体颜色 $color[] = imagecolorallocate($im,111,0,55); $color[] = imagecolorallocate($im,0,77,0); $color[] = imagecolorallocate($im,0,0,160); $color[] = imagecolorallocate($im,221,111,0); $color[] = imagecolorallocate($im,220,0,0); //1.2背景颜色 $bgcolor = imagecolorallocate($im,240,240,240); //2.开始绘画,使用imagefill()、imagerectangle()函数给图像增加背景颜色与边框颜色imagefill($im,0,0,$bgcolor); imagerectangle($im,0,0,$width-1,$height-1,$color[rand(0,4)]); //2.1使用imagettftext()函数,将文本内容写入到图像中 for($i=0;$i<$num;$i++){ imagettftext($im,14,rand(-20,20),5+(18*$i),20,$color[rand(0,4)],"msyh.ttf",$str[$i]); } //2.2使用imagesetpixel()增加小于100个的干扰点 for($i=0;$i<100;$i++){ //随机颜色 $c=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); imagesetpixel($im,rand(0,$width),rand(0,$height),$c); } //2.3使用imageline()增加小于$num个数的干扰线 for($i=0;$i<$num;$i++){ //随机颜色 $c=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); imageline($im,rand(0,$width),rand(0,$height),rand(0,$width),rand(0,$height),$c); } //3.输出图像,通过header()函数,告诉浏览器输出PNG图像格式,而不是文本形式header("Content-Type:image/png"); imagepng($im); //4.销毁图像,释放内容 imagedestroy($im); //5.自定义函数,获取随机验证码 functiongetCode($m=4,$type=0){ //随机验证码的内容 $str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

WEB、FTP、服务器群集、负载均衡配置详解

Windows网络服务搭建管理之3.《WEB/FTP(服务器群集)CA证书配置详解》 实验名称: 2.WEB/FTP(服务器群集/负载平衡)CA证书服务器的搭建和配置实验任务和目标:《总的目标》 在企业网络中实现IP地址的动态分配 配置DNS服务器,完成域名解析 利用IIS6.0配置企业Web网站 配置和管理FTP服务器 实现企业网络的RAS(远程访问服务) 利用证书服务实现安全性 网络负载平衡和服务器群集提高可靠性 多域间的访问 操作主机维护 活动目录数据库维护 监控服务器 有两个域一个是https://www.wendangku.net/doc/025468557.html,是公司主域另一个是收购一家公司的域https://www.wendangku.net/doc/025468557.html,用信任关系使它们互相访问 1、DHCP a.两个作用域 b.按80/20规则建立两台DHCP c.授权 d.为DNS,WEB,FTP等站点保留IP地址 e.作用域选项 f.DHCP数据库的备份 2、DNS a.独立建立两台DNS,作为域的DNS和其它域名解析 b.建立辅助DNS服务器 c.在每个DNS上建立转发器,互相转发解析请求 d.建立反向区域,为以后增加邮件做准备,并增加MX纪录 e.设置区域复制要求,一个域中的DNS记录只能被它的辅助DNS复制

3、web站点 a.做一个外部web站点,域名是https://www.wendangku.net/doc/025468557.html, b.做一个内部站点,域名是https://www.wendangku.net/doc/025468557.html, c.为sjd域建立一个站点,通过不同的端口访问,可以达到简单的隐蔽作用 d.在其它的计算机建立隐含共享,在web中建立虚拟目录,来访问其它计算机上的资源 本身站点匿名访问,虚拟目录要输入用户名和密码来进行访问,基本站点都可以访问,虚拟目录 只能本公司内的员工访问 e.为虚拟目录加上ca证书,来保证数据传输的安全 f.使用负载均衡来保证WEB的安全 4、FTP站点 a.为sjdwm使用serv-u建立ftp,建立一个总目录,目录下是每部门的目录,对于总目录结构任何人不能 进行修改,也不能在总目录下添加或删除东西;每部门员工只能在自己部门下上传东西,部门有一个 该部门的目录管理人员,此人可以整理目录内容;每人使用自己的账号登录FTP服务器,对主管的上传下载速度限制为40k,普通员工是20k,每个用户只能打开一个FTP连接,空闲5分钟就断开连接 b.为sjd建立普通FTP,使用域来隔离用户 c.使用一个服务器来对serv-u进行远程管理 5、DC a.建立域 b.为每部门建立OU c.OU中委派管理权 d.每个部门建立一个全局组,将本部门的员工加入到全局-安全组中 e.建立全局的通讯组,将本部门员工加入到全局-通讯组中,为以后的exchange做准备 f.在https://www.wendangku.net/doc/025468557.html,中建立一个全局-安全组,名字是sjd,目的是为本公司支持https://www.wendangku.net/doc/025468557.html,域的人员建立组便于 限制这些人使用https://www.wendangku.net/doc/025468557.html,域中资源,在https://www.wendangku.net/doc/025468557.html,域中建立本地域组,把sjd加入到本组,并对某个资料文件夹设置权限 e.建立额外DC,将基础结构主机转移到额外DC上 g.在DC上使用NTBACKUP建立计划备份任务,周一进行常规,周二到周五进行差异,便于以后进行授权和 非授权的还原 https://www.wendangku.net/doc/025468557.html,域要信任https://www.wendangku.net/doc/025468557.html,域 6、建立一台VPN服务器 a.为企业出差用户访问公司网络提供服务,IP地址由DHCP提供 b.要求外部用户只能在周一到周五的早8点到晚6点之间进行访问,必须属于一个vpn组 7、CA a.建立一个企业CA,为web站点颁发证书 8、远程管理及性能监测 a.对所以上述服务器进行pcanywhere的远程管理 b.在web上启+用web应答和FTP的性能警报,启用三大硬件的警报; 实验环境描述:

连接数据库 验证用户登录信息

连接数据库验证用户登录信息 procedure TForm1.Image4Click(Sender: TObject);varADOQuery1: TADOQuery; begin{数据库操作:判断用户和密码是否正确}if (edit1.Text<>'') and (edit2.Text<>'') then //第一种情况:用户输入了用户名和密码 beginChDir(ExtractFilePath(Application.ExeName)); //转到当前EXE文件所在目录ChDir('..');//转到上级目录ExeRoot := GetCurrentDir; //获取当前目录.并存放于ExeRoot中DataFile := GetCurrentDir+'\Data\dzyv1.mdb' ; //取得数据库文件dzyv1.mdb的路径ADOQuery1:= TADOQuery.Create(self); //动态创建ADOQuery组件ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataFile+';Persist Security Info=False;';ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add('se lect * from t_user where user_name="'+edit1.Text+'" and user_pass="'+edit2.Text+'" ');ADOQuery1.Open;if ADOQuery1.Eof then //数据集为空,即eof为true begin LogTimes := LogTimes+1; if messagebox(handle,'

功能模块设计

昆明理工大学 信息工程与自动化学院物联网工程专业 2012年级 学生姓名:王永达 毕业设计(论文)题目:拍卖交易系统APP的设计与实现 【毕业设计(论文)主要功能】 1、用户注册模块:任何安装了该APP的用户都可以注册,成为客户; 注册页面需要用户提供真实姓名,密码,邮箱,手机号,性别信息,只有格式核对之后方可注册成功,正式成为可以使用该APP所有功能的客户。 2、客户登录模块:该应用要求客户参与竞拍之前必须先登录系统,以 保证拍卖交易的真实性和可靠性;注册页面需要用户输入手机号,密码进行登录,登录时可以选择记住密码功能方便下次自动登录,登录时需要向后台服务器发起请求,以验证该用户是否真实已注册成为客户,如果未注册过则提示需要先注册才能登录。 3、查看拍卖商品模块:注册用户可以登录成功之后可以查看拍卖中的商品和已拍卖完成的商品;显示拍卖商品界面包括两个Tab(正在拍卖,已结束),点击之后可展示各自的商品列表。 4、查看拍卖商品详情模块:客户可以选择感兴趣的拍卖商品点击进入 查看拍卖详情和商品的详情,并在该界面展示参与竞拍的入口。 5、参与竞拍模块:当客户点击参与竞拍按钮之后,便跳转到填写竞拍 信息界面(包括竞拍价,收货地址),竞拍成功之后便能接收到系统的相关提示并受到短信通知。

6、添加拍卖商品模块:客户不仅可以在该应用中参与竞拍,还可以主动发起拍卖信息;在添加拍卖商品界面,需要客户填写商品的相关信息(商品的名称,商品的种类,商品的图片上传,最低起拍价,发货地址),点击添加按钮,添加成功之后,则跳转到管理拍卖商品界面。 7、管理拍卖商品模块:在模块中客户可以删除或者修改已发布的拍卖信息(注:前提必须是没有人竞拍之前或者竞拍已结束之后) 【毕业设计(论文)主要技术】 1、Android客户端和服务器端的通信时采用JSON 作为数据交互格式。 2、Android客户端底层使用HttpClient和服务器端进行通信。 3、采用Bmob这一开源的云端服务器为移动应用提供所需要数据。

php用户登录页面代码源代码

//登入页面 $conn=mysql_connect('127.0.0.1','root','')or die("连接失败"); mysql_select_db('tujian',$conn)or die("未找到该数据库"); define(ALL_PS,"vivid");mysql_query("set names GBK"); if($_POST[submit]){ $postcode=strtolower($_POST["code"]); $postcode=strtoupper($_POST["code"]); $uid=str_replace(" ","",$_POST[uid]); $sql="select * from users where `uid`='$_POST[uid]'"; $query=mysql_query($sql); $user=is_array($row=mysql_fetch_array($query)); $mi=$user?md5($_POST[pass].ALL_PS)==$row[pass]:FALSE; if($mi){ $_SESSION[uid]=$row[uid]; $_SESSION[name]=$row[name]; $_SESSION[id]=$row[id]; $_SESSION[user_shell]=md5($row[uid].$row[pass].ALL_PS); if( $_SESSION["code"]==$postcode){ echo""; }else{ echo"

验证码输入错误,请重新输入!
"; } } else{ echo"
用户名或密码输入错误
"; session_destroy(); } } ?>
用户名:

登录模块设计

登录功能模块设计 界面: 登录界面界面属性: 软件设计规格要求:

三层架构设计 设计指导:根据详细设计的要求,从最顶层开始,规划表示层、业务逻辑层、数据访问层等的功能/方法(哪些功能/方法该属于哪一层,在表示层甚至可以增加一个通用单元,用于将通用信息、通用方法等以类的形式组织,如教材的“CommonHelper.cs”单元)、处理和实现条件,从而为各层的类进行设计。 三层架构中的功能划分: 1、表示层设计(重点考虑对业务逻辑层的方法调用、界面事件、输入检查、界面控制等) 2、业务逻辑层:(为表示层提供方法,重点在于类的方法设计) 3、数据访问层(为业务逻辑层提供方法,通常包括对应数据表的增、删、查、改等方法) 表示层设计(重点考虑对业务逻辑层的方法调用、界面事件、输入检查、界面控制等) 技术处理: 1、如何统一提示信息? 在公用模块中定义规范的字符串常量,原系统是在公共模块(commonHelper)的“Localizable”类中定义。 2、进入主界面,如何隐藏登录界面? 在显示主界面后隐藏登录窗口(本类对象),方法:this.Visible=false; 将登录窗口(本类对象)保存到公共模块(commonHelper)的“LoginHelper”类的公有静态字段中,以便注销时可以再次显示 注销时显示登录窗口方法: LoginHelper.frmLogin.Visible = true; this.Close(); 3、如何根据用户类型处理主界面的功能菜单? 判断用户类型,若是管理员则隐藏“基本信息管理”主菜单项,然后显示主

界面 实现条件: 需要“判断用户名、密码与数据库是否一致”的方法,应由逻辑层提供。 业务逻辑层:(为表示层提供方法,重点在于类的方法设计) 类的方法设计: 数据访问层(为业务逻辑层提供方法,通常包括对应数据表的增、删、查、改等方法) 涉及数据表Teacher,设计一个该表对应的类,类中包括增、删、查、改方法。 为业务逻辑层的TeacherLogin方法提供调用方法Select 补充说明:通常做法,先设计对应表的增、删、查、改方法,若业务逻辑层有特殊的方法调用(数据库访问的),可以再增加。 实体类库(将表设计成类) 将数据库中的所有表设计成对应的实体类,包括字段(private),属性(public)。

相关文档 最新文档
密码: