0

phpファイルを含めると、非常に奇妙な動作が発生します。
それを呼び出すページと同じドメインにないスクリプトをロードする必要があります。

私はすでにcURLを使用して動作するシステムを作成しましたが、最近、このスクリプトにアクセスする必要があるサイトの多くにcURLがインストールされていないことがわかりました。ただし、これらのサイトがにallow_url_fopen設定されていることに気付きましたon。この知識を利用して、リモートサイトにスクリプトを含めるだけの新しいシステムの作成を開始しました。 これをテストするだけで、スクリプトを次のよう

にコーディングしました。test.php

<?php 
echo("test");
?>

次を使用して、このスクリプトをリモートページに含めます。

<?php
include("http://mydomain.com/script.php");
?>

問題なく動作し、ページの上部に「テスト」が印刷されます。

ただし、スクリプトに関数を追加してページから関数を呼び出そうとすると、クラッシュします。
さらに悪いことに、このサイトではphpエラーがオフになっていて、オンにする方法がありません。

コードを台無しにしただけではないことを完全に確認するために、次のtest.phpように表示しました。

<?php
function myfunc()
{
return "abc";
}
?>

次に、ファイルを含むページで:

<?php 
include("http://mydomain.com/script.php");
echo(myfunc());
?>

そして、それはクラッシュします。任意のアイデアをいただければ幸いです。

4

3 に答える 3

0

これは奇妙な動作ではありませんが、インターネット(この場合はWorld Wide Webに注意)を介してファイルをロードするため、ファイルはinclude関数に送信される前に解釈されます。

スクリプトが解釈されるため、関数は表示されませんが、スクリプトの出力のみが表示されます。

FTP経由でロードするか、関数のAPIを作成します。

于 2012-05-25T06:23:05.740 に答える
0

私の推測:のPHPはhttp://mydomain.com/script.php、mydomain.comのWebサーバーによって解釈されます。あなたがしているincludingのは、そのスクリプトの結果だけです。簡単に言うecho("test")と、それが「テスト」です。関数は出力を生成せず、includingスクリプトで使用できません。http://mydomain.com/script.phpブラウザにアクセスしてこれを確認し、何が得られるかを確認してください。mydomain.comが実際にPHPファイルを解釈して、純粋なテキストとして返すのを停止する必要があります。

しかし、これはそもそも悪い考えのように聞こえます。クロスドメインインクルードはアンチパターンです。セキュリティ上の問題が発生するだけでなく、すべてのページの読み込みが不必要に遅くなります。クロスドメインインクルージョンが答えである場合、あなたの質問は間違っています。

于 2012-05-25T06:25:34.523 に答える
0

サーバー側のソースコードではなく、test.phpからのクライアント側の出力を含めています。スクリプトの実行を防ぐために、test.phpの名前をtest.phpcに変更します。ただし、これはセキュリティの観点から危険です。

于 2012-05-25T06:28:46.870 に答える