Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: DOCUMENT_URI
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » DOCUMENT_URI

Страниц (1): [1]
 

1. Cyrax123 - 25 Мая, 2009 - 15:09:25 - перейти к сообщению
Здравствуйте. Подскажите, как реализовать следующие правило.
PHP:
скопировать код в буфер обмена
  1.  
  2. <? if ($DOCUMENT_URI == 'сайт/директория/все_поддиректории/')
  3. {
  4. echo 'текст';
  5. }
  6. else
  7. {
  8. echo '';
  9. }
  10. ?>
  11.  

Основная проблема в том, чтобы сделать это именно для всех поддерикторий, чтобы не указывать их вручную. Заранее спасибо за помощь.
2. EuGen - 25 Мая, 2009 - 15:49:10 - перейти к сообщению
strpos

?
3. Cyrax123 - 25 Мая, 2009 - 16:05:19 - перейти к сообщению
EuGen пишет:
strpos

?

На знаком с этим вариантом. Не понял как его использовать.
4. Вездеход - 25 Мая, 2009 - 17:52:32 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <? if ($DOCUMENT_URI == 'сайт/директория/')
  2. {
  3. echo 'текст';
  4. }
  5. else
  6. {
  7. echo '';
  8. }
  9. ?>

мож прям так и написать? )

или указать их в массиве и перебрать его через foreach
или чтобы не писать вапще - прописать чтение каталога директория и выбрать от туда названия директорий
5. Cyrax123 - 25 Мая, 2009 - 18:39:24 - перейти к сообщению
Вездеход? пример можешь дать. А то ничего непонимаю)
6. Вездеход - 25 Мая, 2009 - 20:56:29 - перейти к сообщению
грубый вариант №1
PHP:
скопировать код в буфер обмена
  1. <?
  2. // массив с поддиректориями
  3. $dirs=array('dir_name1','dir_name2','dir_name3','dir_name4');
  4. // перебираем директории для проверки нашей
  5. foreach($dirs as $val) {
  6. // если найдено несоответствие - останавливаем скрипт (или напишите чтото свое)
  7. if ($DOCUMENT_URI != 'сайт/директория/'.$val) exit;
  8. }
  9.  
  10. //продолжаем работу скрипта
  11. echo '<html>...';
  12. ?>

2й писать лень - почитайте про работу с файлами
7. AlexGreF - 25 Мая, 2009 - 21:01:10 - перейти к сообщению
А можно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $site = 'mysite';
  4. $dir = 'mydir';
  5.  
  6. if(substr($DOCUMENT_URI, 0, strlen($site.'/'.$dir)) == $site.'/'.$dir){
  7. echo 'текст';
  8. }
  9. else
  10. {
  11. echo '';
  12. }
  13. ?>
  14.  

(Добавление)
Вездеход пишет:
грубый вариант №1 ...

Такой вариант вообще не подойдёт, при первом же несоответствии он прекратит работу(ну или выведет что там надо вывести), а нужно чтобы он перебрал все элементы массива, и если ни одного соответствия не будет, тогда уж только останавливать...
8. Вездеход - 25 Мая, 2009 - 23:37:32 - перейти к сообщению
а блин... вот я дурак )

2 Cyrax123
вопщем. вам надо через strpos выбрать значение поддиректории
и потом через функцию in_array проверить
как через strpos выбрать значение чето туплю.. Не понял
потому можно так =)
PHP:
скопировать код в буфер обмена
  1. <?
  2. // массив с поддиректориями
  3. $dirs=array('dir_name1','dir_name2','dir_name3','dir_name4');
  4. $poddir=strrev($DOCUMENT_URI);
  5. $poddir=substr($DOCUMENT_URI, 0, strpos($poddir, '/'));
  6. if (!in_array($poddir))  echo '';
  7. else echo 'текст';
  8. ?>


AlexGreF
ваш вариант тем не менее ничуть не лучше - результата от него не много...
9. AlexGreF - 26 Мая, 2009 - 11:26:32 - перейти к сообщению
Вездеход пишет:
AlexGreF
ваш вариант тем не менее ничуть не лучше - результата от него не много...

По крайней мере в моём варианте меньше строк получится.. На одну.. Ну а по быстродействию не знаю что лучше...
(Добавление)
И ещё в функции in_array() чего-то не хватает... Вроде так надо:

 

Powered by ExBB FM 1.0 RC1