Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - D1g174LM4n14c

Страницы: [1]
1
Смысл последнего слеша в пути...
Указание на то, что путь обращается к каталогу а не к файлу? Но, во-первых, ФС знает, где у неё файл, а где каталог. Во-вторых, файлов с таким-же именем как каталог (на том-же уровне дерева ФС) быть не может - недопустимо ФС (может, есть и исключения, конечно...).
Но для меня до конца не ясна все же суть завершающего слеша в пути, указывающего на каталог...
С другой стороны, это зависит от внутренней реализации окружения в котором вы работаете... Но какой смысл в путях к каталогам, в этом случае, без слешей? Лишние проверки...

В общем, хочу обсудить здесь смысл последнего слеша в пути... Кто мне что может сказать по этому поводу?

Спасибо.

2
PHP / Интересная Задача
« : 28 Апреля 2004, 14:33:25 »
Есть основная директория, в которой разрешено передвигаться пользователям где угодно. Но выше залезть нельзя. Нужно защитить это программным путем.

Скажем, имеем базовый путь

$base 
= \'/www/home/path/dir/\';


а путь внутри этого каталога приходит к нам вот так

$path 
$_GET[\'path\'];


нужно сделать так, чтобы при написании ?path=../
юзер не смог попасть выше базовой директории.
а также надо оставлять юзеру "красивые" пути. То есть, если он пройдется сначала в папку dir1, потом dir2, затем вверх ../ и в папку dir3, снова наверх ../ ТО путь должен быть

$path 
= \'dir1/\';


а не

$path 
= \'dir1/dir2/../dir3/../\';


вот в общем-то и все ;)

интересно, кто как решит...

3
PHP / Решение проблемы урезания данных!
« : 07 Февраля 2004, 16:09:40 »
Хотелоь бы услышать мнение по этому поводу.

Пример следующий:

Есть поле в БД типа TEXT (max. 65535 bytes).
Есть скрипт добавляющий данные в БД.
Положим, на стороне клиента есть соответствующее ограничение на длину данных. Но скрипт при получении данных и перед записью их в БД применят, допустим, htmlspecialchars к этим данных. В результате может получиться так, что юзер отправит данных 65535 байт, а htmlspecialchars расширит их кол-во до какого-то большего размера. Предугадать или вычислить эту дельту для оставления запаса места в БД невозможно. Как тогда поступать?

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

Но если в PHP ф-ция strlen реализована также как в С++ - то это будет тормозно. Кто-то знает?

Ваши мнения?

4
На сервере register_globals установлены в On.
При передаче формы (любым способом - post, get...) все переменные оказываються в суперглобальном массиве $_REQUEST и никакими $_GET || $_POST и не пахнет? В чем трабла? Что влияет на это?
Спасибо.

5
Есть такой код:

""

По спецификации HTML 4.01 аттрибут alt является обязательным для тега . Если он не нужен, можно просто написать alt="" и ваш html-документ останется валидным... НО! Пустой аттрибут alt в теге подавляет аттрибут title в теге ... Но если обязательно нужно выводить подсказку к ссылке-изображению? Думаю все кто это читает подумали одно и то же - использовать вместо аттрибута title тега аттрибут alt тега . Это же очевидно... Но не тут то было... К сожалению, это не всегда является хорошим выходом, так как изображение-ссылка может находится "в неудобном положении" на странице, и если вдруг наше _маленикое_ изображение (допустим, 10х10 пикселов) по каким-то причинам не загрузиться - пустое место, где должно было находиться изображение растянется и заполнится текстом подсказки, указанной в аттрибуте alt тега . Сразу же в голове возникает следующяя мысля - надо указать размеры рисунка (width и height) и все будет Ок. Правильно, но есть один ньюанс... Что если размер рисунка не известен заранее? Например, вы пишете что-то для широкого распространения. И вашу работу будут использовать чайники, которые думают что HTML - это новый американский телевизионный спутник. Но картинки-то поменять захочеться, а они оказываются другого размера. Непорядок получается...

Что же делать? Забить на это!!
Если рисунок не загрузится - это просто трабла, за которую должны отвечать не вы. А если вывод рисунков запрещен пользователем - то это совсем иное. Браузер (IE так точно) определит размер рисунков все равно, хоть и не отобразит их. Мрак, но так он есть...

Зачем я все это написал? Да так, просто мыслями поделился. Прошу ничем в меня не бросать, а лишь поправить если я где не то сказал. Спасибо :)

6
PHP / GMT: синхронизация времени...
« : 13 Июля 2003, 16:08:43 »
Я пишу форум. Мне надо синхронизировать время на сервере с временем юзверей. То есть, они при регистрации указывают свой часовой пояс (пример: GMT +02:00) и мне нужно с помощью это "подсказки" выводить по всему форуму время, которое бы совпадало со временем пользователя. В PHP мануале я нашел возможность получить временное смещение на сервере с помощью date(\'O\') где O - Difference to Greenwich time in hours; e.g. "+0200". Но получаемый результат в формате "+0000" неудобно парсить, чтобы сделать из всего этого integer. Тогда я нашел другой выход - date(\'Z\') где Z - timezone offset in seconds (i.e. "-43200" to "43200"). С помощью этого я сделал следующее:

echo date(\'H:i:s\', time() - date(\'Z\')); // GMT

Этот код выводит время по Гринвичу.

Я бы хотел спросить, никто не находил более "приятного" варианта синхронизации времени сервера с пользовательским? Заранее благодарен.

зы. Смотрел код vBulletin\'а - там, имхо, такой геммор написали для всего этого...

7
PHP / PHPSESSID URI parameter...
« : 03 Июня 2003, 12:11:12 »
Уязвимость обнаружена в языке сценария PHP. Удаленный пользователь может выполнить XSS нападение.

Проблема связанна с недостаточной фильтрацией PHPSESSID URI параметра. Атакующий может эксплуатировать эту уязвимость, используя специальную ссылку, содержащую произвольный код сценария, введенный в эту переменную. Уязвимость может использоваться для выполнения произвольного кода сценария в контексте уязвимого сайта. Пример:

http://www.example.org/index.php?PHPSESSID=">

Уязвимость обнаружена в PHP 4.0-4.3.1

_______________

И как этого раньше не заметили!
Ваши мнения?

8
Флейм / Глюки и Баги
« : 01 Июня 2003, 21:12:40 »
Народ, а вы знаете чем глюки от багов отличаются? :)

9
Всё о Html / <!DOCTYPE HTML PUBLIC ...
« : 29 Мая 2003, 15:26:10 »
Может кто-то знает где можно почитать про метки PUBLIC (SYSTEM) в ... Искал на W3C - но там не нашел, а узнать подробнее что я пишу в каждой своей HTML-паге интересно :) Заранее благодарен!

з.ы. И зачем указывать URI DTD в если браузер все равно к нему не обращается?

"http://www.w3.org/TR/html4/strict.dtd">

10
Как вы считаете, рациолнально ли использовать следующее решения для (хоть какого-то) уменьшения объема загружаемых пользователем данных:


// header.inc.php
// {

function kill_format($buffer) { return preg_replace(\'/ {2,}|\\r|\\n|\\t/\', \'\', $buffer); }

ob_start(\'kill_format\');

// }



// footer.inc.php
// {

ob_end_flush();

// }



// script.php
// {

require \'header.inc.php\';

// output data...

require \'footer.inc.php\';

// }


Таким образом из выходного потока удаляются лишние пробелы и символы \\r\\n ...

Если есть такие места в выходном потоке где использование такого "способа сжатия" нежелательно, тогда просто можно окружить это место вызовом двух ф-ций:


ob_end_flush
();

// ...форматно-зависимые данные...

ob_start(\'kill_format\');

11
PHP / class Template. Зацените.
« : 18 Апреля 2003, 17:50:53 »
Тема шаблонов в PHP поднимается часто...
Каждый раз кто-то предлагает свои классы, половина из которых сразу обливаются грязью и забываются.
Все же я не посмотрел на это. Зря наверно :)

Читал тут про FastTemplate и решил написать свой класс, похожий на FT. Зацените пожалуйста: что нравиться, что не нравиться, что нужно поменять...

Скажу честно, весь нижеприведенный код я писал 10-15 минут максимум... Не реализовал динамические блоки как в ФастТемплейте, но это неважно... надо будет - сделаю...

В общем, вот сам код:

<?php
class Template
{
   var 
$path = \'templates\';
   
   var $tpls = array();
   var $vars = array();
   
   var $rl = \'{\'; // variable limiters
   var $ll = \'}\'; //
   
   var $ext = \'.tpl\';
   
   ////////////////////////////////////////////////////////////////////////////////
   
   function Template($path = 0)
   {
      $this->path = ($path === 0 ? $this->path : $path);
   }
   
   function define($tpl, $filename = 0)
   {
      if (is_array($tpl))
      {
         foreach ($tpl as $key => $val)
            $this->tpls[$key] = $val;
      }
      else $this->tpls[$tpl] = $filename;
   }
   
   function assign($var, $value = 0)
   {
      if (is_array($var))
      {
         foreach ($var as $key => $val)
            $this->vars[$key] = $val;
      }
      else $this->vars[$var] = $value;
   }
   
   function parse($var, $tpl)
   {
      $tpl = file_get_contents($this->path.\'/\'.$this->tpls[$tpl].$this->ext);
      
      foreach ($this->vars as $key => $val)
         $tpl = str_replace($this->rl.$key.$this->ll, $val, $tpl);
      
      $this->vars[$var] = $tpl;
   }
   
   function output($tpl)
   {
      echo $this->vars[$tpl];
   }
}
?>

гы. Какой-то он примитивный получился - но пашет как надо.

12
собсно, сабж.
хотелось бы обсудить различные алгоритмы составления навигационных ссылок при постраничном выводе...
Я говорю про

1, 2, 3, 4, 5, 6, 7...

Какие вам известны алгоритмы составления такого навигационного механизма и какие вы считаете лучшими?

К примеру, я использую следующий алгоритм:

// $cpages - кол-во страниц
// $curr_page - номер текущей страницы

for ($i 1$i <= $cpages$i++)
   
$pages[$i] = ($i == $curr_page) ? \'<b>\'.$i.\'</b>\' : \'<a href=\'.$_SERVER[\'PHP_SELF\'].\'?page=\'.$i.\'>\'.$i.\'</a>\';

echo \'Страницы: \'.join(\', \', $pages);

Страницы: [1]