Вы можете выполнить оба этих запроса, используя один и тот же дескриптор cURL. Проблема в использовании curl_multi_exec
в этом случае заключается в том, что каждый дескриптор скручивания имеет разные параметры и $ch2
не ссылается на какие-либо файлы cookie.
Кроме того, curl_multi_exec
выполняет запросы параллельно, что означает, что вы можете попытаться добавить пользователя до того, как запрос на вход в систему будет выполнен или даже запущен.
Попробуйте вместо этого, это иллюстрирует вход в систему с использованием $ch
, а затем снова его использование для добавления пользователя. Если сервер поддерживает keep-alive
, вы можете добавить заголовок keep-alive
, и это же соединение сокетов будет повторно использовано для второго запроса.
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, "http://admin.example.com/admin");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=admin&pass=password");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
$res = curl_exec($ch);
// check $res here to see if login was successful
curl_setopt($ch, CURLOPT_URL, "http://admin.example.com/admin/adduser");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "newu=demo&pass=password");
$res = curl_exec($ch);
// check $res to see that the user was successfully created
curl_close($ch);
Вот некоторые другие ответы, показывающие, как сделать несколько последовательных запросов на один и тот же сайт с помощью cURL после входа в систему.
Войти в Google с помощью PHP и Curl, Cookie отключен?
Извлечение mylibrary с Android Market с помощью скручивания
PHP Curl - проблема с файлами cookie