Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
KVESTOR
15 / 15 / 4
Регистрация: 21.04.2014
Сообщений: 176
1

Удаление сессии

04.01.2015, 12:58. Просмотров 3786. Ответов 8
Метки нет (Все метки)

Искал в Google, пытался переделывать код, очищать сам (правда не получилось) и в итоге остановился на таком варианте:
PHP
1
2
3
4
5
6
7
8
9
10
<?php
session_start();
 
unset($_SESSION["authentication"]);
unset($_SESSION["user_login"]);
 
session_destroy();
header("Location: http://REDIRECT_PAGE/");
exit;
?>
Сессия не удаляется.

Потому что:
PHP
1
2
3
if ($authentication == $selected_data["authentication"]){
...
}
Выдает TRUE.

Еще немного кода:
PHP
1
2
$selecting_data = mysql_query("SELECT * FROM users WHERE user_login='$user_login'");
$selected_data = mysql_fetch_array($selecting_data);
Ну и еще чуток:
PHP
1
2
3
session_start();
$authentication = $_SESSION["authentication"];
$user_login = $_SESSION["user_login"];
Добавлено через 2 минуты
Ну и может это еще надо будет (вход пользователя):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
include("config.php");
 
$user_login = $_POST['user_login'];
$user_password = md5($_POST['user_password']);
 
$selecting_data = mysql_query("SELECT * FROM users WHERE user_login='$user_login'");
$selected_data = mysql_fetch_array($selecting_data);
 
$id = $selected_data["id"];
if ($selected_data["user_password"] == ($user_password)){
$authentication = md5(rand(0, 65535));
session_start();
$_SESSION["authentication"] = $authentication;
$_SESSION["user_login"] = $user_login;
header('Location: http://REDIRECT_PAGE');
mysql_query("UPDATE users SET authentication='$authentication' WHERE id='$id'");
}
Добавлено через 2 минуты
P. S. Прекрасно знаю, что md5 не очень-то подходит для хранения пароля. Но этот сайт для собственной практики и вряд ли его кто-то будет взламывать, с md5 я потом разберусь.

Добавлено через 2 минуты
Хм. Вместо array надо поставить assoc. Хм. Может проблема в этом? Хотя if выдает TRUE.

Добавлено через 56 секунд
Нет, замена array на assoc не помогла.

Добавлено через 2 минуты
Чую я уже близко к самостоятельному решению проблемы.

Добавлено через 1 минуту
Хм, хм. Но как работал if, когда было mysql_fetch_array, что-то тут не так...

Добавлено через 2 минуты
И тут надо правильно поставить скобки:
PHP
1
2
3
if ($selected_data["user_password"] == ($user_password)){
...
}
На:
PHP
1
2
3
if (($selected_data["user_password"]) == ($user_password)){
...
}
Добавлено через 1 минуту
Или так?
PHP
1
2
3
if ($selected_data["user_password"] == $user_password){
...
}
Добавлено через 41 минуту
include("config.php") стоит везде, где нужно.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2015, 12:58
Ответы с готовыми решениями:

Удаление переменных сессии
Добрый день) Подскажите пожалуйста: Все переменные сессии можно удалить как session_unset() или...

Удаление сессии по ее ID
Пытаюсь удалить сессию по session_id(). Все прекрасно работает, удаление происходит, но php...

Удаление сессии при отсутствии активности
Здравствуйте, делаю сайт на php. У меня появился такой вопрос как удалить сессию пользователя,...

Как сделать закачку и удаление файлов, создание и удаление каталогов?
Как сделать закачку и удаление файлов, создание и удаление каталогов?

сессии
Здравствуйте помогите пож разобраться с сессиями ну точнее написать пхп программу для моёго сайта....

8
Voka
206 / 198 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
04.01.2015, 13:30 2
Ты сессию удалил, а используешь переменные.
0
KVESTOR
15 / 15 / 4
Регистрация: 21.04.2014
Сообщений: 176
04.01.2015, 14:09  [ТС] 3
А как надо правильно написать все?

Добавлено через 1 минуту
Уже все перепробовал, после Вашего ответа.

Добавлено через 1 минуту
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
session_start();
 
unset($_SESSION["authentication"]);
unset($_SESSION["user_login"]);
 
unset($authentication);
unset($user_login);
 
session_destroy();
 
header("Location: http://ta.nikitaguriev.ru/");
 
exit;
?>
PHP
1
2
3
if ($_SESSION["authentication"] !== $selected_data["authentication"]){
...
}
0
Voka
206 / 198 / 110
Регистрация: 27.12.2010
Сообщений: 819
Записей в блоге: 1
04.01.2015, 14:10 4
ПРоверяй на существование переменной через isset()
0
04.01.2015, 14:10
KVESTOR
15 / 15 / 4
Регистрация: 21.04.2014
Сообщений: 176
05.01.2015, 08:20  [ТС] 5
Существует. А как её удалить?

Добавлено через 3 минуты
И так:
PHP
1
2
3
4
5
6
if(isset($_SESSION["authentication"])){
echo "Переменная отсутствует!";
}
if(!isset($_SESSION["authentication"])){
echo "Переменная существует!";
}
И так:
PHP
1
2
3
4
5
6
if(isset($authentication)){
echo "Переменная отсутствует!";
}
if(!isset($authentication)){
echo "Переменная существует!";
}
А в выходе и выше:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
session_start();
 
unset($_SESSION["authentication"]);
unset($_SESSION["user_login"]);
 
unset($authentication);
unset($user_login);
 
session_destroy();
 
header("Location: http://ta.nikitaguriev.ru/");
 
exit;
?>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
unset($authentication);
unset($user_login);
 
session_start();
$authentication = $_SESSION["authentication"];
$user_login = $_SESSION["user_login"];
 
include("config.php");
mysql_set_charset("utf8");
 
$current_year = date("o");
 
$current_time = time();
 
$selecting_data = mysql_query("SELECT * FROM users WHERE user_login='$user_login'");
$selected_data = mysql_fetch_assoc($selecting_data);
?>
Добавлено через 49 секунд
Ой.

Добавлено через 46 секунд
Все равно выдает что существует.

Добавлено через 17 часов 54 минуты
Up?
0
Exiss
2 / 2 / 1
Регистрация: 11.04.2013
Сообщений: 53
05.01.2015, 10:46 6
Лучший ответ Сообщение было отмечено KVESTOR как решение

Решение

Я на своем сайте использую вот такую кнопку выхода:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// Инициализировать сессию.
session_start();
// Unset все переменные сессии.
session_unset();
// Наконец, разрушить сессию.
session_destroy();
?>
<html>
<head>
    <meta charset="utf-8">
    <title>До свидания!</title>
</head>
<body style="background-image:url(images/fon.jpg)" align = "center">
<h1>Спасибо,что посетили наш сайт!<p>
<?
echo 'Вернуться на <a href="index.php">главную</a> страницу';
?>
</h1>
</body>
</html>
Может чем то поможет вам
2
pav1uxa
1860 / 1714 / 804
Регистрация: 23.01.2014
Сообщений: 6,087
Завершенные тесты: 1
05.01.2015, 12:30 7
Лучший ответ Сообщение было отмечено KVESTOR как решение

Решение

Цитата Сообщение от KVESTOR Посмотреть сообщение
PHP
1
2
3
4
5
6
if(isset($_SESSION["authentication"])){
echo "Переменная отсутствует!";
}
if(!isset($_SESSION["authentication"])){
echo "Переменная существует!";
}
Что это такое? isset() проверяет переменную на существование, и возвращает true если она существует. У Вас тут все перепутано. Вы выводите сообщение о том что она существует, когда ее нет. И наоборот.

И не нужно проверять существование переменной-сессии сравнивая ее с какими то там данными из mysql. Мы же не знаем что у Вас там. Может у Вас и там и там пусто, поэтому скрипт и говорит что они равны.

Проверяйте существование сессионной переменной функцией isset, только с учетом поправок описанных мной выше. Правильно так:
PHP
1
2
3
4
5
6
<?
session_start();
if ( isset($_SESSION['authentication']) )
    echo "Сессия установлена.";
else
    echo "Сессия отсутствует.";
1
Saneock
16 / 12 / 13
Регистрация: 05.01.2015
Сообщений: 66
05.01.2015, 13:23 8
Да в конце концов, проверьте существование сессии в инспекторе кода во вкладке Resources, будете знать в чём проблема, в сессиях или в коде проверки их существования.
0
DDim1000
1 / 1 / 0
Регистрация: 17.12.2011
Сообщений: 320
04.01.2017, 19:05 9
Подскажите пожалуйста, почему не удаляется сессия?:


Форма, где выводится картинка, с полем для ввода кода с картинки:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[PHP]
    include("reg/captcha/session_start.php");
...
 
[/PHP]
...
<form method="post" id="form_reg_" action="reg/hendller_reg.php">
...
<img id="captcha" src="./reg/captcha/?<?php echo session_name()?>=<?php echo session_id()?>">
<p id="reloadcaptcha">Показать другой код</p>
 
<label id="label-captcha">Код с картинки</label>
<span class="star-captcha">*</span>
<input type="text" name="reg_captcha" id="reg_captcha" value="" />
session_start.php:
PHP
1
session_start();
Обработчик формы:

PHP
1
2
3
4
5
6
7
8
9
include("captcha/session_start.php");
.....
 
    if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] != $_POST['reg_captcha']){$error[] = "Неверный код с картинки!";}
           unset($_SESSION['captcha_keystring']);
           // Unset все переменные сессии.
           $_SESSION = array();
           // Наконец, разрушить сессию.
            session_destroy();
0
04.01.2017, 19:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2017, 19:05

Сессии
Добрый день! пишу скрипт для корзины и у меня такая загвоздка, как сделать так что бы при...

Сессии
Здравствуйте, такая проблемка: Есть сайт который юзает свою сессию, хранит там свои переменные и...

Сессии
Например есть форма, после отправки которой производится проверка на пустоту переменных. Вылазит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru