PHPカールとクッキー認証に問題があります。PHPカールとクッキー
私はファイルを持っています。Connector.phpは、別のサーバー上のユーザーを認証し、現在のユーザーでCookieを返します。
問題は、何千ものユーザーをカールで認証したいが、一度に1人のユーザーに対してのみCookieを認証して保存するということです。
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を1人のユーザーに1つのファイルに保存し、複数のユーザー認証を処理できないという問題があります。
私はユニークPHPSESSIDを持つユーザごとに異なるCookieファイルを作成して私の問題を解決しました。 '$ tmpfname = dirname(__ FILE __)。 '/'。$ _ COOKIE ['PHPSESSID']。 '。txt'; ' – Shark
はユーザー数が多い場合には良いアイデアですか? – trainoasis
いいえ多くのユーザーがいる場合、これは悪いです。これは、Apacheサーバーのクラッシュを引き起こします。私はこの問題をApacheのプロキシで解決します。すべてのCURLコードを削除しました。 – Shark