我对PHP Curl和cookie身份验证有一些问题。
我有一个 Connector.php 文件,该文件对另一台服务器上的用户进行身份验证并返回当前用户的cookie。
问题是我想用curl认证成千上万的用户,但是一次只能认证一个用户并保存COOKIES。
Connector.php的代码是这样的:
<?php
if(!count($_REQUEST)) {
die("No Access!");
}
//Core Url For Services
define ('ServiceCore', 'http://example.com/core/');
//Which Internal Service Should Be Called
$path = $_GET['service'];
//Service To Be Queried
$url = ServiceCore.$path;
//Open the Curl session
$session = curl_init($url);
// If it's a GET, put the GET data in the body
if ($_GET['service']) {
//Iterate Over GET Vars
$postvars = '';
foreach($_GET as $key=>$val) {
if($key!='service') {
$postvars.="$key=$val&";
}
}
curl_setopt ($session, CURLOPT_POST, true);
curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);
}
//Create And Save Cookies
$tmpfname = dirname(__FILE__).'/cookie.txt';
curl_setopt($session, CURLOPT_COOKIEJAR, $tmpfname);
curl_setopt($session, CURLOPT_COOKIEFILE, $tmpfname);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
curl_setopt($session, CURLOPT_FOLLOWLOCATION, true);
// EXECUTE
$json = curl_exec($session);
echo $json;
curl_close($session);
?>
这是认证过程:
Connector.php?service=logon&user_name=user32&user_pass=123
Connector.php?service=logosessionInfo
根据先前使用登录服务保存的cookie返回有关用户的信息。问题在于此代码为每个用户将cookie保存在一个文件中,并且无法处理多个用户身份验证。
上面描述的解决方案,即使具有唯一的CookieFile名称,也会在规模上引起很多问题。
我们必须使用此解决方案提供大量身份验证,并且由于文件读写操作过多,导致服务器宕机。
解决方案是使用Apache反向代理并完全忽略CURL请求。
Sessions 和 cookies 允许数据在多次请求中保持, 在纯 PHP 中,可以分别使用全局变量 $_SESSION 和 $_COOKIE 来访问,Yii 将 session 和 cookie 封装成对象并增加一些功能, 可通过面向对象方式访问它们。 Sessions 和 请求 和 响应类似, 默认可通过为 yii\web\Session 实例的 session 应用组件 来访问 sess
session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在浏览需要认证的服务页面以及页面统计中却相当关键。我们先来了解一下session和cookie怎么来的?考虑这样一个问题: 如何抓取一个访问受限的网页?如新浪微博好友的主页,个人微博页面等。 显然,通过浏览器,我们可以手动输入用户名和密码来访问页面,而所谓的“抓取”,其实就是使用程序来模拟完成同样的工作,
问题内容: 我一直在尝试使用curl登录barnesandnoble.com移动网站,到目前为止还没有运气。我返回的页面没有任何错误,它再次将我的电子邮件默认设置为登录页面的电子邮件输入表单框(使用print $ result返回的表单)。 通过更改LOGINURL指向eBay的登录名,相同的代码实际上可以使我正确地进入ebay。 唯一的区别是barnesandnobles是https://,而e
问题内容: 我在Android中的HttpClient遇到问题:通过使用以下代码,我想使用通过Web视图登录之前已设置的cookie。因此,登录数据应该存在并且确实存在,我对此进行了测试。但是,当我在httppost或httpget中使用cookie时,它不使用登录数据。但是这些cookie实际上应该足以接收需要登录的页面,不是吗?我不确定我是否需要以特殊方式将cookie发送到服务器,或者是否足
Cookie Session 储存位置 客户端 服务器端 目的 跟踪会话,也可以保存用户偏好设置或者保存用户名密码等 跟踪会话 安全性 不安全 安全 session技术是要使用到cookie的,之所以出现session技术,主要是为了安全。
问题内容: 我已经成功使用httpclient成功登录到站点,并打印出启用该登录的cookie。但是,我现在陷入困境,因为我想使用.setPage(url)函数在JEditorPane中显示后续页面。但是,当我这样做并使用Wireshark分析我的GET请求时,我看到用户代理不是我的httpclient而是以下内容: 用户代理:Java / 1.6.0_17 GET请求(在侧面jeditorpan