php写webservice,验证问题如何解决?

seai 2010-12-15 03:01:44
查了一些资料,好像都是每一次调用webservice方法时,都需要附带客户验证信息,能否像普通的网页浏览那样,登录后,在会话期内任意访问都不需要再次提供客户验证信息呢?
...全文
598 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
不懂必须要问 2013-05-13
  • 打赏
  • 举报
回复
哎,PHP就是没有完善的东西呀。
MMDD0827 2011-06-15
  • 打赏
  • 举报
回复
直接不启用cookies啦、 session啦 等类似的机制不行吗 ?
maping1018 2011-05-23
  • 打赏
  • 举报
回复
不用每次都传密码的,这样有安全隐患,可以用临时的token来解决
seai 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 deyygywxf 的回复:]

在session中保留id
[/Quote]

还是不够清楚,和我说的通过“curl代理将验证传递的方式”有什么不同吗?
deyygywxf 2011-03-09
  • 打赏
  • 举报
回复
在session中保留id
seai 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 daly2008 的回复:]

lz说的完全可以采用session机制来实现,当你发送请求时,在服务器端建立session,服务器处理完用户请求后,将sid发送给客户端,客户端可以记录在cookie里,只要sid不过期,就不用重复发送验证信息了。session就是提供这种机制的。
[/Quote]


但是session机制怎样应用到webservice中呢?
daly2008 2011-03-02
  • 打赏
  • 举报
回复
lz说的完全可以采用session机制来实现,当你发送请求时,在服务器端建立session,服务器处理完用户请求后,将sid发送给客户端,客户端可以记录在cookie里,只要sid不过期,就不用重复发送验证信息了。session就是提供这种机制的。
seai 2011-03-01
  • 打赏
  • 举报
回复
今天回头来看这个问题,似乎可以用curl发送cookie的方式解决。

myservice.php

myproxy.php

myclient.php

用户在myclient.php(或者其他地方登陆),通过后可直接访问myproxy.php,在myproxy.php中通过curl的方式连同cookie一起请求myservice.php。

各位的意见如何?
ihefe 2010-12-20
  • 打赏
  • 举报
回复
呃也就是你说的http basic验证
ihefe 2010-12-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 seai 的回复:]

引用 7 楼 ihefe 的回复:

你说的是浏览器验证
用户:$_SERVER['PHP_AUTH_USER']
密码:$_SERVER['PHP_AUTH_PW']

参考:http://php.net/manual/en/features.http-auth.php



应该不是我要的。我想问的包含两方面的问题:

1、开放的webservice有哪些验证机制?比……
[/Quote]
这个就是只验证一次, 你试过我给你的代码吗?把最后
echo date('h:i:s');
header('WWW-Authenticate: Basic realm=""');
header('HTTP/1.0 401 Unauthorized');

去掉
seai 2010-12-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ihefe 的回复:]

你说的是浏览器验证
用户:$_SERVER['PHP_AUTH_USER']
密码:$_SERVER['PHP_AUTH_PW']

参考:http://php.net/manual/en/features.http-auth.php
[/Quote]


应该不是我要的。我想问的包含两方面的问题:

1、开放的webservice有哪些验证机制?比如我说key是一种,http的basic验证也是一种,还有其他哪些方式呢?

2、想知道有哪些验证机制是为了这个目的:有没有一种验证机制,在php调用webservice时,只需在第一次请求中发送验证信息,以后调用就不需要再次验证了--类似于普通页面浏览的过程,填写一次登陆信息后,只要不超时,访问这个网站的其他任何页面都不需要再登陆。
ihefe 2010-12-20
  • 打赏
  • 举报
回复


function authenticate()
{
header('WWW-Authenticate: Basic realm=""');
header('HTTP/1.0 401 Unauthorized');
echo "You must enter a valid login ID and password to access this resource\n";
exit;
}
if (addslashes($_SERVER['PHP_AUTH_USER'])!= 'adminname' || addslashes($_SERVER['PHP_AUTH_PW'])!= 'adminadmin')
{
header('WWW-Authenticate: Basic realm=""');
header('HTTP/1.0 401 Unauthorized');
echo "对不起,无权进入! user=".$_SERVER['PHP_AUTH_USER']."password=".$_SERVER['PHP_AUTH_PW']; //后面这半句我是为了测试而加上去的;
}
else
{
echo "进入! user=".$_SERVER['PHP_AUTH_USER']."password=".$_SERVER['PHP_AUTH_PW']; //后面这半句我是为了测试而加上去的;
echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br />";
// echo "Old: {$_REQUEST['OldAuth']}";
// echo "<form action='' METHOD='post'>\n";
// echo "<input type='hidden' name='SeenBefore' value='1' />\n";
// echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}' />\n";
// echo "<input type='submit' value='Re authenticate' />\n";
// echo "</form></p>\n";
echo date('h:i:s') . "<br />";

//暂停 10 秒
sleep(10);

//重新开始
echo date('h:i:s');
header('WWW-Authenticate: Basic realm=""');
header('HTTP/1.0 401 Unauthorized');

}

//可以直接使用试试看是不是你想要的结果
ihefe 2010-12-20
  • 打赏
  • 举报
回复
你说的是浏览器验证
用户:$_SERVER['PHP_AUTH_USER']
密码:$_SERVER['PHP_AUTH_PW']

参考:http://php.net/manual/en/features.http-auth.php
seai 2010-12-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cunningboy 的回复:]

你查查看cookie,HTTP header中有没有id之类的值,每次请求的时候都要将这个值发给服务器
[/Quote]

思路还是不够完整
CunningBoy 2010-12-15
  • 打赏
  • 举报
回复
你查查看cookie,HTTP header中有没有id之类的值,每次请求的时候都要将这个值发给服务器
seai 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 heyc1998 的回复:]

那是提供webservice方决定的!
[/Quote]

不单是提供webservice方决定,还有访问方式,比如使用basic验证,用浏览器访问的话,会提示一个验证框,如果验证通过,同一进程再次访问就不会提示框了。

我的问题在于curl请求webservice的话,似乎就必须每次都提供验证信息来完成调用。有没有一次验证的解决方案呢?
在-云端 2010-12-15
  • 打赏
  • 举报
回复
那是提供webservice方决定的!
CunningBoy 2010-12-15
  • 打赏
  • 举报
回复
在session中保留id
PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 curl获取远程文件内容 GD显示中文 PHP GIF动画生成类 PHP HTML转UBB函数 PHP XML转数组函数 PHP 缓存函数 PHP 设置COOKIE,并且加密COOKIE函数 PHP不缓存数据头 PHP伪造IP PHP全角半角转换函数 PHP农历函数 PHP分页函数 PHP判断字符串是否UTF8格式 php判断爬虫函数 PHP判断远程文件是否存在 PHP图片处理类:缩略,裁剪,圆角,倾斜 PHP多功能图片处理类 PHP多重判断删除文件函数 PHP实现英文标题的正确大 PHP常用图片处理类 PHP常用测试函数 PHP得到当周每天日期 PHP文件下载类 PHP无限分类[左右值]算法 PHP显示日期、周几、农历初几、什么节日函数 PHP格式化数据,防止注入函数 PHP模拟登陆 PHP生成唯一标识符函数 PHP生成曲线图函数 PHP生成条形码 PHP统计字符串里单词出现次数 PHP缩略图类,可生成BMP格式 PHP自定义大小验证码函数 PHP获取.NET发出的WEBSERVICE数据 PHP获取FLV文件播放时间函数 PHP获取一年内所有周的开始和结束日期 php获取指定日期所在周的开始和结束日期 PHP读取文件前几个字节 判断文件类型函数 PHP连接ACCESS PHP采集程序中常用的函数 PHP随机产生指定长度中文字符串 SMTP类 url地址参数加密 一些常用验证函数 下拉-单选框选择 创建多级目录 删除数组中相同元素,只保留一个 判断路径是绝对目录还是相对目录 利用PHP搜索指定目录下指定的文件 加密解密 去掉指定的html标签 发送 trackback 数据包 图像处理类 图片验证码生成 字符集转换类 对要输入的字符串进行转换 对要输出的字符串进行反转换 对输入JS进行转换 寻找两个函数所有不同的元素 寻找两数组所有不同元素 得到文件类型 截取字符串中两个特定唯一字符之间的内容 截取指定长度字符串 折线图 按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换成XML格式 日期计算 是否为电子邮件格式 柱形统计图 检查是否为一个合法的时间格式 检测URL地址有效性 检测文件是否图片 检测是否可以以网页形式显示 检测是否序列化后的字符串 模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能 用curl函数读取远程文件 用file_getcontents提交数据 用php生成扭曲,有角度的验证图片(支持中文) 用正则加亮关键字 程序运行过程中直接输出 缩略图带版权信息函数 缩略图类 获得用户操作系统的换行符 获得用户的真实IP地址 计算字符串的长度(汉字按照两个字符计算) 设为主页 转换附件大小单位 转静态函数 遍历文件夹文件 采集网络数据 随机字符串 验证验证码类 验证输入的邮件地址是否合法

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧