2016-12-16 5 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を、いくつかのミスをやっている

+1

ない資格情報を掲示することをお勧め...(ユーザ名/パス) - あなたがそれらを削除する必要があります... – urban

+0

あなたがされるエラーメッセージを共有することはできますか? – mba12

+0

@urbanおそらくセキュリティ上の意義のない非特権のテストアカウントで、問題を共有していません – hanshenrik

答えて

0

:ログインすると、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

私のラズベリーpi(リポジトリを使用)でバージョン5.4のPHPを使用しています。 警告:サポートされていない宣言の行にhhb_.inc.phpに「strict_types」2 解析エラー:構文エラー、予期しない「:」、4 ライン上hhb_.inc.phpに「{」期待してしまう私は、通知が持っていますあなたは私の古い機能(クラスのPHPなし)をお勧めしますか? – Tinware

+0

私の問題の結果は、空の変数 "logged"を追加していました。できます! – Tinware

+0

またあなたはusername/passwordをエンコードするurlではなかったので、ユーザー名ORパスワードにスペースや '、'や '= 'などの文字が含まれていると、サーバーが間違ったパスワードを取得するので、urlencode() (私の例では、http_build_query()を使用してURLエンコードします) – hanshenrik

関連する問題