2012-05-17 38 views
0

請參閱下面的代碼:如何使用eval()functinon來使用base64編碼的腳本?

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

只是一個簡單的PHP代碼。
我想編碼(例如base64)這個PHP文件,並使用編碼的PHP文件,而不是正常的。
所以碼的使用Base64編碼上是象下面這樣:

PD9waHANCiRzdHIxID0gJ015IE5hbWUgSXMgOiAnOw0KJHN0cjIgPSAnRHZpZCEnOw0KZWNobyAkc3RyMS4kc3RyMjsNCj8+DQo= 

現在我怎樣才能使用該編碼PHP文件?
我認爲eval()函數就是答案!
所以我改變了PHP文件像這樣使用:

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

我的問題是,我真的不知道爲什麼輸出是空的(白色屏幕)?
我該如何解決這個問題?

編輯1:
我測試使用包括代替象下面這樣的答案後,我得到了一個錯誤:

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

和錯誤:
that error

重要提示:
我正在尋找一種無需更改服務器配置的方式,因爲我們沒有配置遠程主機上的SS後發佈...

編輯2:
我刪除

<?php 
?> 

部分從BASE64編碼 - >仍然有空白屏幕。

感謝關注

+0

'file_get_contents'打開文件有什麼問題。 – MacMac

回答

1

兩個問題在這裏:

  1. 你正在評估代碼:

    base64_decode($str); 
    

    它什麼都不做。

  2. 還有<?php?>標籤在那裏,其中eval無法處理。

於是,一個有趣的解決方案是使用include而是用PHP data:// URI:

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

請注意,您需要爲這使allow_url_include工作。

+0

嗨,但我最後需要一個可行的網站(該回聲只是一個示例 - 我正在談論一個完整的網站有很多html元素),而不是純文本。你的代碼也有三個錯誤。請你插入整個代碼! – MoonLight

+0

@MoonLight:這不是純文本,也不包含錯誤。閱讀整個事情。 – Ryan

+0

請查看我的編輯... – MoonLight