0

以下のコードを参照してください。

<?php
$str1 = 'My Name Is : ';
$str2 = 'Dvid!';
echo $str1.$str2;
?>

単純な php コードです。
このphpファイルを(base64などで)エンコードし、通常の代わりにエンコードされたphpファイルを使用したい。
したがって、上位コードの base64 エンコードは次のようになります。

PD9waHANCiRzdHIxID0gJ015IE5hbWUgSXMgOiAnOw0KJHN0cjIgPSAnRHZpZCEnOw0KZWNobyAkc3RyMS4kc3RyMjsNCj8+DQo=

エンコードされたphpファイルをどのように使用できますか?
私は eval() 関数が答えだと思います!
だから私は使用するためにこのようにphpファイルを変更しました:

<?php
$str = 'PD9waHANCiRzdHIxID0gJ015IE5hbWUgSXMgOiAnOw0KJHN0cjIgPSAnRHZpZCEnOw0KZWNobyAkc3RyMS4kc3RyMjsNCj8+DQo=';
eval("base64_decode(\$str);");
?>

私の問題は、出力が空白 (白い画面) である理由が本当にわからないことです。
どうすればこの問題を解決できますか?

編集1:
以下のような回答の後に、代わりにインクルードを使用してテストし、エラーが発生しました:

<?php
include 'data://text/plain;base64,PD9waHANCiRzdHIxID0gJ015IE5hbWUgSXMgOiAnOw0KJHN0cjIgPSAnRHZpZCEnOw0KZWNobyAkc3RyMS4kc3RyMjsNCj8';
?>

とエラー:
そのエラー

重要な注意:
公開後にリモートホストにアクセスできないため、サーバー構成を変更せずに方法を探しています...

編集2:
削除しました

<?php
?>

base64 エンコードの一部 -> まだ空白の画面があります。

注意してくれてありがとう

4

1 に答える 1

1

ここで2つの問題:

  1. コードを評価しています:

    base64_decode($str);
    

    何もしません。

  2. そこには処理できない静止画<?php?>タグがあります。eval

したがって、興味深い解決策の 1 つは、include代わりに PHP data://URI を使用することです。

include 'data://text/plain;base64,PD9waHANCiRzdHIxID0gJ015IE5hbWUgSXMgOiAnOw0KJHN0cjIgPSAnRHZpZCEnOw0KZWNobyAkc3RyMS4kc3RyMjsNCj8+DQo=';

allow_url_includeこれが機能するには、有効にする必要があることに注意してください。

于 2012-05-17T22:33:15.687 に答える