Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сохранить знак "+" ?
 
 автор: IgorT   (12.10.2007 в 19:10)   письмо автору
 
 

Есть такой небольшой код, с которым у меня траблы :


        $dirnew=$dir.'/'.$namefolder;
        $files=scandir($dirnew);

И все работает, но если в "$namefolder" - есть знак "+", тогда функция "scandir" не работает.(при етом он как бы пропадает, тоесть при виводе на екран - есть не "ааа+" а "ааа "). Что при етом можно сделать ?

   
 
 автор: tricket   (12.10.2007 в 20:24)   письмо автору
 
   для: IgorT   (12.10.2007 в 19:10)
 

странно, я попробывал выполнить код
print_r(scandir("1/1+"));
всё работает!
напиши сюда что выдаёт код
$dirnew=$dir.'/'.$namefolder;
echo $dirnew;

   
 
 автор: IgorT   (12.10.2007 в 20:29)   письмо автору
 
   для: tricket   (12.10.2007 в 20:24)
 

ето если явно указать. Но у меня пременная - $namefolder - получается через url, (который формируется по ссилке :

<a href="<?echo 'lib.php?namefolder='.$val;?>"><?echo "$val";?></a>

при етом $val - название каталога в котором и есть знак "+".

   
 
 автор: EXP   (12.10.2007 в 20:40)   письмо автору
 
   для: IgorT   (12.10.2007 в 20:29)
 

попробуйте получать $val
так $val=urldecode($_GET['val'])
и так $val=rawurldecode($_GET['val']) посмотрите как будет лучше

   
 
 автор: Unkind   (12.10.2007 в 21:20)   письмо автору
 
   для: IgorT   (12.10.2007 в 20:29)
 

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

Во-вторых, "+" - это пробел в url-кодировании. Нужно писать ссылку как
...page?param=" . urlencode($value) . "...

Совет EXP'а советую не слушать. В лучшем случае будет работать не так, как надо. В худшем - еще одна потенциальная уязвимость (обход эскейпирования нулевого байта, допустим).

   
 
 автор: EXP   (12.10.2007 в 22:18)   письмо автору
 
   для: Unkind   (12.10.2007 в 21:20)
 

признаю необдуманность своих слов :) но попробовать всёж можно , поэксперементировать .)
Насколько теперь доосмысливаю , php получается сам интерпритиует полученные данные rawurldecode()'ированными, сталобыть не правильнее.ли будет в ссылке

$link = '/?dir='.rawurlencode('dir+1st');
?
интересно ещё отменяет.ли автодекодирование применение таких decode-функций
<?php
$link 
'./?link=' urlencode('a+b+c');
$link2 './?link2=' urlencode(urlencode('a+b+c'));

$get_link = (isset($_GET['link'])) ? rawurldecode($_GET['link']) : '-1' ;
$get_link2 = (isset($_GET['link2'])) ? rawurldecode($_GET['link2']) : '-2' ;

echo 
'<a href="' $link '">' $get_link '</a><hr>'
    
'<a href="' $link2 '">' $get_link2 '</a><hr>';

?>

мучал мучал этиcode() и совсем запутался как надо делать )

// 1:45:55
доказал себе что просто =$_GET.. лучше чем rawurldecode($_GET..) :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования