2013-10-27 4 views
1

Я пишу 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"); 
?> 

Любая помощь очень ценится. Ура!

ответ

0

Вы не перевели -L в PHP-код: CURLOPT_FOLLOWLOCATION, и это может быть то, чего не хватает.

+0

Работал отлично. Спасибо!! :) – ssabetan