2009-08-14 15 views
9

Zajmuję się tworzeniem skryptu php, aby zeskanować tę stronę i wysłać mi e-mailem dane. Wygląda na to, że loguję się poprawnie, ponieważ po uruchomieniu skryptu wydaje się przekierować i dać mi komunikat mówiąc, że obiekt został przeniesiony tutaj, a tutaj jest link do strony default.aspx, co dokładnie dzieje się po ręcznym zalogowaniu.php ssl curl: obiekt przeniesiony błąd

Poniżej jest mój skrypt:

<?php 
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; 

// INIT CURL 
$ch = curl_init(); 

//init curl 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 

// SET URL FOR THE POST FORM LOGIN 
curl_setopt($ch, CURLOPT_URL, 'https://access.manager.com/Login.aspx'); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 

// Set your login and password for authentication 
curl_setopt($ch, CURLOPT_USERPWD, 'testu:passwd'); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 


// This is occassionally required to stop CURL from verifying the peer's certificate. 
// CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if 
// CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2 - check the existence of a 
// common name and also verify that it matches the hostname provided) 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

// Optional: Return the result instead of printing it 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// ENABLE HTTP POST 
curl_setopt ($ch, CURLOPT_POST, 1); 

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD 
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'Username=testu&Password=passwd'); 

# Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL 
# not to print out the results of its query. 
# Instead, it will return the results as a string return value 
# from curl_exec() instead of the usual true/false. 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 

// EXECUTE 1st REQUEST (FORM LOGIN) 
$store = curl_exec ($ch); 
echo $store; 
// CLOSE CURL 
curl_close ($ch); 

?> 

jakieś pomysły co może być uniemożliwiające stronę wyjścia strona poprawnie? Zgaduję, że nie przekierowuje poprawnie.

góry dzięki

Odpowiedz

11
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 

Zmian że do 1. Ponadto, należy ustawić ten po CURLOPT_SSL_VERIFYPEER:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
+0

niesamowite! to naprawiło. – phill

+0

Spójrz również na CURLOPT_MAXREDIRS, z której będziesz musiał skorzystać (w przyszłości?). –

+1

Dlaczego? Dlaczego użytkownik powinien je dodawać/zmieniać? –

2

można użyć następujących:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_MAXREDIRS,5); // return into a variable 
+0

@ jeffrey-roosendaal dzięki za edycję. –