Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2011, 20:17   #1
AvernuS
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 23
По умолчанию Проблема с логаутом

Собственно все это дело начинает зацикливаться, но я не могу понять, как исправить, чтобы работало правильно
PHP код:
<?php
session_start
();
define('INCLUDE_CHECK',true);
include 
"../config/dbconf.php";
    if(isset(
$_SESSION['uid']) and isset($_SESSION['lg']))
    {
    
$acttype "logout";
    
$uid $_SESSION['uid'];
    
$ulogin $_SESSION['lg'];
    
    
$reqlogout "INSERT INTO user_logs(`uid`, `ulog`, `actdate`, `acttype`) VALUES('$uid', '$ulogin', NOW(), '$acttype')";
    
mysql_query($reqlogout);
    
session_destroy();
    exit(
'<meta http-equiv="refresh" content="0";url="../index.php">');
    }
    else
    {
        exit(
'<meta http-equiv="refresh" content="0";url="../index.php">');
    }
?>
Помогите, пожалуйста, исправить проблему.
AvernuS вне форума Ответить с цитированием
Старый 07.07.2011, 07:32   #2
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

покажите как он вызывается этот скрипт
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 07.07.2011, 07:33   #3
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

и подскажите для чего вы в практически каждом скрипте определяете
define('INCLUDE_CHECK',true); ??
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 07.07.2011, 13:18   #4
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

mrgrudge: Какая-то простейшая защита для вот этого "../config/dbconf.php" файла - там проверка на установленный в труъ INCLUDE_CHECK.

AvernuS: А почему вы таки пользуетесь exit() а не die() ?
Кстати, это не всегда срабатывает, да. Говорю из собственного опыта - не все браузеры хотят такое принимать. Т.е. html фичи могут и не работать, если они не в таге <html>. Честно-честно. Пытались делать редирект как джаваскриптом, так и http-equiv, не срабатывало в 100% случаев у клиентов, пока не обвернули всё в <html><body></body></html>. Хотя это специфично мы обязаны делать редирект для всех поголовно, на практике - на сайте можно и забить на малый процент юзеров.

Не уверен, что сработает, но попробуйте всё же редиректы изменить на
PHP код:
die('<html><head><meta http-equiv="refresh" content="0;url=../index.php"></head><body></body></html>'); 

Последний раз редактировалось graymaster; 07.07.2011 в 13:27.
graymaster вне форума Ответить с цитированием
Старый 07.07.2011, 13:18   #5
AvernuS
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 23
По умолчанию

логаут вызывается при переходе на него по ссылке или просто при набборе адреса в браузере.
а инклуд_чек там, потому что к нему цепляется инклуд файл в котором стоит вначале проверка if(!defined('include_check'))
AvernuS вне форума Ответить с цитированием
Старый 07.07.2011, 14:38   #6
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

Цитата:
Сообщение от AvernuS Посмотреть сообщение
логаут вызывается при переходе на него по ссылке или просто при набборе адреса в браузере.
а инклуд_чек там, потому что к нему цепляется инклуд файл в котором стоит вначале проверка if(!defined('include_check'))
т.е. по факту, вы определяете константу, и следующей же строкой смотрите сидит ли в ней то что нужно?!
чем вас не устроил старый добрый require_once.

По сабжу
построчно проверьте весь год логаута, начная с проверки на существование переменных с сессиями (почему кстати не куки?)и по порядку.
типа
if ($_SESSION['uid'])
{ echo $_SESSION['uid'];}
далее проверить и вывести обе, и в самом конце вывести на экран вашу строку запроса ( echo $reqlogout)к бд, и попробовать выполнить ее через phpmyadmin или консоль чем вы там пользуетесь.
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 08.07.2011, 19:37   #7
AvernuS
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 23
По умолчанию

а разве при require_once файл блокируется на выполнение.
ну тоесть, если стоит эта константа, то там в конце инклуд файла приписано после проверки die(); тоесть если просто прописать в браузере адрес инклуд файла, напишет, что нет к нему доступа.
И еще аопрос, целесообразно использовать вместе сессии и куки?
AvernuS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37