Я пишу API для сайта, который содержит логин. Я использую cURL для достижения этого. Для доступа к сайту требуется одна страница, прежде чем к ней можно будет обратиться; ex: «Портал» нужно открыть, прежде чем я смогу перейти к «Portal/AccountInfo». Как и ожидалось, когда я вручную создаю скрипт с помощью Bash, я получаю желаемый результат при вызове/Portal/AccountInfo.cURL PHP Website Passthrough with CookieJar
curl -c c.txt -d "Username=u&Password=p" https://somewebsite.com/Login
curl -b c.txt -L https://somewebsite.com/Portal/
curl -b c.txt -L https://somewebsite.com/Portal/AccountInfo/
Хотя при переводе этого на PHP с использованием cURL я не могу получить правильный вывод третьего запроса. См. Ниже:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$Username = $_POST["Username"];
$Password = $_POST["Password"];
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookie");
curl_setopt($ch, CURLOPT_URL,"https://somewebsite.com/Login");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "Username=$Username&Password=$Password");
curl_exec ($ch);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookie");
curl_setopt($ch, CURLOPT_URL,"https://somewebsite.com/Portal");
curl_exec ($ch);
curl_close ($ch);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookie");
curl_setopt($ch, CURLOPT_URL,"https://somewebsite.com/Portal/AccountInfo");
$buf3 = curl_exec ($ch);
curl_close ($ch);
echo "<PRE>".htmlentities($buf3); //This output is not the same as the third command I wrote in bash
unlink("/tmp/cookie");
?>
Любая помощь очень ценится. Ура!
Работал отлично. Спасибо!! :) – ssabetan