Отправляю данные (адрес страниц и их содержимое) на сервер через XMLHttpRequest(POST). Данные при отправке не искажаются, но когда приходят на сервер вместо точек в адресе стоит нижнее подчеркивание (F:\php\server\index\_php). Никаких преобразований не делаю, просто перебираю циклом. Как это можно поправить?
Функция, которая сохраняет страницы
public static function saveTemplate()
{
$saveFail = [];
foreach ($_POST as $key => $value) {
if ($key == 'save') continue;
//$key = preg_replace('/_(php|html|asp|css)/', '.$1', $key);
//$value = preg_replace('/(?<=\<)!--(?=\?)|(?<=\?)--(?=\>)/', '', $value);
if (!file_put_contents($key, $value)) $saveFail[] = $key;
}
return implode(', ', $saveFail);
}
controller.php
if (isset($_POST['save'])) die(!empty($status = Purity::saveTemplate())? (Translate::do("Ошибка при сохранении изменений") . ": " . $status) : Translate::do("Изменения сохранены"));
pageHistory.changedFiles.forEach(function(e,i) {
data.append(e, pageHistory.template[pageHistory.current][e]);
});
data.append('save', true);
ajax('POST', data, function() {
dialog(xhr.responseText);
document.getElementById("page").contentWindow.onbeforeunload = null;
setTimeout(function() {
//editor.location.reload();
}, 2000)
});
/* XHR */
function ajax(type, data, func) {
var callback = func;
if (type == 'GET') {
xhr.open('GET', 'controller.php?' + data, true);
xhr.send();
} else if (type == 'POST') {
xhr.open('POST', 'controller.php', true);
xhr.send(data);
}
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) return;
if (xhr.status == 403) {
localStorage.removeItem('login');
location.reload();
return;
} else if (xhr.getResponseHeader('purityError')) {
dialog('Error: ' + xhr.responseText);
return;
} else if (xhr.status != 200) {
dialog('Error: ' + xhr.status + ': ' + xhr.statusText);
return;
} else if (callback) callback();
}
}
Заголовки:
Request URL:
localhost/purity/controller.php
Request Method: POST
Status Code: 200 OK
Remote Address: [::1]:80
Referrer Policy: no-referrer-when-downgrade
Cache-Control: no-store, no-cache, must-revalidate
Connection: close
Content-type: text/html; charset=UTF-8
Date: Wed, 08 Aug 2018 11:34:43 +0000
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Host: localhost
Pragma: no-cache
Transfer-Encoding: chunked
X-Powered-By: PHP/7.1.11
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 14916
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryERE3jxCD5OWjti7R
Cookie: PHPSESSID=a9t4eqiinkl2i3vmor67jb1ecv
Host: localhost
Origin:
localhost
Pragma: no-cache
Referer:
localhost/purity
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36
------WebKitFormBoundaryERE3jxCD5OWjti7R
Content-Disposition: form-data; name="F:\php\server\index.php"
<?php
include_once($_SERVER['DOCUMENT_ROOT']."/req/top.php");
?>
...