2016-12-16 20 views
0

컬에 문제가 있습니다. 웹 사이트 (내 계정의 유효성)로 내 프로필에서 데이터를 추출해야합니다. 문제는 로깅 부족입니다.PHP/curl을 통해 로그인하는 중 문제가 발생했습니다.

$login = "tinware2"; 
$password = "passtest"; 
$ckfile = tempnam("./cookies", "goldvod.txt"); 
$page_login = "http://goldvod.tv/login.html"; 
$page_download = "http://goldvod.tv/profil.html"; 
$post_data = "?login=$login&pass=$password"; 
$agent = "Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3"; 


$headers = array(); 
$headers[] = 'GET /login.html HTTP/1.1'; 
$headers[] = 'Host: goldvod.tv'; 
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'; 
$headers[] = 'Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4'; 
$headers[] = 'Referer: http://goldvod.tv/login.html'; 
$headers[] = 'Upgrade-Insecure-Requests: 1'; 
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36'; 


$connect = curl_init(); 


curl_setopt($connect, CURLOPT_URL, $page_login); 
curl_setopt($connect, CURLOPT_COOKIESESSION, 1); 
curl_setopt($connect, CURLOPT_COOKIEJAR, $ckfile); 
curl_setopt($connect, CURLOPT_COOKIEFILE, $ckfile); 
curl_setopt($connect, CURLOPT_TIMEOUT, 40); 
curl_setopt($connect, CURLOPT_RETURNTRANSFER, 1);   
curl_setopt($connect, CURLOPT_HEADER, 0); 
curl_setopt($connect, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($connect, CURLOPT_USERAGENT, $agent); 
curl_setopt($connect, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($connect, CURLOPT_POST, 1); 
curl_setopt($connect, CURLOPT_POSTFIELDS, $post_data); 
curl_exec($connect); 


curl_setopt($connect, CURLOPT_URL, $page_download); 
$page = curl_exec($connect); 


curl_close($connect); 


echo $page; 

스크립트는 계정을 기록하지 않습니다. 도와주세요. 당신이 여기에 몇 가지 실수를하고있는

+1

하지 자격 증명을 게시하는 것이 좋습니다 ... (이름/패스) - 당신이 ... 그들을 제거해야 – urban

+0

당신이 받고있는 오류 메시지를 공유 할 수 있습니까? – mba12

+0

@urban 아마도 보안상의 중요성이없는 비표준 테스트 계정 일 수도 있고 그것을 공유하는 데 문제가 없을 수도 있습니다. – hanshenrik

답변

0

,

1 : 수동으로 GET/헤더를 만들 수 있도록 컬 CURLOPT_URL/CURLOPT_HTTPGET와 함께 당신을 위해 그것을 만들 않는다

2

: 로그인하는 것이 아닌 GET 작업 , 그것의 POST 작업.

그리고 컬 반환 값에 대한 오류 검사가 부족합니다. 여기

는 프로필 페이지로 이동, 로그인의 예이고, 계정 유형을 추출 (가 "무료 계정"또는 무언가를 말한다 같아요,하지만 난 그 언어를 사용 해달라고) https://github.com/divinity76/hhb_.inc.php/blob/master/hhb_.inc.php

<?php 
declare(strict_types=1); 
require_once('hhb_.inc.php'); 
hhb_init(); 
$hc=new hhb_curl(); 
$hc->_setComfortableOptions(); 
//getting a session 
$hc->exec('http://goldvod.tv/login.html'); 

//logging in 
$username='tinware2'; 
$password='passtest'; 
$hc->setopt_array(array(
     CURLOPT_POST=>true, 
     CURLOPT_POSTFIELDS=>http_build_query(array(
       'login'=>$username, 
       'pass'=>$password, 
       'logged'=>''//??    
     )) 
)); 
$hc->exec('http://goldvod.tv/login.html'); 
//TODO: confirm login was successful 
$hc->exec('http://goldvod.tv/profil.html'); 
//extract "account type" from your profile 
[email protected]::loadHTML($hc->getResponseBody()); 
$accountType=trim(preg_replace('/\s+/', "\n", $domd->getElementById("content-top-right")->textContent)); 
echo $accountType.PHP_EOL; 
에서 hhb_curl를 사용하여,

출력 :

Konto: 
Standard 
Ważne 
do: 
Brak 
+0

저의 라스베리 파이 (저장소가있는)에서 5.4 버전의 PHP를 사용합니다. 나는이 알림 : 경고 : 예기치 않은 구문 오류 ':'지원되지 않는 선언이 줄에 hhb_.inc.php 2 구문 분석 오류 'strict_types', 기대를 '{'라인 4 hhb_.inc.php에서 겠습니까 당신이 나이가 함수 (클래스 PHP없이)를 추천? – Tinware

+0

내 문제의 결과는 "기록 된"빈 변수를 추가하는 것이 었습니다. 그것은 작동합니다! – Tinware

+0

또한 사용자 이름/비밀번호를 인코딩하는 URL이 아니므로 사용자 이름 또는 비밀번호에 공백이나'또는'또는'= '또는 다른 문자가 포함되어 있으면 서버가 잘못된 비밀번호를 받게되므로 urlencode()해야합니다 (내 예제에서는, 나는 그것을 위해 url-encode하기 위해 http_build_query()를 사용한다) – hanshenrik