H5+app如何使用session 服务端为PHP
2015-07-23 17:17
639 查看
背景:在用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功能
相关文章推荐
- Xcode 6 关于 iOS App 国际化问题
- Android之Notification的多种用法
- SQL Server2008中CROSS APPLY的应用范例(二) - 将一个或多个字段内用逗号分隔的内容分成多条记录
- unity3d基础02
- 我进公司当Android开发实习生时,初中最差的同学成了我的领导
- 使用Android编写录制视频小程序示例
- unity3d基础01
- Android 四大组件学习之ContentProvider二
- Android5.1显示YUV格式图片 Demo
- 浅析Objective-C中的Protocol协议
- Trapping Rain Water
- iOS开发多线程篇—线程安全
- android gen错误:/albume/gen already exists but is not a source folder.
- 小气泡功能在app中的两种实现方案
- anroid ListView描述
- Android平移动画
- Android平移动画
- 为拿高薪——作为会计妹子任性转岗IOS
- Android基础_活动_启动模式
- iOS单例销毁