【从开发者角度看测试】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:

用户名类型:用户名是否支持英文、中文、符号、数字等

用户名长度:为空,很长,正常等情况

用户名唯一性:已注册过的用户名,能否再次注册

密码的安全性:是否加密,能否被获取

密码的长度:为空,很长,正常等情况

密码的类型:英文、中文、符号、数字

输入密码与再次输入密码不同时,能不能注册

未注册用户名能否登录

注册用户,密码不匹配时能否登录

抗压力:多个用户同时注册登录时,是否会崩溃

兼容性:多个浏览器显示是否有异常

 

0 0
原创粉丝点击