2013-01-08 77 views
0

如何在textarea中允許php腳本。我知道它的安全風險,但我想通過管理面板來做到這一點,所以不用擔心安全問題。 我想在textarea中包含1個php文件,並希望在顯示textarea內容時執行它。 我該怎麼辦?在textarea允許PHP

+0

這是如果你真的想這麼做,就會出錯...... buuut爲什麼不上傳文件而不是粘貼到textarea文件,將它複製到apache執行權限的目錄中,將chmod修改爲700,並使用shell_exec執行它? – Naryl

+0

讓我解釋一下我的場景。 我已經建立了一個CMS,在一些新的職位我需要一個動態代碼(我有單獨的文件)在該職位上的某個位置上運行。 希望你明白 – Nandla

+0

看看['Reflection'](http://php.net/manual/en/book.reflection.php)。聰明地使用'ReflectionClass'可以爲你做一些安全的事情。 – phpisuber01

回答

0

將相應的PHP代碼保存到一個新文件中,然後將PHP文件簡單地包含在您想要顯示它的位置。

+0

在textarea對不對?它會被執行? – Nandla

+0

你應該有兩個文本區域。一個用常規文本和一個佔位符來插入PHP,然後用PHP輸入第二個。您將PHP保存爲文本文件(或數據庫),然後當您在包含文件的佔位符中回顯第一個文本區域時。 – mpaepper

+0

每個文件的位置都不相同。所以我不能修復職位 – Nandla

0

獲取想要運行的代碼到字符串變量中。

eval($ phpcode);

爲什麼你想在特定位置運行該文件代碼這麼多?不能將代碼放入函數中並在那裏調用函數?

另外,解釋確切發生了什麼。這是什麼動態的PHP代碼需要運行?您正在給予,無法控制的代碼,完全訪問您的環境,包括存儲在PHP文件中的數據庫和密碼!如果通過一個簡單的GET參數,ppl可以堆棧溢出並獲得站點的完全控制權,您可以讓他們完全輕鬆控制一切!不要告訴我們這是在管理面板中,如果你認爲這足夠安全,更大的安全漏洞!

即使它是一百個可能的代碼。將它們放入函數中的文件中,並向用戶提供組合框列表以選擇要運行的組合框。

如果admin用戶需要定製一些代碼,請使用插件系統。

如果管理員用戶確實需要運行自定義快速代碼,請讓他訪問控制面板,以便他可以直接添加和編輯文件。

+0

我如何在textarea中允許這樣做?對不起如果我搞砸了 – Nandla

+0

讓我解釋一下我的場景。 我有一個CMS,我想包括一個文件,它從twitter獲取一些實時更新,這個文件需要包含在這裏只是改變它的GET變量。但我無法修正它可以包含該文件的位置,這可以包含在第一段以上,第二段以下,第二段之後,並且不能添加。 – Nandla

+0

然後將其在一個數據庫中的位置,並retreive它。你不需要爲這樣簡單的事情運行一個PHP代碼。 – itachi

0

你可以在服務器端使用eval函數,但在使用之前需要清理php標籤。

<form method="post" action="server.php"> 
    <textarea name="text_area"></textarea> 
</form> 

<?php 
// when display content 
$pattern = "/<\?php(.*?)\?>/"; 
preg_match($pattern, $textarea_value, $matches); 
foreach ($matches as $phpcode) { 
    eval($phpcode); 
} 
?> 

當然不要忘記安全原因。 這個代碼允許在textarea的許多PHP代碼和簡單的文字同時

+0

讓我試一試 – Nandla

+0

$ textarea_value是來自textarea的文本,你從數據庫或其他位置獲取它(保存它的對不起):) –

+0

不工作,空結果:( – Nandla

0

我知道你想收到一個文本鍵入的文本,或者運行一個textarea元素中添加一些代碼...

<?php 
    $unsecurePHPcode = $POST['unsecurePHPcode']; 
?> 
<textarea name="unsecurePHPcode"> 
<?php eval($unsecurePHPcode); ?> 
</textarea> 
+0

解析錯誤:解析C中的錯誤:\ wamp \ www \ xxxxxxxx \ try.php(6):第2行的eval()'代碼 – Nandla