2011-07-31 12 views
6

AJAX呼び出しでページの内容を取得しようとしています。私はページラッパー内に一連のリンクを持っています。リンクをクリックすると、phpスクリプトからページの内容を取得するJavaScript関数が読み込まれます。この場合私は自分のlocalhostで開発していますが、実際には、スクリプトはAJAX呼び出しを行うファイルと同じルートフォルダとドメイン内にあります。私はdivの内容としてレスポンスを使用しています。内容は純粋にPHPではなく、それはPHPによって生成されている間に、HTMLの要素(divなど)を持つことを意味します。基本的にはオープニングとクローズのボディータグの間にあるものです。このため、json_encodeを使用することはできません。これは通常、デフォルトでは無効になっているようですallow_url_includeにまで読んだ後サーバ設定でラッパーがallow_url_include = 0によって無効にされている

Warning: require_once() [function.require-once]: http:// wrapper is disabled in the server configuration by allow_url_include=0

代わりdivのコンテンツの読み込みを、私は次のエラーを取得します。私はこの機能が深刻なサイト攻撃を許していると仮定しています。その場合です。もしそうなら、どうすれば別のファイルからコンテンツを取り出すことができますか?

IはJQueryロード機能を使用してみました:

$('#content').load('pages/test_page.php'); 

が、まったく同じ結果となりました。

これは私をナットにしています! TIA。

EDIT:私はこの問題を発見した可能性があります。 AJAXがコンテンツを取得しているphpファイルは、require_onceを使用しています。必要なファイルは、同じルートフォルダー内の同じサーバー上にありますが、1つのディレクトリー上にあります。しかし、それは新しい問題を生み出します:私は内容を取得していますが、完全にはありません。たとえば、ファイルに私はこれを持っている:

Title: <?php echo $details['title']; ?> 

私は最初の文字だけを取得していますし、これは他のphpコンテンツI echoにも当てはまります。

答えて

8

allow_url_includeinclude()require()に影響を与え、あなたはまだWebページを取得するためにPEAR HTTP_Request2モジュールまたはcurl機能を使用することができます。

include()をリモートWebページに使用すると、「悪い習慣」とみなされ、セキュリティ上のリスクが発生する可能性があります。たとえば、あなたがinclude($var);を使用して、いくつかの攻撃者は、彼/彼女は、コードを「注入」することができますhttp://hacksite.tldでの$ VARを交換するために管理している場合...

1

心配はありません、内容だけあなたとあなたの文書に新しいファイルを作成し、その後file_get_contents()を使用ファイル内のファイルincludeを取得しました。 cssjavascriptなどを使用して、今すぐあなたが含まれているファイルは、任意の変更の準備が整いました。これは基本的にラッパーが何をしています。

-2

これは、完全なURLを使用しているためです。 代わりに以下を試してください:

$('#content').load('test_page.php');