1
c742435 2015-01-13 07:48:42 +08:00
Fiddler?
我猜的…… |
2
SharkIng OP 补充说一下,因为是一个内部程序,服务器是内部提供的,所以这个SSO的登录方式和我以前接触到的各种社交网络的那种SSO登录方式不一样,他是将服务器上一个文件夹设为保护,所有访问文件夹的文件的时候都会被需要登录,登录是另外一个网站上实现的,也就是说我们的PHP代码中没有任何请求登录的东西,只是将一个(比如Login)按钮跳转到一个(比如Admin)的文件夹中的一个PHP文件上
服务器会通过登录返回一组以 $_SERVER[''] 为头的数据,'' 引号中是数据的名称,所调用的是以登录用户的信息,例如ID,邮箱,姓名等 那么问题是,因为不可能每次修改PHP都上传到服务器上做一个测试,那么我们如何可以在本地本机上虚拟出这么一个数据组来完成虚拟登录呢?需要在不修改任何已有PHP文件代码的基础上(可以新加文件但是比较麻烦,或者最好能有软件或者浏览器插件支持) Google了一下,好像有一些Chrome/Firefox的插件可以,但是不知道所虚拟出来的数据是不是能够做到一模一样的?而且有没有使用过的童鞋能够推荐一下哪个比较好用呢?? |
3
endoffight 2015-01-13 08:01:00 +08:00 via iPhone
php的curl,file_get_content
python的urllib2和request都可以 |
4
endoffight 2015-01-13 08:03:37 +08:00 via iPhone 1
chrome还有个叫postman的插件,可以添加标准的http协议头信息,还会自动添加已存在的cookie
|
5
SharkIng OP @endoffight 好的,谢谢,先试试Postman吧
|
6
SharkIng OP @endoffight 看了下postman功能挺强大的但是好像没办法虚拟 $_SERVER['']这样的头部信息
|
7
feiyuanqiu 2015-01-13 09:44:35 +08:00
$_SERVER 是个全局变量,你想改的话,直接在你本地改了就行,用不着去浏览器里面修改
还是没看懂问题,这个 $_SERVER['HTTP_ID'] 就是你们服务器生成的 session_id 吗?如果是的话,还真不能在本地随便生成一个值,session_id 对应的是服务器上的 session 文件的 id,如果你自己弄个值,服务器找不到这个 session 文件,还是会让你重新登录的 如果你在本地测试,不需要调用服务器上的资源,你就直接在你本地登录那个地方,把 $_SESSION 或者其他需要用到的登录信息写死就行了 |
8
fising 2015-01-13 10:18:09 +08:00
|
9
SharkIng OP @fising 感觉是不一样的东西
@feiyuanqiu 这个$_SERVER['HTTP_ID_NUMBER'] 只是一个SSO的返回值,服务器上设置好的,只要进入保护文件夹就会跳转SSO登录页面,登录成功直接进入保护文件夹中某个PHP文件/页面,然后会通过Header传输一个$_SERVER['HTTP_ID_NUMBER'] 的数据,这个数据就是一个用户的ID号而已,在主服务器用户数据库里面的信息 我们现在只是需要虚拟一个这个信息,以方便在本地测试,如果您说在本地修改这个全局变量是怎么做呢? PS:$_SERVER['HTTP_ID_NUMBER'] 中的Key不是正常PHP所用过的 $_SERVER[''] 里面的KEY |
10
fising 2015-01-13 11:55:37 +08:00
那直接在代码里面初始化的时候,
$_SERVER['HTTP_ID_NUMBER'] = 'xxxx' 赋值不就行了 |
11
feiyuanqiu 2015-01-13 12:16:28 +08:00
@SharkIng 你现在的问题是不想每次都登录呢?还是不想每次都去服务器获取用户数据呢?
不想每次登录的话,就去找跳转到登录页面 之前的代码,那里肯定有是否已登录的判断的,自己琢磨着改一下就行 不想从服务器获取用户数据的话,应该是你本地没有权限连接服务器数据库吧?找领导开一下呗 或者看下你本地有没有db 的 config 文件,把 host 改成服务器 ip 实在不行,在获取用户信息那里,把用户信息 var_export 出来,写死到代码里。比如: // 假设这是你们获取用户信息的代码 $user = getUserInfo($_SERVER['HTTP_ID_NUMBER']); var_export($user);exit; // 传到测试服务器,运行一下,把得到的数据复制下来,写死在你本地代码里: $user = array('user_name' => 'test', 'real_name' => 'ergou',); |