Сайт без перезагрузки
Всем доброго времени суток, я написал функции 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 шт):
Чтоб перенаправить пользователя используйте функцию header Подробнее в документации
<?php
header("Location: http://example.com/myOtherPage.php");
die();
?>
Если все же не работает.
Также можно использовать и javascript
window.location.replace("http://example.com/myOtherPage.php");
Но не забывайте, если реализовываете переход через javascript на страницы, которые должен видеть только зарегистрированный пользователь обязательно проверяйте что он зарегистрирован через php и выдавайте 404.