2013-05-08 4 views
0

В двух словах я загружаю страницу в браузер и захватываю содержимое элемента div id = content в переменной с именем «contentOrig». Редактор Javascript загружается, и пользователь может изменять содержимое div id = content. Новые изменения сохраняются в переменную с именем «содержание». Запрос ajax выполняется, когда пользователь щелкает значок сохранения, и оба значения contentOrig и передаются как HTML на save.php.Как правильно использовать функцию php file_get_contents?

В save.php файла функция file_get_contents затем открывает исходный файл перед его отредактированного (находится в другом каталоге на том же сервере) и сохраняет содержимое файла в виде строки в переменная php ($ handle). Строка замены функции str_ireplace(), затем выполняется на $ обрабатывать используя $ contentOrig в строку поиска и $ dataNew как заменить строку. Затем результат следует сохранить как $ contentSave.

Ниже приведены мои файлы кода, которые запрашивают и получают вызов ajax. Кажется, что str_replace() не работает и переменная $ contentSave не создается.
Любые идеи?

$(document).ready(function() { 
var contentOrig = jQuery.data(content, 'contentOrig', $('#content').html()); 
alert(contentOrig); 
var file_path = $(location).attr('pathname'); 

bkLib.onDomLoaded(function() { 
var myNicEditor = 
    new nicEditor({fullpanel : true, onSave : function(content, id, instance) { 
$.ajax({ 
    type : 'POST', 
    url : 'https://mydomain.com/admin/save.php', 
    data: {"data": content, "filePath" : file_path, "contentOrig" : contentOrig}, 
    dataType: "html", 
    success: function(data){ 
     alert('Are you sure you want to save this content?');} 
     }); 
} }).panelInstance('content'); 

}); 

}); 

save.php FILE:

<?php 

    $site_path = "../publicSite/"; 
    $admin_site_user = _SERVER["REMOTE_USER"]; 
    **$dataNew** = $_POST['data']; 
    $pagePath = $_POST['filePath']; 
    **$contentOrig** = $_POST['contentOrig']; 
    $fileName = str_ireplace("/admin/", $site_path, $pagePath); 

    $handle = file_get_contents($fileName); 
    $handle2 = fopen($fileName, 'w+'); 
    **$contentSave = str_ireplace($contentOrig, $dataNew, $handle);** 
    $logHandle = fopen('testsave.html','w'); 

    if($handle2) { 
    if (!fwrite($handle2, $contentSave)); 
    fclose($handle2); 
    } 
+1

Возможно, из-за '_SERVER'? Просто 'console.log (data)' и вы увидите, что происходит на стороне PHP –

+0

, даже если я прокомментирую эту строку, которая устанавливает $ admin_site_user, она по-прежнему не работает. Я знаю, что строковое значение $ contentSave существует как строка в строковом значении $ dataNew ... Я просто не знаю, почему его не нашли. Может ли проблема, связанная с тем, что значение строки имеет HTML-теги? – kharrell

ответ

0
data: {"data": content, "filePath" : file_path, "contentOrig" : contentOrig}, 

попробовать

data: {data: content, filePath : file_path, contentOrig : contentOrig}, 
+0

Спасибо за ваш комментарий. Это не имеет значения. Данные успешно передаются вызовом ajax. Кажется, что str_ireplace просто не происходит, я собираюсь посмотреть на типы данных передаваемых двух переменных. – kharrell

0

Пробовали ли вы $ FileName = str_ireplace ("\ Admin \", $ site_path, $ pagePath);

Я сижу в двух рядах от вас, чувак, вы должны были просто подойти.

Смежные вопросы