H5+app如何使用session 服务端为PHP
背景:在用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功能
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。