2017-07-20 14 views
0

このような質問はたくさんありましたが、これらの提案は役に立たなかったと思います。 PHPのcURLを使用して、私たちの会社のデータベースを利用しています。 n可能なウェブインタフェースは、n中央サーバではなく、n可能なサーバから提供されます。PHPを使用して完全なWebページを読み込む方法

私は、7つの異なるウェブサイトをサーフィンするのではなく、UbiquitiやN-ableなどのWebサービスをカスタマイズされたダッシュボードに統合するプロジェクトに取り組んでいます。 Unifiはうまく機能する独自のAPIを持っています。 N-ableは、私がチェック、試行、失敗したAPI実装についていくつかの試みを行っています。ここで

はプロジェクトです:

github.com/N-able/API

のみ、PHPとカールを使用してncod51.n-able.comページにアクセスしようとしている

https://github.com/Daandamhuis/N-Able-Dashboard

ページのロードの下:

Test of website access

<?php 

$url="https://ncod51.n-able.com"; 

//traverse array and prepare data for posting (key1=value1) 
foreach ($post_data as $key => $value) { 
    $post_items[] = $key . '=' . $value; 
} 
//create the final string to be posted using implode() 
$post_string = implode ('&', $post_items); 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url.'/IndexAction.action'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 
5.1; 
en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_REFERER, $url.'loginLoginAction.action'); 
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_string); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 
    if (!$result) { 
     $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
     curl_close($ch); // make sure we closeany current curl sessions 
     die($http_code.' Unable to connect to server. Please come back later.'); 
} 
echo $result; 
?> 

実際のアプリケーションはロードされません。今、目的は、n可能なサイトから情報を引き出し、現在Wampサーバーで実装しているPHP作成インターフェイスにロードすることです。

追加情報が必要な場合はお知らせください。これは私がアクセスできるまで使用されている唯一のPHPファイルです。

ご協力いただきありがとうございます。

注:n可能サイトはhttpsサイトです。

+0

display_errorsまたはPHPエラーログを有効にしたときに警告やエラーが表示されましたか?また、カールモジュールはWAMPで有効になっていますか? – Mic1780

+0

エラーは表示されず、カールモジュールも有効になっています。私はページがPOSTを受け入れることを確認しました。私は先に進んで、wsdlを使って統合されたダッシュボードに他のサービスとの統合を開始しました。私はまだ私がなぜこれを動作させることができないのかを知りたいのですが、将来的に必要になるかもしれません。 –

+0

'curl_error'を使って' curl_exec'が返すエラーを確認しましたか?たぶんあなたはそれからいくつかの情報を得ることができます。 – Mic1780

答えて

0

キーまたは値が =文字が含まれているときに何が起こるか
foreach ($post_data as $key => $value) { 
    $post_items[] = $key . '=' . $value; 
} 

をやって? $キーがfoo=barで、$値がbaz=lel&whatであれば、不正なURLコードであるfoo=bar=baz=lel&whatになりますが、サーバーがそれを理解するとは思わないでしょう。実際には、サーバがHTTP 400 Bad Request応答で応答することを期待しています。なぜなら、それは悪い要求なのでです。正しいエンコーディングはfoo%3Dbar=baz%26lelとなり、空白と同じ問題があり、<>&ÆØÅなどの文字が混在しています。これを修正するには、$post_items[] = urlencode($key) . '=' . urlencode($value);を実行するか、http_build_queryを使用して文字列全体をエンコードすることをお勧めします。それを行う

$post_string=http_build_query($post_items); 

:実際には、このエンコードコード

foreach ($post_data as $key => $value) { 
    $post_items[] = urlencode($key) . '=' . urlencode($value); 
} 
$post_string = implode ('&', $post_items); 

は、この単一の行に置き換えることができます。また、カールコードをデバッグするときにCURLOPT_VERBOSEを有効にすると、多くの有用なデバッグ情報が出力されます。

しかし、ページの下部だけが読み込まれるとしますか?ヘッダー(CURLOPT_VERBOSEで印刷されたもの)と、ページをロードする応答htmlの両方を、curlとfirefoxの両方に投稿すると、ヘッダーのHTTPエラーコードのようなものかもしれません。 HTMLでjavascriptが読み込まれていますか?)

関連する問題