0

別のサーバーでホストされている php 関数を実行しようとしています。関連するコードは次のとおりです。

firstdomain.com/handler.php で:

include 'http://www.seconddomain.com/functions.php';
$disp_keyword = doQuery( 0, $keyword, null );

そして、seconddomain.com/functions.php で:

function doQuery( $code, $arg1, $arg2 ) {
    mail( 'myemail@aol.com', 'doquery entered', 'test' );
}

どうすればこれを機能させることができますか?

4

2 に答える 2

2

割り当てられたサーバーのデフォルト設定では、これは非常に安全ではないため停止しますが、ソースを 100% 信頼しない場合は、eval を使用して簡単に回避できます。

使用する代わりに

include 'http://www.seconddomain.com/functions.php';

使用する:

<?php 
//get file content, save it .txt on the serving server so its not interpreted,
// you could even encrypt it then base 64 it to keep it safe, then reverse the process
$content = file_get_contents('http://www.seconddomain.com/file.txt');
eval ("?>$content");
?>

または、FGC でファイルを取得して保存し、通常のインクルードを使用することもできます。どの方法を選択する場合でも、ファイルのソースには十分注意する必要があります。

于 2012-04-29T02:50:16.380 に答える
1

2 番目のサーバー上のファイルは、PHP ソースを実行するだけでなく、出力する必要があります。リモート ファイルを含めると、ブラウザでそこに移動するのと同じですが、表示されているコードが実行されます。

したがって、これを行う最も簡単な方法は、 タグ<?php?>タグを省略することです。ただし、これによりソースコードが外部から見えるままになることに注意してください。特に、セキュリティが失われます。

于 2012-04-29T02:23:34.927 に答える