php-使用Zend进行curl http认证
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-使用Zend进行curl http认证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3266字,纯文字阅读大概需要5分钟。
内容图文
我使用Zend Rest Controller开发Web服务,现在我需要对用户进行身份验证,然后他们才能访问我的页面.
为此,iam计划使用带有curl的HTTP身份验证,如下所示:
curl_setopt($ch, CURLOPT_USERPWD, "myusername:mypassword");
我这样称呼卷曲页面:
curl -u myusername:mypassword http://localhost/controller/action/page.xml
我有一个很大的疑问.
我是否需要将用户名和密码存储在.htpasswd文件中?如果是这样,我该如何检索参数并对其进行验证?
解决方法:
如果您使用.htaccess,则网络服务器将为您静默处理所有内容.您可以假设(除非您犯了一个错误)该人已被授权.
但是,如果要使用http auth并获取要在自己的登录系统中使用的用户名和密码,则需要编写如下所示的脚本.
http://php.net/manual/en/features.http-auth.php
除了发送用户名和密码外,curl确实与它无关.就像网络浏览器一样,它只是充当http客户端.
如何执行身份验证取决于您要实现的目标. http auth是一个简单的身份验证系统.
DC
我给您的链接向您展示了如何进行.您正在调用的页面必须发送回身份验证请求,否则curl将不会转发身份验证详细信息.
如果您使用.htaccess和.htpasswd文件,则将不会看到身份验证,因为Web服务器将删除这些标头.如果您使用的是自定义http auth(如我提供的链接中的那个),那么只有在发送auth请求后,您才可以访问它们,这意味着第一次加载页面时,您将不会获得它们.
我的意思是..首先curl请求没有任何凭据的页面,如果获取页面,则停止,如果获取凭据请求,则将其发送.
这意味着,如果您希望http://localhost/controller/action/page.xml查看凭据,则必须要求它们.如果它是一个看起来像是静态的页面,则它将不要求提供凭据.
您的意思是键入http://localhost/controller/action/page.php
DC
这个过程是这样的…
curl ---> page.php (first request)
curl <--- page.php (first reply) "Please identify yourself" ('401 unauthorised' http code)
curl username:password ---> page.php (second request now includes user auth)
curl <--- page.php (second reply) ok here is the page (if id succesfull)
好的,如许诺的一些工作实例
首先创建2个php脚本
auth.php是我在上面发布的链接中提供的示例的修改后的副本
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo "User name and password is required. Please try again.\n";
} else {
// we now have access to the user and password :)
echo "Hello {$_SERVER['PHP_AUTH_USER']}\n";
echo "You entered {$_SERVER['PHP_AUTH_PW']} as your password.\n";
}
?>
curlfetch.php是您其他帖子中脚本的副本
<?php
$curl = curl_init('http://localhost/auth.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERPWD, 'key:123456');
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'Sample Code');
$response = curl_exec($curl);
$resultStatus = curl_getinfo($curl);
if($resultStatus['http_code'] == 200) {
echo $response;
} else {
echo 'Call Failed '.print_r($resultStatus);
}
?>
在服务器上创建并保存这些脚本
现在测试没有密码的脚本1
curl http://localhost/auth.php
这导致…
User name and password is required. Please try again.
现在尝试输入密码
curl -u user:pass http://localhost/auth.php
这导致…
Hello user
You entered pass as your password.
现在尝试第二个脚本,请注意我们不提供脚本中提供的用户名或密码
curl http://localhost/curlfetch.php
导致…
Hello key
You entered 123456 as your password.
现在作为参考,尝试从浏览器中调用两个脚本
DC
内容总结
以上是互联网集市为您收集整理的php-使用Zend进行curl http认证全部内容,希望文章能够帮你解决php-使用Zend进行curl http认证所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。