Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Целочисленные значения обнуляются в сессии
 
 автор: alba   (11.08.2007 в 12:55)   письмо автору
 
 

Привет всем.

После авторизации записываю данные пользователя в сессию, все записывается нормально. После нескольких переходов по страницам целочисленные значения обнулятся...

В чем может быть проблема?

   
 
 автор: alba   (11.08.2007 в 13:27)   письмо автору
 
   для: alba   (11.08.2007 в 12:55)
 

Ну кто-нибудь, помогите!!!

   
 
 автор: Unkind   (11.08.2007 в 13:37)   письмо автору
 
   для: alba   (11.08.2007 в 13:27)
 

Просто так ничего не бывает.

   
 
 автор: alba   (11.08.2007 в 13:47)   письмо автору
 
   для: Unkind   (11.08.2007 в 13:37)
 

Вот код функци авторизации:


function setSession($row, $admin=1){
        if($admin){
            $_SESSION['id'] = $this->id = $row->id;
            $_SESSION['name'] = $this->name = $row->name;
            $_SESSION['login'] = $this->login = $row->login;
            $_SESSION['password'] = $this->password = '';//$row->password;
            $_SESSION['type'] = $this->type = $row->type;
            $_SESSION['user_type'] = $this->user_type = $row->user_type;
            $_SESSION['regdate'] = $this->regdate = $row->regdate;
            $_SESSION['block'] = $this->block = $row->block;
        }else{
            $this->id = $row->block ? 0 : $row->id;
            $this->name = $row->name;
            $this->login = $row->login;
            $this->password = '';
            $this->type = $row->type;
            $this->user_type = '';//$row->user_type;
            $this->regdate = $row->regdate;
            $this->block = $row->block;
        }
    }
    
    function initSessionAdmin($op){

        session_name($this->sessionName());
        session_start();
        
        if($op!='login' && isset($_SESSION['id']) && isset($_SESSION['name']) && isset($_SESSION['login']) && isset($_SESSION['password']) && isset($_SESSION['type']) && isset($_SESSION['user_type']) && isset($_SESSION['regdate']) && isset($_SESSION['block']) && $_SESSION['id']!==0 && $_SESSION['type']==17){
            $id = getParam($_SESSION, 'id', 0);
            $query = "SELECT u.id, u.name, u.login, u.password, u.type, t.type AS user_type, u.regdate, u.block"
            ."\n FROM users AS u, user_type AS t"
            ."\n WHERE u.type=17 AND u.type=t.id AND u.id=$id"
            ."\n LIMIT 1"
            ;
            $rows = mysql_query($query);
            if($row = mysql_fetch_object($rows)) {
                $this->setSession($row);
            }else{
                Redirect("login.php");
            }
            mysql_free_result($rows);
        }elseif($op==='login' && isset($_POST['login']) && isset($_POST['password']) && $_POST['login']!='' && $_POST['password']!=''){
            $login = getParam($_POST, 'login', '');
            $password = getParam($_POST, 'password', '');
            $password = md5($password);
            $query = "SELECT u.id, u.name, u.login, u.password, u.type, t.type AS user_type, u.regdate, u.block"
            ."\n FROM users AS u, user_type AS t"
            ."\n WHERE u.type=17 AND u.type=t.id AND login='$login' AND password='$password'"
            ."\n LIMIT 1"
            ;
            $rows = mysql_query($query);
            if($row = mysql_fetch_object($rows)) {
                $this->setSession($row);
            }else{
                Redirect("login.php");
            }
            mysql_free_result($rows);
        }else{
            Redirect("login.php");
        }
    }


в коде страницы вызывается функция initSessionAdmin($op)

Гляньте пожалуйста, нет ли ошибок...

   
 
 автор: Alba   (11.08.2007 в 13:51)   письмо автору
 
   для: alba   (11.08.2007 в 13:47)
 

Почему-то после пары переходов по страницам поля id, type и block обнуляются...

   
 
 автор: Trianon   (11.08.2007 в 14:07)   письмо автору
 
   для: Alba   (11.08.2007 в 13:51)
 

если б id обнулялся - Вас бы выбрасывало на login.php

Если так и происходит, довольно интересно как определена функция getParm.
Есть подозрение на ее счет.

   
 
 автор: alba   (11.08.2007 в 14:17)   письмо автору
 
   для: Trianon   (11.08.2007 в 14:07)
 

с getParam все в порядке, взял ее из joomla, пробовал убирать ее - результат тот же

   
 
 автор: Trianon   (11.08.2007 в 14:29)   письмо автору
 
   для: alba   (11.08.2007 в 14:17)
 

А сlass::SessionName как определяется?

   
 
 автор: Alba   (11.08.2007 в 14:32)   письмо автору
 
   для: Trianon   (11.08.2007 в 14:29)
 

sessioname - это md5 от названия сайта

   
 
 автор: Trianon   (11.08.2007 в 13:48)   письмо автору
 
   для: alba   (11.08.2007 в 13:27)
 

и Вы нигде на последующих страницах не присваиваете ничего сессионным переменным, и не используете ни одну session_* функцию, кроме session_start()?

   
 
 автор: Alba   (11.08.2007 в 13:53)   письмо автору
 
   для: Trianon   (11.08.2007 в 13:48)
 

Нет, больше нигде не использую...

   
 
 автор: alba   (11.08.2007 в 14:30)   письмо автору
 
   для: Alba   (11.08.2007 в 13:53)
 

и еще, забыл сказать...

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования