我有一些PHP捲曲和餅乾驗證的問題。PHP捲曲和餅乾
我有一個文件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服務=登錄& USER_NAME = user32 & user_pass = 123
- Connector.php?service = logosessionInfo這會返回有關基於先前使用登錄服務保存的cookie的用戶信息。
問題是,這段代碼將Cookie保存在一個文件中供一個用戶使用,並且無法處理多個用戶身份驗證。
我解決了我的問題,爲不同用戶提供獨特的PHPSESSID創建不同的cookie文件。 '$ tmpfname = dirname(__ FILE __)。'/'。$ _ COOKIE ['PHPSESSID']。'。txt';' – Shark
如果有很多用戶,這是一個好主意嗎? – trainoasis
否如果你有很多用戶,這是不好的。它導致Apache服務器崩潰。我用apache代理解決了這個問題。並刪除我所有的CURL代碼。 – Shark