Делаю для сайта на некоторых страницах авторизацию чтобы пользователи зарегестрированные в системе и имеющие определенную группу смоги увидеть доступный для них контент.
Все вроде хорошо и авторизация работает (и выход из нее тоже)
но вот возникла маленькая заминка дело в том что закрытый контент становится доступным только после того как пользователь перегрузит страницу на которой находится
так вот вопрос в том как после выполнения авторизации (или разлогирования) заставить страницу перегрузится.
вот скрипты которые я использую:
файл index где вставлена форма авторизации
<?
if ( $_SESSION["entr"] == true ) echo '<div id="entry-div">
Информация:<br />
Вы вошли!<br /><br />
<button name="exit" onclick="ajaxex();">Выйти</button>
</div>';
else echo '<div id="entry-div">
<div id="message"></div>
<input type="text" id="login" class="inp" /><br />
<input type="password" id="pass" class="inp" /><br />
<button name="entry" onclick="ajaxcl();">Войти</button>
</div>';
?>
<?
if ( $_SESSION["entr"] == true ) {
echo 'Информация для авторизированных пользователей';
}
?>
файл authscript.js
var xmlhttp;
// Создаём объект для передачи данных
if ( window.XMLHttpRequest ) {xmlhttp = new XMLHttpRequest();}
else {xmlhttp = new ActiveXObject ( "Microsoft.XMLHTTP" );}
// Функция для входа
function ajaxcl()
{
document.getElementById('message').innerHTML = '';
// Проверяем на заполненность полей, если что не так, то меняем стиль для текстового поля
if ( document.getElementById('login').value == '' ) {document.getElementById('login').className = 'err';}
else {document.getElementById('login').className = 'inp';}
if ( document.getElementById('pass').value == '' ) {document.getElementById('pass').className = 'err';}
else {document.getElementById('pass').className = 'inp';}
// Если все поля заполнены
if ( ( document.getElementById('login').value !== '' ) && ( document.getElementById('pass').value !== '' ) )
{
// обрабатываем ответ
xmlhttp.onreadystatechange = function () {
// если запрос к скрипту удачный
if ( xmlhttp.readyState == 4 ) {
// если ответ в виде слова - Error - то в блок message выводим сообщение о ошибке, иначе выводим то, что получили
if ( xmlhttp.responseText == 'Error' ) {document.getElementById("message").innerHTML = 'Информация:<br />Данные введены не верно!';}
else {document.getElementById("entry-div").innerHTML=xmlhttp.responseText;}
}
}
// отправляем запрос
var login = document.getElementById("login").value;
var pass = document.getElementById("pass").value;
// Отправляем логин с паролём в get запросе
xmlhttp.open ( "GET", "authscript.php?l="+login+"&p="+pass+"&rn="+Math.random(), true );
xmlhttp.send ();
}
}
// Функция выхода из профиля
function ajaxex()
{
// обрабатываем ответ
xmlhttp.onreadystatechange = function () {
// если запрос к скрипту удачный
if ( xmlhttp.readyState == 4 ) {
// Выводим форму входа
document.getElementById("entry-div").innerHTML=xmlhttp.responseText;
}
}
// Отправляем get запрос с ключевым словом exit
xmlhttp.open ( "GET", "authscript.php?exit&rn="+Math.random(), true );
xmlhttp.send ();
}
файл authscript.php
<?php
session_start();
require_once('.settings.php'); // файл с данными для подключения
// Если мы получили данные для входа
if ( isset ( $_GET["l"] ) and ( $_GET["l"] <> "" ) and isset ( $_GET["p"] ) and ( $_GET["p"] <> "" ) )
{
// Обрабатываем логин и пароль - от взлома
$login = trim ( stripslashes ( htmlspecialchars ( $_GET["l"] ) ) );
$pass = trim ( stripslashes ( htmlspecialchars ( $_GET["p"] ) ) );
// Подключаемся к базе
// Вытаскиваем всех пользователей с этим логином и паролем
$result = mysql_query ( "SELECT * FROM users WHERE login='$login' AND pass='$pass'" );
$array = mysql_fetch_array ( $result );
// Если такой пользователь есть
if ( !empty ( $array ) )
{
// Создаём сессию и выводим информацию о успешном входе + кнопка выхода
$_SESSION["entr"] = true;
echo "Информация:<br />Вы вошли!<br /><br />
<button name='exit' onclick='ajaxex();'>Выйти</button>";
}
else echo "Error"; // Если такого пользователя нет, то выводим сообщение о ошибке
}
// Если пользователь нажал на кнопку выход
if ( isset ( $_GET["exit"] ) )
{
// Удаляем сессию
unset ( $_SESSION["entr"] );
unset ( $_SESSION["uid"] );
unset ( $_SESSION["group_blocks"] );
// Выводим форму входа
echo '<div id="message"></div>
<input type="text" id="login" class="inp" /><br />
<input type="password" id="pass" class="inp" /><br />
<button name="entry" onclick="ajaxcl();">Войти</button>';
}
?>