ixin
Guest
куки и авторизация
Решил написать авторизация через куки, но возникла следующая проблема.
Алгоритм авторизации такой:
В самом начале когда пользователь входит на индексную страницу скрипт проверяет существуют ли куки, если существуют он пробивает значение куки по базе данных, если они совпали, то в браузере выдаётся кто авторизован, если не совпали, то удаляются куки, и проверяются по базе данных значения введённые пользователем, если они не совпадают ничего не делаем, если совпадают авторизуем!!! Скрипт авторизации имеет такой вид:
Решил написать авторизация через куки, но возникла следующая проблема.
Алгоритм авторизации такой:
В самом начале когда пользователь входит на индексную страницу скрипт проверяет существуют ли куки, если существуют он пробивает значение куки по базе данных, если они совпали, то в браузере выдаётся кто авторизован, если не совпали, то удаляются куки, и проверяются по базе данных значения введённые пользователем, если они не совпадают ничего не делаем, если совпадают авторизуем!!! Скрипт авторизации имеет такой вид:
PHP:
<?php
// функция присоединения к базе данных
function connect() {
mysql_connect( "localhost", "root", "") or
die ( mysql_error() );
mysql_select_db( "PR0ject_2501");
}
// функция авторизации
function authentification( ){
global $authMenu, $user, $pswd, $auth, $PR0login, $PR0pass, $id;
// в $res заносим всю базу данных
$res = mysql_query( "SELECT * from ureg" );
// $authMenu находится поле введения данных выплывающее при первом заходе на индексную страницу
$authMenu = "
<center>
<form action=\"index.php\" method=\"POST\">
<input type=\"text\" name=\"user\" size=\"15\"><br>
<input type=\"password\" name=\"pswd\" size=\"15\"><br>
<input type=\"submit\" name=\"auth\" value=\"go\"><br>
</form>
</center>";
// проверяем существование куки и верность содержащихся в них значений
if ( isset( $PR0login ) && isset( $PR0pass ) )
while( $Row = mysql_fetch_row( $res ) )
if( $Row[ 0 ] == $PR0login ){
if( $Row[ 1 ] == $PR0pass ){
// если всё нормально то присваиваем переменной которая выводится на индексной странице логин
$authMenu = $PR0login;
break;
}
// если, не правильные значения удаляем куки
else{
SetCookie( "PR0login" );
SetCookie( "PR0pass" );
} }
// если была нажата кнопка submit то проверяем введённые значения, если они верны то заносим в куки и при следующем заходе пользователь будет автоматически авторизован, если данные не правильные то ничего не делаем
if( isset( $auth) )
while( $Row = mysql_fetch_row( $res ) )
if( $Row[ 0 ] == $user)
if( $Row[ 1 ] == $pswd){
SetCookie( "PR0login", $user, time() + 3600);
SetCookie( "PR0pass", $pswd, time() + 3600);
$authMenu = $PR0login;
header( "Location: [url]http://PR0ject2501[/url]");
break;
}
// на индексной странице под авторизованным логином есть ссылка под названием "выход" для того чтобы пользователь мог ввести другой логин, как раз то здесь и проблема. Когда пользователь нажимает на этот линк, он отсылает на индексную с передачей значения переменной $id=1, в этом модуле если $id==1 то мы просто на просто удаляем куки авторизации. Всё было бы хорошо, но после удаления при введении нового логина и пароля почему то не авторизуется, куки по прежнему имеют вид "PR0login: ", "PR0pass: ". А когда закрываешь браузер, и заходишь снова ( до закрытия мы нажимали на линк "выход" ) он тебя авторизует. Помогите разобраться!!!
if( $id == 1 ){
SetCookie( "PR0login" );
SetCookie( "PR0pass" );
header( "Location: [url]http://PR0ject2501[/url]");
}
}
?>