Вопрос по REQUEST_URI

ProTeg
На сайте с 09.06.2008
Offline
226
1309

Вопрос довольно простой. Есть стандартный реквест ури для одной странички

<?php {

if ($_SERVER["REQUEST_URI"]=="/index.html"

) { ?>

<h4>заголовок</h4>

текст

<?php }} ?>

Вывод идёт на конкретную страницу.

Мне нужно что бы вывод был на все страницы категории, те все страницы url которых начинается на http://site.ru/demo/, страницы типа http://site.ru/demo/dgk, http://site.ru/demo/lksdf

Их может быть тысячи, поэтому перечисление не пойдёт.

LovelAss
На сайте с 05.06.2009
Offline
96
#1


if (stripos($_SERVER['REQUEST_URI'], '/demo/') === 0) {
echo 'OK';
}
Хелпзонович
На сайте с 15.06.2005
Offline
133
#2

Как-то так


$full_path = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$pos = (int) strpos($full_path, " http://site.ru/demo/");
if ($pos>0) {
echo <<<END
<h4>заголовок</h4>
текст
END;
}
Вы там держитесь! Хорошего вам настроения. Здоровья.
R
На сайте с 20.02.2015
Offline
59
#3

Хелпзонович, такой костыль не будет работать. $pos>0 так же будет при "http://site.ru/path/?q=http://site.ru/demo/" и других вариантах. Да и вообще там SERVER_NAME не нужен.. LovelAss, дал верный вариант, только использовать надо strpos, /demo/ и /deMo/ все же разные адреса.

M
На сайте с 04.12.2013
Offline
201
#4

ProTeg, пробуйте через substr с длиной или strncmp, сравнивая с '/demo/'.

Хостинг FOZZY ( https://fozzy.com.ru ) / Выслушаю предложения на домены ( https://u75.ru/domains-for-sale ) / Домены и скрипт для коротких ссылок ( https://u75.ru/domains-for-shortcuts )
LEOnidUKG
На сайте с 25.11.2006
Offline
1613
#5

if (preg_match("@/demo/@smi",$_SERVER['REQUEST_URI']))

✅ Трастовых площадок под размещение статей и ссылок. Опыт 14 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
Хелпзонович
На сайте с 15.06.2005
Offline
133
#6
rereg:
Хелпзонович, такой костыль не будет работать. $pos>0 так же будет при "http://site.ru/path/?q=http://site.ru/demo/" и других вариантах. Да и вообще там SERVER_NAME не нужен.. LovelAss, дал верный вариант, только использовать надо strpos, /demo/ и /deMo/ все же разные адреса.

Логично, пусть будет так


$full_path = $_SERVER['SERVER_NAME'].parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

Нужен ли там SERVER_NAME не нам решать. В ТЗ четко указано реагировать на http://site.ru/demo.... Если несколько доменов настроено на одну локацию и кроме site.ru там еще siteA.ru, siteB.ru и siteС.ru может быть. А выводить надо только для site.ru

R
На сайте с 20.02.2015
Offline
59
#7

Хелпзонович, как ни крути вы серавно даете не рабочий код.

1) Ваш код:


$full_path = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$pos = (int) strpos($full_path, "http://site.ru/demo/");
if ($pos>0) {
echo <<<END
<h4>заголовок</h4>
текст
END;
}

Вы в strpos ищете позицию вместе с протоколом http:// а $full_path у вас не начинается с протокола, соответственно всегда будет false.

2) Вы там что то поправили:


$full_path = $_SERVER['SERVER_NAME'].parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

Теперь попробуйте найти вхождение $_SERVER['REQUEST_URI'] = "/path/site.ru/demo/12345/"; $pos>0 опять.

Если уж четко по ТЗ, http://site.ru/demo/(any)

1) протокол только http

2) хост только site.ru без www

3) путь начинается с /demo/


$absolute_url = (@$_SERVER['HTTPS'] == "on" ? "https" : "http")."://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
if (preg_match("#^http://site\.ru/demo/[^$]+$#", $absolute_url))
echo("OK");
LEOnidUKG:
if (preg_match("@/demo/@smi",$_SERVER['REQUEST_URI']))

Модификаторы s и m противоречат друг другу(и вообще REQUEST_URI в одну строку всегда). i - регистра независимый поиск тоже не нужен, /demo/ и /DEMO/ разные адреса. И самое главное поиск /demo/ идет не с начала строки - наверно так надо: @^/demo/

ProTeg, Надавали вам кучу говно кода.. берите код от LovelAss с поправкой на strpos

ProTeg
На сайте с 09.06.2008
Offline
226
#8

Большое всем спасибо!

---------- Добавлено 03.10.2015 в 13:40 ----------

rereg:

ProTeg, Надавали вам кучу говно кода.. берите код от LovelAss с поправкой на strpos

Тоже сразу к нему склонятся стал.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий