您的位置:首页 > 移动开发

H5+app如何使用session 服务端为PHP

2015-07-23 17:17 603 查看
背景:在用H5+ 写app的时候,当用户登陆后,需要记住登陆状态,可以直接使用storage把登陆信息保存在本地,类似于cookie的操作,但这样显然不安全,那么应该是要把登陆信息保存在服务器上。我这里模拟了session的过程,首先随机一个26位的字符串作为PHPSESSID保存在storange,然后把这个PHPSESSID通过ajax get的方式传到目标服务器,然后修改cookie中的PHPSESSID为传过去的值,这样就可以在服务器通过该ID找到对应的session文件了。

客户端代码:

var PHPSESSID = plus.storage.getItem("PHPSESSID");
if(PHPSESSID == null){
plus.storage.setItem("PHPSESSID",rand26());
clicked("/Home/login.html");
}else{
$.ajax({
url : 'http://1.sckandroid.sinaapp.com/Home/session_login_check',
dataType : 'jsonp',
type : 'get',
cache : false,
data : {PHPSESSID : PHPSESSID},
success:function(data){
if(data['temp'] == 0 ){
clicked("/Home/login.html");
}else{
clicked("/Home/main.html");
}
},
error:function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}
});
}
服务端代码:

public function login_check(){
$username = $_GET['username'];
$password = $_GET['password'];
$callback = $_REQUEST['callback'];
$user = M("user");
$where['username'] = $username;
$where['password'] = $password;
$data = $user->where($where)->find();
if($data){
$result = array('temp' => '1' , 'realname' => $data['realname']);
session_start();
$oldid = $_COOKIE['PHPSESSID'];
$newid = $_GET['PHPSESSID'];
session_destroy();
$_COOKIE['PHPSESSID'] = $newid;
session_start();
$_SESSION['username'] = $username;
}else{
$result = array('temp' => '0');
}
$json = json_encode($result);
echo $callback . "(" . $json . ")";
}
主要的session操作:

session_start();
$oldid = $_COOKIE['PHPSESSID'];
$newid = $_GET['password'];
session_destroy();
$_COOKIE['PHPSESSID'] = $newid;
session_start();
因为是在thinkphp中,一旦用到了session,就会自动创建一个PHPSESSID,那么就需要把这个文件删除,在把cookie中的PHPSESSID改了,再开启session功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: