Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Как обработать ссылку с пробелами?

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

oldVsevolod



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть организация, где в расшаренной папке есть папки и фалы.
Пытаюсь написать скрипт, который бы считывал содержимое первого каталога, если по паке кликнуть, то считать её и т.п.
Два вопроса:
1. Папки содержат пробелы (без них нельзя), но обработать их правильно у еня не выходит. Если перейти по первой папке, то вродебы переменная $dir печатается правильно, но видно обрабатывается неправильно. Т.е. при нажатии на папку с пробелами выдаёт пустую страницу.
2. А как пользоватлям скачать файл (намекните хоть). При нажатии на файл выходит в браузере абракадабра из самого файла, а нужно именно его скачать.
 

Код:
 
<?php
header("Content-type: text/html; charset=cp1251");
if(!$dir) $dir='\\server\fr';
//$dir = htmlentities($dir);
//$dir = str_replace(" ", "%20", $dir);
echo $dir;
//$dir = iconv('utf-8', 'windows-1251', $dir);
if ($handle = opendir($dir)) {
    echo "Назад<br>";
 
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
        //$entry = iconv('windows-1251', 'utf-8', $entry);
        $title = str_replace(" ", "%20", $entry);
        //$title = iconv('utf-8', 'windows-1251', $title);
        $dirs=$dir."\\".$entry;
        //echo $dirs;
            if(is_dir($dirs)){
                echo "Папка: <a href=file.php?dir=\\".$dir."\\".$title.">".$entry."</a><br>";
            }
        else echo "$entry<br>";
        }
    }
 
    closedir($handle);
}
?>

Всего записей: 264 | Зарегистр. 10-11-2015 | Отправлено: 19:39 15-10-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oldVsevolod

Цитата:
<a href=file.php?dir=\\".$dir."\\".$title.">".$entry."</a><br>";  

Вот когда научимся значения атрибутов теги в кавычках писать, тогда и проблем будет меньше
 

Цитата:
нужно именно его скачать.

Заголовки нужно правильные выдавать. Либо настраивать сервер, чтобы не считал скачивания файлы как текст (либо сервер вообще не знает mime файла), либо считывать и выдавать файл скриптом, выдав, вместо сервера, заголовки самостоятельно. PHP: вызов окна сохранения файла
 

Цитата:
$title = str_replace(" ", "%20", $entry);

Для этого есть функция http://php.net/manual/ru/function.urlencode.php

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:52 15-10-2016
oldVsevolod



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вот когда научимся значения атрибутов теги в кавычках писать, тогда и проблем будет меньше  

Вроде и понятная фраза, но не понял
 
Теги же в кавычках, не?
 
Добавлено:
Про это, что ли

Код:
echo 'Папка: <a href="file.php?dir=\\'.$dir.'\\'.$title.'">'.$entry.'</a><br>';

 
Добавлено:
Если в скрипте написать вручную  

Код:
if(!$dir) $dir='\\server\fr\a a';  

то  

Код:
opendir($dir)

как я понимаю, обрабатывается, а если такое придёт по сылке и отловится и можно проверить в

Код:
echo $dir;  

то будет пустая страница
 
даже попробовал переделать в такое

Код:
echo 'Папка: <a href="file.php?dir=\\'.urlencode($dir).'\\'.urlencode($title).'">'.$entry.'</a><br>';

и ничего

Всего записей: 264 | Зарегистр. 10-11-2015 | Отправлено: 21:43 15-10-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oldVsevolod

Цитата:
Про это, что ли

да, как минимум

Цитата:
как я понимаю, обрабатывается, а если такое придёт по сылке и отловится и можно проверить в

очень не рекомендуется обрабатывать любой переданный путь, не безопасно
 

Цитата:
даже попробовал переделать в такое  

да все равно что вы напишете, смотрите какой получается html код, он же передает дальше.
потом смотрите во что преобразуются полученные данные перед opendir
 

Цитата:
echo $dir;  
 
то будет пустая страница  

мда.. register_globals отключен по умолчанию еще с фиг его знает с какой версии php
основы основ - http://php.net/manual/ru/language.variables.external.php

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 05:29 16-10-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Как обработать ссылку с пробелами?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru