Сайт без перезагрузки

Всем доброго времени суток, я написал функции PHP и JAVASCRIPT для навигации по сайту без перезагрузки но у меня возникла проблема с тем что бы переадресовать пользователя на другую страницу.

То есть: На сайте есть 3 директории 1 - это страницы для всех пользователей, 2 - только для зарегистрированных, и 3 - для гостей. Теперь проблема если я гость то я не должен посещать страницы зарегистрированных я перехожу на страницу для зарегистрированных создаю условие и я не могу сделать Перенаправление на другую страницу но проверка выполняеться.

Суть нужно сделать так что бы при переходе на страницу "/news" меня перенаправляло на "/"

index.php

<!DOCTYPE html>
<html lang="en">
<head>
    <script type="text/javascript" src="script.js"></script>
</head>
<body>

    <div onclick="nextURL('/info', event);">Login</div>
    <div onclick="nextURL('/register', event);">Register</div>
    <div onclick="nextURL('/news', event);">News</div><br>

    <?php

        if ($_SERVER['REQUEST_URI'] == '/') $page = 'info';
        else  {
            $page = substr($_SERVER['REQUEST_URI'], 1);
            if (!preg_match('/^[A-Za-z0-9|\_|\.|\/|=|-|?|&]{3,10000}$/', $page)) exit('Error');
        }

        if (file_exists('page/1/'.$page.'.php')) include 'page/1/'.$page.'.php';
        else if (file_exists('page/2/'.$page.'.php')) include 'page/2/'.$page.'.php';
        else if (file_exists('page/3/'.$page.'.php')) include 'page/3/'.$page.'.php';
        else echo 'Page not Found';

    ?>

</body>
</html>

script.js

function nextURL(url, event) {
  history.pushState(null, null, url);
  obdata(url);
}

function obdata(url) {
   var xhr = new XMLHttpRequest();
   xhr.open("POST", url);
   xhr.responseType = 'document';
   xhr.send(null);
   xhr.onreadystatechange = function() {
      if (xhr.response == null) return;
      document.querySelector('body').innerHTML = xhr.response.body.innerHTML;
   }
}

window.addEventListener("popstate", function(event) {obdata(window.location.href);}, false);

.htaccess

RewriteEngine on
RewriteCond %{REQUEST_URI} !^.*\.(js|mp3|mp4|html|css|php|png|jpg|svg|exe|mkv|avi)$
RewriteRule .* index.php

/page/1/info.php

Login
<?php

if (true) {
    // header('Location: /news'); Происходит ошибка
    // echo '<script>nextURL(`/news`, event)</script>';  Ошибок нету но работает только тогда когда страница перезагружаеться

    echo 'Переадресовать на Новости';
}

?>

/page/2/register.php

register

/page/3/news.php

News

Ответы (1 шт):

Автор решения: Pavlo Vavilov

Чтоб перенаправить пользователя используйте функцию header Подробнее в документации

<?php
    header("Location: http://example.com/myOtherPage.php");
    die();
?>

Если все же не работает.

Также можно использовать и javascript

window.location.replace("http://example.com/myOtherPage.php");

Но не забывайте, если реализовываете переход через javascript на страницы, которые должен видеть только зарегистрированный пользователь обязательно проверяйте что он зарегистрирован через php и выдавайте 404.

→ Ссылка