2017-03-08 1 views
0

phpcurl을 통해 내 Horde 웹 메일에 자동으로 로그인 한 다음 모든 전자 메일을 표시하고 싶습니다. 지금까지 내 로그인이 완벽하게 작동합니다. 저는 증명서와 쿠키로 로그인합니다.PHPcurl : 로그인 후 웹 사이트에 로그인하고 데이터를 가져 오기 HTTP 404 리소스를 찾을 수 없음 오류

무엇이 문제입니까?

대시 보드가 표시되지만 데이터가 표시되지 않습니다.

Horde Webmail Screenshot

어떻게 오류 출력을받을 수 있나요 : 여기에 스크린 샷은 같은 모습입니다? 콘솔에서

는 말한다 : 여기

Failed to load resource: the server responded with a status of 404 (Not Found) 

내 콘솔의 스크린 샷 :

Screenshot Error Output

은 무엇 코드 내가 지금까지 사용합니까?

//Data 
$webmail_login = "http://webmail.licht-austria.at/login.php"; 
$webmail_mailbox = "http://webmail.licht-austria.at/imp/dynamic.php?page=mailbox"; 
$login = ""; 
$password = ''; 
$postdata = "login_post=1&horde_user=$login&horde_pass=$password&horde_select_view=auto&new_lang=de_DE"; 

//Curl Login POST 
$ch = curl_init(); 
$agent = $_SERVER["HTTP_USER_AGENT"]; 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_URL, $webmail_login); 
curl_setopt($ch, CURLOPT_NOBODY, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
$result = curl_exec($ch); 
//Until here it works i logged in 

//Curl Mailbox GET 
curl_setopt($ch, CURLOPT_URL, $webmail_mailbox); 
curl_setopt($ch, CURLOPT_POST, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
$data = curl_exec($ch); 
echo $data; 

내 코드 작업을 수행하는 방법?

첫 번째 단계에서는 내 자격 증명을 사용하고 POST를 통해 웹 메일에 로그인합니다. PostData가 정확하고 로그인 할 수 있습니다. webmail.at/login.php가 끝나면받은 편지함 (webmail.at/imp/dynamic.php?page=mailbox)으로 리디렉션됩니다. 웹 메일은 지금 GET Method를 사용하여 모든 전자 메일과 물건을 가져오고 있으며이 순간에는 404 오류가 발생합니다.

+0

우선 HTTP를 사용하여 로그인해야합니까? IMAP/SMTP가 더 좋은 방법이 아닌가요? 두 번째로, 웹 메일 클라이언트는 아약스로 데이터를 보낼 수 있지만 컬은 처리 할 수 ​​없습니다. – jamek

+0

아, 그래, 문제는 내가 IMAP에 대해 많이 알지 못해서 어떻게 작동하는지에 관한 문제입니다. 어떻게 할 수 있습니까? –

+0

사용자 이름/암호를 올바르게 인코딩하지 마십시오. '&'또는 공백 (이름이 2 인)이있는 모든 비밀번호는 올바르게 인코딩되지 않고 로그인이 거부됩니다. 당신은 체크 아웃해야합니다 urlencode() – hanshenrik

답변

0

Failed to load resource: the server responded with a status of 404 (Not Found)

이 오류는 말괄량이와 관련이 없으며 웹 페이지 리소스를 웹 페이지로로드하는 것과 관련이 있습니다.

는하여 해결 할 수 있습니다이 문제를 해결하려면 다음

echo '<base href="http://www.example.com" />' . $data;

그러나,이 작업을 수행하지 않는 것이 좋습니다. 응답이 HTML 인 경우

당신이 당신의 응답 데이터를-조작을 다시하는 것이 더 좋을 것이다,

예를 들어, 예를 들어 Dom 라이브러리를 사용하거나 단순히 정규 표현식을 사용하고 그것을 JSON 응답하는 경우 구문 분석 새로운 간단한 UI를 재구성하여 결과를 확인하십시오.

+0

난 더이상이 필요 없어 내가이 오류가 발생하면 : XMLHttpRequest http://webmail.licht-austria.at/services/을로드 할 수 없습니다 ajax.php/imp/dynamicInit. 프리 플라이트 요청에 대한 응답이 액세스 제어 검사를 통과하지 못합니다. 'Access-Control-Allow-Origin'헤더가 요청 된 자원에 없습니다. 따라서 Origin 'http://service-lukas-reiner.de'는 액세스가 허용되지 않습니다. –

+0

그런 다음 컬 응답을 '수동으로'다시 분석하는 것이 좋습니다. – hassan

+0

알았어. 하지만 PHP 파일에서 Origin을 허용해도 작동할까요? GET 메서드에서 Origin 헤더를 설정할 수 있습니까? –

0

상대 경로를 사용하여 리소스를로드 중입니다. http://www.example.com/jquery.min.js과 같은 절대 경로가 필요합니다. 할 수있는 일은 웹 사이트에서 필요한 모든 리소스를 다운로드하여 src 폴더에 저장하는 것입니다. 예를 들어 /script.js에 사용 된 웹 사이트는 상대 경로이기 때문에 프로젝트에서 찾습니다.

관련 문제