GeorgeYang'Blog

my technology blog

js获取位置后post经纬度跳转页面,webPy的session和cookie

阅读:312 创建时间:16-03-20 06:39:37 tags:javasrcipt,js,python

首先get这段js定位的代码:

 var options = {
   enableHighAccuracy: true,
   timeout: 5000,
   maximumAge: 0
 };

 function success(pos) {
   var crd = pos.coords;

   console.log('Your current position is:');
   console.log('Latitude : ' + crd.latitude);
   console.log('Longitude: ' + crd.longitude);
   console.log('More or less ' + crd.accuracy + ' meters.');
 };

 function error(err) {
   console.warn('ERROR(' + err.code + '): ' + err.message);
 };

 if (navigator.geolocation) {
         navigator.geolocation.getCurrentPosition(success, error, options);
     } else {
         console.log('Geolocation is not supported by this browser.');
     }

参考: http://www.w3schools.com/html/html5_geolocation.asp https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition

然后get用插入以下代码post经纬度跳转:

        <script type="text/javascript">

 //扩展一个StandardPost
         $.extend({
             StandardPost: function (url, args) {
                 //内建form
                 var form = $("<form method='post'></form>"),
             input;
                 form.attr({ "action": url });
                 $.each(args, function (key, value) {
                     input = $("<input type='hidden'>");
                     input.attr({ "name": key });
                     input.val(value);
                     form.append(input);
                 });
                 form.appendTo(document.body); //必须先追加到body,不然不完整无法提交
                 form.submit(); //提交表单
                 document.body.removeChild(form[0]);
             }
         });

         function success(pos) {
             var crd = pos.coords;
             console.log('Your current position is:');
             console.log('Latitude : ' + crd.latitude);
             console.log('Longitude: ' + crd.longitude);
             $.StandardPost('/wifi/list',{'latitude':crd.latitude,'longitude':crd.longitude})
 };
 </script>

python中使用session

 import web
 web.config.debug = False
 urls = (
  "/count", "count",
  "/reset", "reset"
 )
 app = web.application(urls, locals())
 session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'count': 0})

 class count:
  def GET(self):
  session.count += 1
  return str(session.count)

 class reset:
  def GET(self):
  session.kill()
  return ""

 if __name__ == "__main__":
  app.run()

web.config`中的sessions_parameters保存着session的相关设置,sessions_parameters本身是一个字典,可以对其修改。默认设置如下:

 web.config.session_parameters['cookie_name'] = 'webpy_session_id'
 web.config.session_parameters['cookie_domain'] = None
 web.config.session_parameters['timeout'] = 86400, #24 * 60 * 60, # 24 hours in seconds
 web.config.session_parameters['ignore_expiry'] = True
 web.config.session_parameters['ignore_change_ip'] = True
 web.config.session_parameters['secret_key'] = 'fLjUfxqXtfNoIldA0A0J'
 web.config.session_parameters['expired_message'] = 'Session expired'

 cookie_name - 保存session id的Cookie的名称
 cookie_domain - 保存session id的Cookie的domain信息
 timeout - session的有效时间 ,以秒为单位
 ignore_expiry - 如果为True,session就永不过期
 ignore_change_ip - 如果为False,就表明只有在访问该session的IP与创建该session的IP完全一致时,session才被允许访问。
 secret_key - 密码种子,为session加密提供一个字符串种子
 expired_message - session过期时显示的提示信息。

http://www.yl1001.com/article/5281413609970372.htm

webpy中使用cookie

 setcookie(name, value, expires="", domain=None, secure=False):

cookie_name - session id 存储在cookie中的名称
cookie_domain - cookie的domain
timeout - session 过期时间,单位为秒
ignore_expiry -如果设置为True则忽略过期时间
ignore_change_ip - 如果为False则来自同一ip则session才有效
secret_key - session id的hash值
expired_message - session 失效后显示的信息

设置cookie

 web.setcookie('age', i.age, 3600)

读取cookie

 web.cookies().get(cookieName)