+ -
当前位置:首页 → 问答吧 → php登录,跨域,记录/读取cookie,session

php登录,跨域,记录/读取cookie,session

时间:2011-06-25

来源:互联网

今天做项目突然碰到在A平台上要登录B平台的用户,并且读取COOKIE和SESSION数据,并且B平台记录已登录状态,我把自己处理的思路说下吧,只是一种分享,没其他意思,还请高手指教。

我使用的js框架jquery,php无框架自己写的

文件说明:login.js,main.php   是b.com
              jsonp_login.html     是a.com

login.js
  1. $.ajax({
  2.   type:'GET',
  3.   url:'http://a.com/run/jsonp_login.html?account=' + param.usr + '&password=' + param.pwd + '&callback=?',
  4.   dataType:'jsonp',
  5.   jsonp:'callback',
  6.   success:function(data_row) {        
  7.     if(data_row == null || data_row.state == null) {
  8.     alert('登录失败');
  9.     return;
  10.     }

  11.     str = '';

  12.     switch(data_row.state) {
  13.       case '1':
  14.       str = '密码错误,请注意密码大小写';
  15.       break;
  16.       case '2':
  17.       str = '用户已屏蔽,因违反个人用户相关约定';
  18.       break;
  19.       case '99':            
  20.       break;
  21.       default:
  22.       str = '登录超时,请稍后在试';
  23.       break;
  24.     }

  25.     if(str) {
  26.       alert(str);
  27.       return;
  28.     }

  29. //记录用户ID和SESSION_ID
  30.         $.cookie('sid', data_row.sid);
  31.         $.cookie('mid', data_row.mid);

  32.         location.href = 'main.php';
  33.       }
复制代码


jsonp_login.html
  1. /......登录成功.....这里代码就不写了,大家都知道吧............/

  2. //使用P3P
  3. header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

  4. //记录用户COOKIE

  5. //进行登录状态输出
  6. echo $_GET['callback'].'({state:"' . $val['login_state'] . '", sid:"' . session_id() . '", mid:"' . $val['login_datarow']['id'] . '"})';
复制代码



main.php
  1. $var['sid'] = $_COOKIE['sid'];
  2. $var['mid'] = $_COOKIE['mid'];

  3. //设置session_id
  4. session_id($var['sid']);
  5. session_start();

  6. //获取用户SESSION内容
  7. $_SESSION["user_{$var['mid']}"]
复制代码

作者: 13966837   发布时间: 2011-06-25

没看到哪里跨域了。

作者: cevin.zyc   发布时间: 2011-06-25