android获取web服务器端session并验证登陆 二

接上文:
2.)服务器端(php)php服务器端主要有三个文件,conn.php,login.php和getinfo.php。
1. conn.php是连接数据库的配置文件。
2. login.php主要是用来验证android客户端发送的请求,请求成功则返回flag=’success’的状态标识,采用数组记录用户基本信息,存储用户数据到session,并且记录本次产生的session id。用户基本数据及本次session产生的id均封装成json格式(json_encode($arr)),发送android客户端。产生本次session id的方法
$sessionid=session_id();//注意没有参数


  1. <?php
  2. header("Content-Type: text/html; charset=utf-8") ;
  3. //包含数据库连接文件
  4. include('conn.php');
  5. session_start();
  6. $username = htmlspecialchars($_POST["username"]);
  7. $password=$_POST["password"];
  8. mysql_query("set names utf8");
  9. //检测用户名及密码是否正确
  10. $check_query = mysql_query("select id ,name from user where name='$username' and
  11. password='$password' limit 1");
  12. $arr=array();//空的数组,该数组主要是格式化数据并封装成json格式发送到客户端
  13. if($result = mysql_fetch_array($check_query)){
  14. //登录成功
  15. $_SESSION['username'] = $result['name'];
  16. $_SESSION['userid'] = $result['id'];
  17. //获取当前session id
  18. $sessionid=session_id();
  19. $_SESSION['$sessionid'] = $sessionid;
  20. $arr = array(
  21. 'flag'=>'success',
  22. 'name'=>$result['name'],
  23. 'userid'=>$result['id'],
  24. 'sessionid'=>$sessionid
  25. );
  26. //封装json,如果php版本低于5.2,则不支持json_encode()方法,
  27. //可以参考本文件夹中php_json_encode.php中php_json_encode()方法代替json_encode();
  28. echo json_encode($arr);
  29. } else {
  30. $arr = array(
  31. 'flag'=>'error',
  32. 'name'=>'',
  33. 'userid'=>'',
  34. 'sessionid'=>''
  35. ); //封装json,如果php版本低于5.2,则不支持json_encode()方法,
  36. //可以参考本文件夹中php_json_encode.php中php_json_encode()方法代替json_encode();
  37. echo json_encode($arr);
  38. }
  39. ?>
复制代码

3. getinfo.php文件主要是用户再次查询信息验证session,而不是重新产生session,以记录用户状态。通过验证flag是否为empty判断数据是否显示。最后封装成json发送到客户端
获取本次session的方法:
$sessionid=$_POST["sess_sessionid"];//获取android客户端的sessionid
session_id($sessionid);//有参数
session_start();//启动session


  1. <?php
  2. header("Content-Type: text/html; charset=utf-8") ;
  3. include('conn.php');
  4. //获取从客户端LoginSuccessActivity类传递的参数
  5. $userid=$_POST["sess_userid"];
  6. $username=$_POST["sess_username"];
  7. //获取客户端传递的session标识
  8. $sessionid=$_POST["sess_sessionid"];
  9. session_id($sessionid);
  10. //将会根据session id获得原来的session
  11. session_start();
  12. //获取服务器端原来session记录的username,并且根据客户端传过来的username比较进行验证操作
  13. $sess_username=$_SESSION['username'];
  14. if($username==$sess_username){
  15. mysql_query("set names utf8");
  16. //查询用户基本信息
  17. $check_query = mysql_query("select userinfo,level from info where userid='$userid'&nbsp; limit 1");
  18. $arr=array();//空的数组
  19. if($result = mysql_fetch_array($check_query)){
  20. $arr = array(
  21. 'flag'=>'notempty',
  22. 'info'=>$result['userinfo'],
  23. 'level'=>$result['level'],
  24. 'sessionid'=>$sessionid
  25. );
  26. echo json_encode($arr);
  27. }
  28. } else {
  29. $arr = array(
  30. 'flag'=>'empty',
  31. 'name'=>'',
  32. 'userid'=>'',
  33. 'sessionid'=>$sessionid
  34. );
  35. echo json_encode($arr);
  36. }
  37. ?>
复制代码

3.)数据库端(mysql)采用mysql建立数据库,建立两个简单的数据表:user和info。


  1. /*
  2. MySQL Data Transfer
  3. Source Host: localhost
  4. Source Database: login
  5. Target Host: localhost
  6. Target Database: login
  7. Date: 2011-6-14 11:10:46
  8. */
  9. SET FOREIGN_KEY_CHECKS=0;
  10. -- ----------------------------
  11. -- Table structure for info
  12. -- ----------------------------
  13. CREATE TABLE `info` (
  14. `id` int(12) NOT NULL AUTO_INCREMENT,
  15. `userid` int(12) DEFAULT NULL,
  16. `userinfo` varchar(100) DEFAULT NULL,
  17. `level` int(2) DEFAULT NULL,
  18. PRIMARY KEY (`id`),
  19. KEY `useid` (`userid`),
  20. CONSTRAINT `useid` FOREIGN KEY (`userid`) REFERENCES `user` (`id`)
  21. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
  22. -- ----------------------------
  23. -- Table structure for user
  24. -- ----------------------------
  25. CREATE TABLE `user` (
  26. `id` int(12) NOT NULL AUTO_INCREMENT,
  27. `name` varchar(20) DEFAULT NULL,
  28. `password` varchar(20) DEFAULT NULL,
  29. `status` int(2) DEFAULT NULL,
  30. PRIMARY KEY (`id`)
  31. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
  32. -- ----------------------------
  33. -- Records
  34. -- ----------------------------
  35. INSERT INTO `info` VALUES ('1', '1', 'charlie&nbsp; is a developer.', '1');
  36. INSERT INTO `info` VALUES ('2', '2', 'william is a boss.', '20');
  37. INSERT INTO `user` VALUES ('1', 'charlie', 'password', '1');
  38. INSERT INTO `user` VALUES ('2', 'william', 'mypassword', '2');
复制代码

运行效果如图:
user-login-ui.jpg


图 -1 GetWebSession.java类的布局


login-and-get-session.jpg


图 -2 LoginSuccessActivity.java类获取的session id以及用户基本信息


get-user-info-by-session-again.jpg


图 -3 GetWebSession.java获取用户详细信息及本次session的一致性

源码下载: GetWebSession.zip (71.44 KB, 下载次数: 62)



原文:http://blog.csdn.net/t80t90s/article/details/7959928

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值