android获取web服务器端session并验证登陆 二
2013-02-05 17:03
387 查看
接上文:
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();//注意没有参数
<?php
header("Content-Type: text/html; charset=utf-8") ;
//包含数据库连接文件
include('conn.php');
session_start();
$username = htmlspecialchars($_POST["username"]);
$password=$_POST["password"];
mysql_query("set names utf8");
//检测用户名及密码是否正确
$check_query = mysql_query("select id ,name from user where name='$username' and
password='$password' limit 1");
$arr=array();//空的数组,该数组主要是格式化数据并封装成json格式发送到客户端
if($result = mysql_fetch_array($check_query)){
//登录成功
$_SESSION['username'] = $result['name'];
$_SESSION['userid'] = $result['id'];
//获取当前session id
$sessionid=session_id();
$_SESSION['$sessionid'] = $sessionid;
$arr = array(
'flag'=>'success',
'name'=>$result['name'],
'userid'=>$result['id'],
'sessionid'=>$sessionid
);
//封装json,如果php版本低于5.2,则不支持json_encode()方法,
//可以参考本文件夹中php_json_encode.php中php_json_encode()方法代替json_encode();
echo json_encode($arr);
} else {
$arr = array(
'flag'=>'error',
'name'=>'',
'userid'=>'',
'sessionid'=>''
); //封装json,如果php版本低于5.2,则不支持json_encode()方法,
//可以参考本文件夹中php_json_encode.php中php_json_encode()方法代替json_encode();
echo json_encode($arr);
}
?>
复制代码
3. getinfo.php文件主要是用户再次查询信息验证session,而不是重新产生session,以记录用户状态。通过验证flag是否为empty判断数据是否显示。最后封装成json发送到客户端
获取本次session的方法:
$sessionid=$_POST["sess_sessionid"];//获取android客户端的sessionid
session_id($sessionid);//有参数
session_start();//启动session
<?php
header("Content-Type: text/html; charset=utf-8") ;
include('conn.php');
//获取从客户端LoginSuccessActivity类传递的参数
$userid=$_POST["sess_userid"];
$username=$_POST["sess_username"];
//获取客户端传递的session标识
$sessionid=$_POST["sess_sessionid"];
session_id($sessionid);
//将会根据session id获得原来的session
session_start();
//获取服务器端原来session记录的username,并且根据客户端传过来的username比较进行验证操作
$sess_username=$_SESSION['username'];
if($username==$sess_username){
mysql_query("set names utf8");
//查询用户基本信息
$check_query = mysql_query("select userinfo,level from info where userid='$userid' limit 1");
$arr=array();//空的数组
if($result = mysql_fetch_array($check_query)){
$arr = array(
'flag'=>'notempty',
'info'=>$result['userinfo'],
'level'=>$result['level'],
'sessionid'=>$sessionid
);
echo json_encode($arr);
}
} else {
$arr = array(
'flag'=>'empty',
'name'=>'',
'userid'=>'',
'sessionid'=>$sessionid
);
echo json_encode($arr);
}
?>
复制代码
3.)数据库端(mysql)采用mysql建立数据库,建立两个简单的数据表:user和info。
/*
MySQL Data Transfer
Source Host: localhost
Source Database: login
Target Host: localhost
Target Database: login
Date: 2011-6-14 11:10:46
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for info
-- ----------------------------
CREATE TABLE `info` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`userid` int(12) DEFAULT NULL,
`userinfo` varchar(100) DEFAULT NULL,
`level` int(2) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `useid` (`userid`),
CONSTRAINT `useid` FOREIGN KEY (`userid`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for user
-- ----------------------------
CREATE TABLE `user` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
`status` int(2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `info` VALUES ('1', '1', 'charlie is a developer.', '1');
INSERT INTO `info` VALUES ('2', '2', 'william is a boss.', '20');
INSERT INTO `user` VALUES ('1', 'charlie', 'password', '1');
INSERT INTO `user` VALUES ('2', 'william', 'mypassword', '2');
复制代码
运行效果如图:
![](http://www.eoeandroid.com/data/attachment/forum/201210/26/173623miuxvvakiavu8i9g.jpg)
图 -1 GetWebSession.java类的布局
![](http://www.eoeandroid.com/data/attachment/forum/201210/26/173717db6831696zisk9d3.jpg)
图 -2 LoginSuccessActivity.java类获取的session id以及用户基本信息
![](http://www.eoeandroid.com/data/attachment/forum/201210/26/173737a8xaw1p1ijaajq11.jpg)
图 -3 GetWebSession.java获取用户详细信息及本次session的一致性
源码下载:
![](http://www.eoeandroid.com/static/image/filetype/zip.gif)
GetWebSession.zip
(71.44 KB, 下载次数: 62)
原文:http://blog.csdn.net/t80t90s/article/details/7959928
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();//注意没有参数
<?php
header("Content-Type: text/html; charset=utf-8") ;
//包含数据库连接文件
include('conn.php');
session_start();
$username = htmlspecialchars($_POST["username"]);
$password=$_POST["password"];
mysql_query("set names utf8");
//检测用户名及密码是否正确
$check_query = mysql_query("select id ,name from user where name='$username' and
password='$password' limit 1");
$arr=array();//空的数组,该数组主要是格式化数据并封装成json格式发送到客户端
if($result = mysql_fetch_array($check_query)){
//登录成功
$_SESSION['username'] = $result['name'];
$_SESSION['userid'] = $result['id'];
//获取当前session id
$sessionid=session_id();
$_SESSION['$sessionid'] = $sessionid;
$arr = array(
'flag'=>'success',
'name'=>$result['name'],
'userid'=>$result['id'],
'sessionid'=>$sessionid
);
//封装json,如果php版本低于5.2,则不支持json_encode()方法,
//可以参考本文件夹中php_json_encode.php中php_json_encode()方法代替json_encode();
echo json_encode($arr);
} else {
$arr = array(
'flag'=>'error',
'name'=>'',
'userid'=>'',
'sessionid'=>''
); //封装json,如果php版本低于5.2,则不支持json_encode()方法,
//可以参考本文件夹中php_json_encode.php中php_json_encode()方法代替json_encode();
echo json_encode($arr);
}
?>
复制代码
3. getinfo.php文件主要是用户再次查询信息验证session,而不是重新产生session,以记录用户状态。通过验证flag是否为empty判断数据是否显示。最后封装成json发送到客户端
获取本次session的方法:
$sessionid=$_POST["sess_sessionid"];//获取android客户端的sessionid
session_id($sessionid);//有参数
session_start();//启动session
<?php
header("Content-Type: text/html; charset=utf-8") ;
include('conn.php');
//获取从客户端LoginSuccessActivity类传递的参数
$userid=$_POST["sess_userid"];
$username=$_POST["sess_username"];
//获取客户端传递的session标识
$sessionid=$_POST["sess_sessionid"];
session_id($sessionid);
//将会根据session id获得原来的session
session_start();
//获取服务器端原来session记录的username,并且根据客户端传过来的username比较进行验证操作
$sess_username=$_SESSION['username'];
if($username==$sess_username){
mysql_query("set names utf8");
//查询用户基本信息
$check_query = mysql_query("select userinfo,level from info where userid='$userid' limit 1");
$arr=array();//空的数组
if($result = mysql_fetch_array($check_query)){
$arr = array(
'flag'=>'notempty',
'info'=>$result['userinfo'],
'level'=>$result['level'],
'sessionid'=>$sessionid
);
echo json_encode($arr);
}
} else {
$arr = array(
'flag'=>'empty',
'name'=>'',
'userid'=>'',
'sessionid'=>$sessionid
);
echo json_encode($arr);
}
?>
复制代码
3.)数据库端(mysql)采用mysql建立数据库,建立两个简单的数据表:user和info。
/*
MySQL Data Transfer
Source Host: localhost
Source Database: login
Target Host: localhost
Target Database: login
Date: 2011-6-14 11:10:46
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for info
-- ----------------------------
CREATE TABLE `info` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`userid` int(12) DEFAULT NULL,
`userinfo` varchar(100) DEFAULT NULL,
`level` int(2) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `useid` (`userid`),
CONSTRAINT `useid` FOREIGN KEY (`userid`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for user
-- ----------------------------
CREATE TABLE `user` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
`status` int(2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `info` VALUES ('1', '1', 'charlie is a developer.', '1');
INSERT INTO `info` VALUES ('2', '2', 'william is a boss.', '20');
INSERT INTO `user` VALUES ('1', 'charlie', 'password', '1');
INSERT INTO `user` VALUES ('2', 'william', 'mypassword', '2');
复制代码
运行效果如图:
![](http://www.eoeandroid.com/data/attachment/forum/201210/26/173623miuxvvakiavu8i9g.jpg)
图 -1 GetWebSession.java类的布局
![](http://www.eoeandroid.com/data/attachment/forum/201210/26/173717db6831696zisk9d3.jpg)
图 -2 LoginSuccessActivity.java类获取的session id以及用户基本信息
![](http://www.eoeandroid.com/data/attachment/forum/201210/26/173737a8xaw1p1ijaajq11.jpg)
图 -3 GetWebSession.java获取用户详细信息及本次session的一致性
源码下载:
![](http://www.eoeandroid.com/static/image/filetype/zip.gif)
GetWebSession.zip
(71.44 KB, 下载次数: 62)
原文:http://blog.csdn.net/t80t90s/article/details/7959928
相关文章推荐
- android获取web服务器端session并验证登陆
- Android获取web服务器端session并验证登陆
- android获取web服务器端session并验证登陆 一
- android获取web服务器端session并验证登陆
- android获取web服务器端session并验证登陆 一
- android获取web服务器端session并验证登陆 一
- android获取web服务器端session并验证登陆
- android获取web服务器端session并验证登陆
- android获取web服务器端session并验证登陆
- android获取web服务器端session并验证登陆
- Android实例] android获取web服务器端session并验证登陆
- android与WEB服务器交互时,如何保证在同一个会话Session中通信
- Android 通过httpclient请求web服务器,并解决用户登录session保持
- android与WEB服务器交互时,如何保证在同一个会话Session中通信
- android与WEB服务器交互时,如何保证在同一个会话Session中通信(转)
- Android从零单排之手机客户端http获取Web服务器数据实例
- 2012-04-10 16:32 android与WEB服务器交互时,如何保证在同一个会话Session中通信
- android与WEB服务器交互时,如何保证在同一个会话Session中通信
- android webview获取session值以及获取Js返回值
- Android与WEB服务器交互时,如何保证在同一个会话Session中通信