Не работает условие в php?
Пытаюсь вывести контент на нужную страницу но условие не работает.
Есть код
if (isset($_SESSION['username'])) {
$access = AccessPage::getIDByUsername($_SESSION['username']);
foreach($access->id_page as $p_id) {
$u = AccessPage::getUrlPages($p_id);
if ($_SERVER['REQUEST_URI'] === $u) {
$u = PrivilegedUser::getByUsername($_SESSION['username']);
foreach($u->roles as $r_id) {
$c = Content::getContent($r_id, $p_id);
foreach($c->contents as $content) {
eval('?>' . $content);
print ob_get_clean();
}
}
// break;
}
elseif ($_SERVER['REQUEST_URI'] !== $u) {
// header( 'Location: '.str_replace('/', '', $u), true, 301 );
ob_end_flush();
// break;
}
else {
echo '<div class="row">';
echo '<p class="h3" id="h3">Доступ закрыт!</p>'."\n";
echo '</div>';
}
}
}
В переменную $access получаю объект класса с ассоциативным массивом id страниц
Array ( [0] => 1 [1] => 2 [2] => 3 )
Получаю его с помощью foreach и передаю id в другой клаcc который отдает мне в ответ urlы страниц для каждого из id.
Это пример urlов для каждого id
1 - /index-dev.php
2 - /map.php
3 - /csv.php
После этого условие в php перестает работать.
Например: я нахожусь на странице index-dev.php и мне нужно показать контент на этой странице. Если такой url в базе для этого пользователя есть, то нужно показать контент. Если такого urlа в базе для этого пользователя нет, то нужно выполнить редирект на другую доступную страницу или показать текст пользователю что ему доступ запрещен. Пробовал break но тогда не работают редирект. Как мне добиться правильной работы условия.
Ответы (1 шт):
В описании:
Это пример urlов для каждого id
1 - /index-dev.php 2 - /map.php 3 - /csv.php
Вот тут
$u = AccessPage::getUrlPages($p_id);
if ($_SERVER['REQUEST_URI'] === $u) {
вы используете строгое сравнение (===) массива со строкой, как я понимаю из описания. Это условие никогда не будет выполнено