我從文件中抓取內容,將它們與一些POST數據結合起來,然後覆蓋文件。不幸的是,當我覆蓋時,新文件缺少任何PHP標籤......以及它們之間的任何東西!這是一個已知的問題嗎?當覆蓋文件時,PHP之間丟失任何東西
這裏是我的代碼:
<?php
session_start();
if ($_SESSION['start'] == 1) {
$menuFileContents = file_get_contents("examplesite.com/menu/index.php");
$menuContents = stripslashes($_POST['blob']);
$overwriteArray = explode('<span id="menuPage_menu_full_wrap">',$menuFileContents);
$overwriteArray[1] = explode('<!--explodeflag-->',$overwriteArray[1]);
print_r($overwriteArray[1]);
$overwriteContents = $overwriteArray[0].'<span id="menuPage_menu_full_wrap">'.$menuContents.'<!--explodeflag-->'.$overwriteArray[1][1];
$fileToOpen = fopen("../index.php","w");
fwrite($fileToOpen,trim($overwriteContents));
}
?>
看來你正在訪問Web服務器的輸出。在哪個狀態下,所有的php都可以執行。您需要在文件系統上打開文件。 – datasage
只是一個提示:不要使用explode()函數解析HTML,請使用PHP simple_html_dom解析器或DOMDocument() –
爲什麼不在數據庫(甚至是文本文件)中存儲'$ _POST ['blob']'並在'index.php'中讀取?看起來比將用戶輸入轉儲到要執行的文件更安全。 – jeroen