APPCAN + wampserver 实现简单的个人登录功能

开发背景:Appcan + wampserver,其中wampserver主要用于提供本地服务器和数据库。

这是软件开发工程这门课中的一个大作业,需要实现:

1)首页(index.html),首页包含:滚动图片,新闻列表和导航栏,首页内容通过Request模块从服务端获取数据显示;

2 ) 登录页面(login.html),实现用户登录,根据学号和密码;(用户未登录时显示)

3 ) 用户信息页面(user.html),显示用户的详细信息和用户的已修的课程信息(课程名、成绩、学分等);(用户已经登录时显示)

4)新闻展示页面(newsdetail.html),显示详细的新闻,新闻数据出入数据库,通过Request模块异步获取;

5)  新闻统计页面(newsstatis.html),通过uexChart插件绘制饼图,显示各类新闻的占比。

6)  设计所需的数据库表,并将表结构导出提交。

这里主要记录一下自己实现过程中使用到的一些东西。

 

一、Appcan

1、页面框架

使用Appcan提供的AppCan页面(IDE:文件->新建->AppCan页面),修改html和js文件。

 

2、重要函数

appcan.ready(function(){
    //大括号中的代码在加载页面前会执行,因此需要在html中展示的数据,可以在这里先加载。
}):
appcan.window.open({
    name:'index', //页面名称,如果data打不开,则新建一个
    data:'index.html', //打开的新页面
    aniID:10 //过场动画
})
appcan.button("#main","ani-act",function(){ //按钮,main是html中按钮的id
        appcan.window.open({
            name:'index',
            data:'index.html',
            aniID:10
        })
    }) //这里实现的是,按后跳转到index.html页面
appcan.request.ajax({
           url : "http://localhost/ConnectUsage.php", //php文件路径
           type : "POST", //传输方式POST/GET
           data : {   //传输数据
               id : id, 
               pwd : pwd
           },
           dataType : 'json', //接收数据格式html/json
           success:function(data,status,xhr){
                //连接成功执行
           },
           error:function(xhr,status,errMessage,msg){
               //连接失败执行
           }
       });

 

3、debug的两种方式:提示框和控制台

(1)提示框

alert("我在这里!"); //也可以输出变量
appcan.window.openToast("账户或密码有误!","3000",5,0);

 (2)控制台:会显示代码的语法错误,通过下列语句将信息打印在控制台中,检查代码错误。

console.log(num);

 

二、Ajax请求

异步服务器调用。只要是在单个Web页面的上下文之内进行服务器调用,而且在加载数据和更新页面的同时,浏览器还允许用户继续互动,就说明这个应用程序是在“使用Ajax”,

在大作业中,主要是在个人登录/新闻展示中用到。个人登录:使用ajax验证账户和密码,正确后返回其他信息并展示在另一个界面中;新闻展示:通过主页点击新闻的label,返回并展示相应的新闻内容。ajax的大概过程如下:

  1. Js文件发出ajax请求,通过ajax中的url访问php文件,并将ajax中的data传送到php文件。
  2. php文件获得数据后,连接数据库,通过sql语句访问数据库并获得所需数据,之后将获得数据整理为json/html格式,echo该数据,传送回js文件。
  3. js文件取得json/html格式的数据,整理后,展示在html中,或是存储到本地,用于其他用途。

以登录为例:

1、新建AppCan中的登录页面(见上文),在login.html中获得用户的输入(在appcan页面模板基础上,增加id值)

<input placeholder="学号" id="uid" type="text" class="ub-f1" name="uid">
<input placeholder="密码" id="pwd" type="password" class="umw4 ub-f1" name="pwd">
<div class="button ub ub-ac bc-text-head ub-pc bc-btn uc-a1" id="submit">
登录
</div>

2、login.js中执行ajax:连接php -> 传数据给php -> 接收php传回的数据 -> 将数据存储在本地

# 这里我是用的wampserver,并且将php文件放在www文件下,因此url路径是“http://localhost/ConnectUsage.php”,可以理解为http://localhost指到www文件。

appcan.button("#submit", "ani-act", function() { //按后执行login函数
       login();
    })

function login(){  //login函数
        /*获得html中用户输入的值*/
        var id = $("#uid").val(); 
        var pwd = $("#pwd").val();
        var name = "";
        var sex = "";
        var num = 0;
        
        /*格式判断*/
        if(id == ""){ 
            appcan.window.openToast('账号不能为空','2000');
            return;
        }
        if(pwd == ""){
            appcan.window.openToast('密码不能为空','2000');
            return;
        }
       
        /*ajax请求*/
       appcan.request.ajax({ 
           url : "http://localhost/ConnectUsage.php", //要访问的php文件地址
           type : "POST", //POST和GET都可以,要与php文件保持一致,POST传输数据更大
           data : { //传输的数据
               id : id, 
               pwd : pwd
           },
           dataType : 'json', //包括json/html格式,要与php文件保持一致
           success:function(data,status,xhr){ //访问成功则执行
               if(data.type == "1"){ //账号密码正确
                  name = data.name;
                  sex = data.sex; 
                  num = data.number;
                  var score = data.score;
                  
                  /*将获取到的数据值进行本地存储,这样其他网页就可以通过appcan.locStorage.getval("xx");获得数据*/
                  appcan.locStorage.setVal("name",name);
                  appcan.locStorage.setVal("sex",sex);
                  appcan.locStorage.setVal("score",score);
                  appcan.locStorage.setVal("num",num);
                  appcan.locStorage.setVal("type",data.type);
                  appcan.window.open({ //跳转到数据展示页面
                      name:'user',
                      data:'user.html',
                      aniID:10
                  })
                  
               }
               else{  //账号密码错误
                   appcan.window.openToast("账户或密码有误!","3000",5,0);
               }
               
           },
           error:function(xhr,status,errMessage,msg){ //访问失败则执行
               appcan.window.openToast("登录失败","3000",5,0);
           }
           
       });
    }

3、在wampserver的www文件下,建立php文件。ConnectUsage.php中接收json传过来的数据,连接数据库,访问并返回相应的值。

这里我访问了数据库中的两张表,一张是usage,包括用户名、用户密码等;一张是score,包括用户名、课程名、成绩等。

# 将数据以键值的形式存为array格式,然后用json_encode()函数将数据转换为json格式传输

<?php
	$username = $_POST['id']; //接收数据,如果ajax中是GET,则这里应是_GET
	$password = $_POST['pwd'];
	
    /*连接数据库*/
	$conn = mysqli_connect("localhost",
						"账户名",
						"账户密码",
						"数据库名");
	
	$sql = "SELECT * FROM `usage` WHERE `id` LIKE '$username' AND `pwd` LIKE '$password'"; 
	$res = mysqli_query($conn, $sql); 
	
	$data = array();
	
	if(!isset($res->lengths)) //账号密码符合
	{
		$sql2 = "SELECT * FROM `score` WHERE `id` LIKE '$username'";
		$res2 = mysqli_query($conn, $sql2);
		$data['score'] = array();
		$num = 0;
		while($row = mysqli_fetch_assoc($res2)){
			$num++;
			$data['score'][] = $row;
		}
		$row = mysqli_fetch_assoc($res);
		$data['name'] = $row['name'];
		$data['sex'] = $row['sex'];
		$data['type'] = 1; //标记为1,js通过该返回值判断账号密码适合
		$data['number'] = $num;
	}
	else{ //账号密码不符合
		$data['type'] = 0; //标记为0
	}

	echo json_encode($data); //将数据编码为json格式,并传回js文件
	
	mysqli_close($conn);
?>

4、使用wampserver的phpAdmin建立相应数据库、数据表,并录入要使用的数据。

 

三、数据展示

通过ajax获得的数据,可以通过appcan.locStorage.setVal()和appcan.locStorage.getVal()在页面之间进行传递。

html中的普通显示,title是html中展示位置的id

<div class="uinn-a6 t-gra4 ulev-app3" id="title"></div>
var name = appcan.locStorage.getVal("name",name);
var sex = appcan.locStorage.getVal("sex",sex);
var str = "姓名: " + name + "\t\t" + " 性别: " + sex;
$("#title").html(str);

表格形式显示

<table id = "score" cellpadding="0" style="table-layout: fixed;" border="1" width="100%" cellspacing="0" cellpadding="2">
    <tr>
        <th scope="col">课程</th>
        <th scope="col">学分</th>
        <th scope="col">成绩</th>
    </tr>
</table>
var str2 = "";
str2 += "<tr><td>" + "课程" + "</td><td>" + "学分" + "</td><td>" + "成绩" + "</td></tr>";
for(var i = 0; i < num; i++)
{
    str2 += "<tr><td>" + score[i].course + "</td><td>" + score[i].credit + "</td><td>" + score[i].score + "</td></tr>";
}
$("#score").html(str2);

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值