PHP 卷曲和饼干
2022-08-30 13:52:38
我有一些PHP Curl和cookie身份验证的问题。
我有一个文件连接器.php它对另一台服务器上的用户进行身份验证并返回当前用户的cookie。
问题是我想用curl对数千个用户进行身份验证,但它一次只为一个用户进行身份验证和保存COOKIE。
连接器.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 保存在每个用户的一个文件中,并且无法处理多个用户身份验证。