Всех приветствую. Мучаю листинг файлов на Apache. Кириллические символы преобразовываются в Punycode. Я вывел концовку URL в карту (breadcrumbs), концовка URL в листинге - это и есть название папки, которую сейчас просматриваешь. И если эта папка имеет кириллическое название, то и в URL будет кириллица. Соответственно, в карту выводится Punycode вместо нормального русского текста. PHP: <?php /* Получение полного URL */ $urlfolder = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; /* Конвертация Punycode в кириллицу */ $вот тут не хватает кода :) /* Вывод URL с обрезкой до последнего слеша */ echo '<a href="' . $urlfolder . '" title="Ссылка на эту папку">' . basename($urlfolder) . '</a>'; ?> Скрин для улучшения визуального восприятия прикрепил. Может кто-нибудь решал подобную проблему?
так а что мешает использовать что-то типа этого: https://www.php.net/manual/ru/function.idn-to-utf8.php ? или я не понял суть проблемы?))
@Roman __construct, нет, это не то. Это доменные имена типа ://xn--80a4ad.domen на кириллицу. А мне нужно менять URI Path. И у меня Punycode не вида xn--80a4ad, а %d0%90%d1%83%d0%b4%d0%b8%d0%be (что соответствует слову Аудио). На скриншоте стрелками красными выделил. Беда
это вообще не пуникод )) ты чего людей запутываешь?))))))) это обычное урл-кодирование лови: https://www.php.net/manual/ru/function.urldecode.php
@Roman __construct, я так полагаю, что вот правильный вариант: PHP: <?php /* Получение полного URL с декодированием в кириллицу */ $urlfolder = urldecode(((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); /* Вывод корневой папки */ if ($_SERVER['REQUEST_URI'] == '/') { echo '<a href="' . $urlfolder . '" title="Ссылка на эту папку">' . '|••|' . '</a>'; } /* Вывод URL с обрезкой до последнего слеша */ else { echo '<a href="' . $urlfolder . '" title="Ссылка на эту папку">' . basename($urlfolder) . '</a>'; } ?> Или где-то лучше что-то подправить?
...я таки посмотрел )) смотри: - не рекомендуется использовать параметры из GET-запроса таким образом. потому что умельцы могут тебе сюда: PHP: $_SERVER['REQUEST_URI'] много чего понапихать ))) в том числе js-код, используя всякие незакрытые кавычки и т.п. в общем, это потенциальная уязвимость. более правильно в таких случаях иметь массив с данными PHP: $dirs = ['dir1','dir2','dir3'] а потом в качестве параметра передавать индекс этого массива HTML: ?dir=2 и формировать ссылку исходя из него, примерно так: PHP: $dirs[$_GET['dir']] это такая общая рекомендация )
@Roman __construct, я с php неделю, но что можно напихать через $_SERVER['REQUEST_URI'], если нет баз? Это просто показ директорий и файлов через mod_autoindex в апаче
Не знаю как теперь, но раньше если удавалось запустить через такую дыру джаваскрипт - то как минимум можно было стырить куки)) в т.ч. и админские)) я самолично так на форумах развлекался))