【从开发者角度看测试】php+mysql+js登录注册系统
来源:互联网 发布:淘宝内存卡骗局大全 编辑:程序博客网 时间:2024/06/03 15:11
【需求】
利用php和mysql做一个小型的注册登录系统。
【功能】
1、基本的登录、注册
2、实现细节:
1)数据库字段:uid、uname、upwd分别存放id、用户名和密码;
2)登录时,校验用户名密码是否正确(从数据库中匹配);用户名和密码未填写时点登录,提醒相应信息
3)校验用户名密码时,注意两边的空格
4)注册时,校验用户名,已存在的用户名不允许注册;用户名和密码及再次输入密码未填写时点注册,提醒相应信息;密码和再次输入的密码不一致时,提醒;
5)使用cookie保存用户名、uid,注销登录的时候清除
6)增加注销功能
【编程】
1、mysql建立数据库
1)打开MySQL命令行客户端
2)输入密码,登录
3)新建数据库lbj_login
mysql> create databaselbj_login; //建立数据库
mysql> show databases; //显示数据库
mysql> use lbj_login; //选择数据库
4)建立表user
mysql> create table user(
> uid int(4) not null primary keyauto_increment,
> uname char(20) not null,
> upwd char(20) not null);
mysql> describe user; //显示表的列信息
5)插入数据
mysql> insert into uservalues(1,’root’,’root’),(2,’lbj’,’lbj’),(3,’feng’,’feng’);
mysql> select * from user;//查询表数据
2、PHP Strom编写PHP页面
这里只列出登录相关代码,注册类似。
Login.php
<?php
/**
*Created by PhpStorm.
*User: liubaoju
*Date: 14-3-20
*Time: 下午8:03
*/
//启动session会话
session_start();
//注销登录
$var = isset($_GET['action']) ? $_GET['action'] : '';
if ($var == "logout"){
unset($_SESSION['userid']);
unset($_SESSION['username']);
echo '注销登录成功!点击此处<a href="login.html">登录</a>';
exit;
}
//登录
if (!isset($_POST['submit'])){
exit('非法访问!');
}
$username = trim($_POST['username']);
$password = trim($_POST['password']);
//访问数据库,进行连接
include("conn.php");
//检查用户名密码
$sql = "select uid from user whereuname="."'$username'"." andupwd="."'$password'";
$result = mysql_fetch_array(mysql_query($sql));
if ($result){
//登录成功
$_SESSION['username']=$username;
$_SESSION['userid']=$result['uid'];
echo $username.'欢迎你!<br />';
echo '点击此处<a href="login.php?action=logout">注销</a>登录!<br/>';
}else{
exit('登录失败!点击此处<a href="javascript:history.back(-1);">返回</a>重试');
}
?>
Login.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv ="Content-Type" content="text/html;charset=gb2312" />
<title>登录</title>
<script language="javascript"type="text/javascript" >
function check(){
var name=LoginForm.username.value;
var pwd=LoginForm.password.value;
if(name==""){
alert("请输入用户名!");
LoginForm.username.focus();
return (false);
}
if(pwd==""){
alert("请输入密码!");
LoginForm.password.focus();
return (false);
}
}
</script>
</head>
<body>
<div class="center">
<form name="LoginForm" method="post"action="login.php" onsubmit="return check(this)">
用户名:<input name="username" type="text"id="username" size="20"/><br />
密 码:<inputname="password" type="password"id="password"/><br/>
<input value="登录" type="submit" name="submit"/>
<input value="注册" type="button"onclick="javascrtpt:window.location.href='register.html'"/><br/>
</form>
</div>
</body>
</html>
Conn.php
<?php
/**
*Created by PhpStorm.
*User: liubaoju
*Date: 14-3-21
*Time: 下午12:13
*/
//访问数据库,读取数据
$conn =@mysql_connect("localhost","root","LBJnan0.");
if (!$conn){
die("数据库连接失败: " . mysql_error());
}
mysql_select_db("lbj_login",$conn);
//字符转换,读库
mysql_query("set character set 'gbk'");
//写库
mysql_query("set names 'gbk'");
?>
注:
1、写SQL语句时,注意单双引号,在此处纠结了很久。
$sql ="select uid from user where uname="."'$username'"."and upwd="."'$password'";
2、Notice: Undefined index: action inD:\WAMP\WWW\php_login\login.php on line 12
规范的代码写法,如果获取数组指定索引值的内容时,不确信有数组是否有指定索引值,就要先判断数组是否有指定的元素。
将if ($_GET['action'] == "logout"){ xxxxxxxxxxxxxxx }
改为:$var = isset($_GET['action']) ? $_GET['action']: '';
if($var == "logout"){ xxxxxxxxxxxxxxx }
【测试】
1、测试时,要尽量覆盖完全,尤其是编程时未考虑过的问题。即RD忽略的东西,QA要考虑到并及时提出,关注的东西要细致全面。
2、测试case:
用户名类型:用户名是否支持英文、中文、符号、数字等
用户名长度:为空,很长,正常等情况
用户名唯一性:已注册过的用户名,能否再次注册
密码的安全性:是否加密,能否被获取
密码的长度:为空,很长,正常等情况
密码的类型:英文、中文、符号、数字
输入密码与再次输入密码不同时,能不能注册
未注册用户名能否登录
注册用户,密码不匹配时能否登录
抗压力:多个用户同时注册登录时,是否会崩溃
兼容性:多个浏览器显示是否有异常
- 【从开发者角度看测试】php+mysql+js登录注册系统
- 从php/mysql的登录看安全
- 从测试角度看职业生涯
- 从分布式系统的角度看REST
- 从开发者角度看国内 Android Market 的用户体验
- Swift要点:从Objective-C开发者的角度看Swift
- 从一名开发者角度看物联网
- PHP登录注册系统下
- PHP注册登录系统--下
- 从系统角度看分布式系统的挑战
- 从系统角度看分布式系统的挑战
- 开发者角度看Google Chrome
- 开发者角度看Google Chrome
- 开发者角度看Google Chrome
- 从营销角度看软件测试的价值
- 从测试角度上看项目流程管理
- 从测试角度看提升客户满意度
- 从软件测试角度看提升客户满意度
- 按用户名查询
- hdu1542 线段树扫描线求矩形面积的并
- iOS 常用控件的使用方法
- 小记,随时记录开发中的事
- HDU 3572 Task Schedule
- 【从开发者角度看测试】php+mysql+js登录注册系统
- scala学习笔记3(trait)
- 张小龙演讲全文:如何把产品做简单
- POJ--2709:Painter (贪心)
- LeetCode 55 Interleaving String
- 算法笔记--堆排序
- Phpstorm enviroment&Shortcut keys
- 【LeetCode】LRU Cache 解题报告
- Java 枚举常见7种用法