1 Востаннє редагувалося Betterthanyou (13.09.2015 22:29:02)

Тема: Вийти, стерти сесії та куки

Я створив скрипт авторизації, але в ньому чомусь не працює вихід в браузерах Мазіла, Хром а в Експловері та Опера все робить скрипт не правильний чи в цих браузерах (Мазіла, Хром) включене функція запам'ятовування паролів?

    if($_POST['exit'])//Якщо натиснути кнопку вийти
    {
            session_destroy();//Видаляю всі сесії
            SetCookie("input_nickname","");//Видаляю cookie
            SetCookie("input_password","");//Видаляю cookie
            header("Location: http://");
            return false;//Хибно, не ввійшов
    }

2 Востаннє редагувалося P.Y. (10.03.2015 01:29:59)

Re: Вийти, стерти сесії та куки

в цих браузерах (Мазіла, Хром) включене функція запам'ятовування паролів?

Імовірно.
Щоб відключити автозапововнення цих полів браузером, можна додати атрибут autocomplete="off" у тег form чи input.

Також можливий випадок, коли браузер відображає не поточну версію сторінки, а закешовану. Якщо не помиляюсь, це теж можна відключити на рівні html.

Подякували: Betterthanyou1

3

Re: Вийти, стерти сесії та куки

Функція запам'ятовування паролів тут ні до чого, бо ви видаляєте сесію, а не збережений пароль.

Ви точно стартуєте сесію десь у скрипті, чи ні? Якщо ні, то спробуйте такий скрипт

if($_POST['exit'])//Якщо натиснути кнопку вийти
    {
            session_start();
            session_destroy();//Видаляю всі сесії
            SetCookie("input_nickname","");//Видаляю cookie
            SetCookie("input_password","");//Видаляю cookie
            header("Location: http://linuxtutorials.comlu.com");
            return false;//Хибно, не ввійшов
    }

4

Re: Вийти, стерти сесії та куки

return false;//Хибно, не ввійшов
це у вас що? Екшин якогось фреймворка?

5

Re: Вийти, стерти сесії та куки

ktretyak якщо я використовую сесію то функцію session_start(); викликаю на самому початку роботи php.
Vo_Vik якщо повертається true на початку сторінки нік і кнопка вийти, якщо false то війти зареєструватися (http://linuxtutorials.comlu.com)

це той код який авторизує

<?php
function login()
{
    session_start();
    
    if($_POST['exit'])//Якщо натиснута кнопка вийти
    {
            session_destroy();
            SetCookie("input_nickname","");
            SetCookie("input_password","");  
            header("Location: http://linuxtutorials.comlu.com");
            return false;
    }
    
        $mysql_host = "********";
        $db = "********";
        $mysql_user = "********";
        $mysql_password = "********";
    
        $connection = mysql_connect($mysql_host,$mysql_user,$mysql_password);//підключились до сервера
        mysql_set_charset('utf8',$connection);
        if(!$connection || !mysql_select_db($db,$connection))//підключились до бд
            exit(mysql_error());
   
    if($_SESSION['input_nickname']!="")//перевіряємо чи є сесії
    {
        $nickname = $_SESSION['input_nickname'];
        $password = $_SESSION['input_password'];
    }
    else if($_COOKIE['input_nickname']!="")//перевіряємо чи є кукі
         {
            $nickname = $_COOKIE['input_nickname'];
            $password = $_COOKIE['input_password'];
         }
        
    
    if($_POST['input_lt'])//Якщо натиснута кнопка ввійти
    {
        $nickname = $_POST['input_nickname'];
        $password = md5($_POST['input_password']);
    }  
    
    if($_SESSION['entrance'])//якщо користувач вже авторизований entrance==1
    {
        $query = mysql_query("SELECT nickname,password FROM user WHERE nickname='$nickname'");
        $row = mysql_fetch_array($query);
        if($row['password']==$password)
        {
            return true;
        }
        else//якщо помилка відправити на сторінку входу 
        {
            session_destroy();
            SetCookie("input_nickname","");
            SetCookie("input_password",""); 
            header('Location: http://linuxtutorials.comlu.com/users/entrance/?code=1');
            return false;
        }
    }     
    
    if($nickname=="")//якщо немає сесій,кук і ненатиснена кнопка input_lt
        return false;
///////////////////////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
        
        $query = mysql_query("SELECT nickname,password FROM user WHERE nickname='$nickname'");
        if($query!='')//перша авторизація
        {
            $row = mysql_fetch_array($query);
            if($row['password']==$password)
            {
                if($_POST['save']=="true")//запам'ятай мене
                {
                    setcookie("input_nickname",$nickname,time()+288000);
                    setcookie("input_password",$password,time()+288000);
                    $_SESSION['input_nickname']=$nickname;
                    $_SESSION['input_password']=$password;
                    $_SESSION['entrance']=true;
                }
                else//не запамятовуй
                    {
                        $_SESSION['input_nickname']=$nickname;
                        $_SESSION['input_password']=$password;
                        $_SESSION['entrance']=true;
                    }
                return true;
            }
            else//якщо помилка відправити на сторінку входу 
            {
                session_destroy();
                SetCookie("input_nickname","");
                SetCookie("input_password",""); 
                header('Location: http://linuxtutorials.comlu.com/users/entrance/?code=1');
                return false;
            }
        }
}
?>

6

Re: Вийти, стерти сесії та куки

Почитайте документацію до функції session_destroy(), вона не видаляє вам $_SESSION, а ви очевидно очікуєте, що вона буде пустою.

Подякували: Betterthanyou1

7 Востаннє редагувалося VTrim (10.03.2015 19:01:09)

Re: Вийти, стерти сесії та куки

якщо у вас є сессії,то потрібно робити ще
unset($_SESSION['input_nickname']);
unset($_SESSION['input_password']);

Подякували: Betterthanyou1

8

Re: Вийти, стерти сесії та куки

session_unset()

це те саме що

unset($_SESSION['input_nickname']);
unset($_SESSION['input_password']); 

?

9 Востаннє редагувалося mike (10.03.2015 19:22:38)

Re: Вийти, стерти сесії та куки

Betterthanyou написав:
session_unset()

це те саме що

unset($_SESSION['input_nickname']);
unset($_SESSION['input_password']); 

?

----------------

session_unset()


почиститься повністю всі змінні які були зареєстровані у сесії.
щось типу

foreach($_SESSION as $key => $value){
    unset($_SESSION[$key])
}
Подякували: Betterthanyou1

10 Востаннє редагувалося mike (10.03.2015 19:27:32)

Re: Вийти, стерти сесії та куки

І ще. Затріть куки перед видаленням(дестроєм) сесії для надійності.

unset($_COOKIE['key']...)
Подякували: Betterthanyou1