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

来源:互联网 发布:通达信炒股软件下载 编辑:程序博客网 时间:2024/06/05 00:34

背景:在用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功能

0 0
原创粉丝点击