2015-08-04 4 views
1

Я написал сценарий, который использует file_get_contents() для открытия файлов на сервере, путь доставляется POST. Мне нужно было получить путь от POST и использовать str_replace(), чтобы изменить «% 2F» на «/». До сегодняшнего дня все отлично работало. Теперь на некоторых поддерживаемых путях php создает невыложенные шестнадцатеричные коды, которые не могут быть отправлены в файл_get_contents().PHP escaping шестнадцатеричные символы

Пример:

2 parameters: 
end = wypisZgierz/Łagiewniki Nowe Zachód/koncowe.htm 
start = wypisZgierz/Łagiewniki Nowe Zachód/ogolne.htm 
source: 
start=wypisZgierz%2F%C5%81agiewniki+Nowe+Zach%C3%B3d%2Fogolne.htm&end=wypisZgierz%2F%C5%81agiewniki+Nowe 
+Zach%C3%B3d%2Fkoncowe.htm 

Start работает отлично, но не заканчивается.

PHP error log: 
PHP Warning: file_get_contents(wypisZgierz/\xc5\x81agiewniki Nowe Zach\xc3\xb3d/koncowe.htm): failed to open stream: No such file or directory 

* EDIT 1 *

Благодаря rawurldecode() Я Коула пропустить мой str_replace(), но это не помогает с исходной задачи.

Реальный код PHP:

<?php 
session_start(); 
$start = ""; 
$end = ""; 
foreach ($_POST as $key => $value) { 
    if($key == "start") { 
     $start = $value; 
     $start = str_replace("%2F","/",$start);} 
    if($key == "end") { 
     $end = $value; 
     $end = str_replace("%2F","/",$end); 
    } 
} 
$tempstart = file_get_contents($start); 
$html = $tempstart; 
$tempend = file_get_contents($end); 
$html = $html.$tempend; 
echo $html; 
?> 

Проблема заключается в том, что для старых данных она работает отлично, а теперь еще $ начала и конца $ не работает, когда только $ начала работ. И если я поставлю начало и конец с тем же значением, он все еще показывает ошибку с концом (с запуском он может работать или нет). @pcdoc

ответ

1

Функция php rawurldecode должна делать трюк! Но если вы разместили какой-нибудь настоящий php-код, было бы легче определить вашу точную проблему!

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