Вы не зашли.
    
        
        
                Вот сделал. Подскажите пожалуйста, нет ли ошибок? А то я вот только начал use PDO...
Код:
| span style="color: #0000BB"><?php/////$time    = $_SERVER['REQUEST_TIME']; //Время с запуска страницы$offline = $time - 240;              //Лимит тунеянства/////$browser = isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA']) ? $_SERVER['HTTP_X_OPERAMINI_PHONE_UA'] : $_SERVER['HTTP_USER_AGENT'];//Получание данных о браузере$ip      = $_SERVER['REMOTE_ADDR'];//Получение данных об ip-адресе//DB CONNECTION//$host_db = 'mysql:host=localhost;dbname=tsb';$user    = 'root';$pass    = '';/////$db = new PDO($host_db, $user, $pass); //Соединение с БД$db->exec("SET NAMES 'utf8';");        //Установка кодировки//SESSION//if(isset($_COOKIE['PHPSESSID']))  {    session_start();        if(isset($_COOKIE['REMEMBER']) AND $_SESSION['ip'] != $ip)    {      $Hq1 = $db->prepare("SELECT `id`, `team` FROM `users` WHERE `remember`=1 AND `ip`=? LIMIT 1;");      $Hq2 = $db->prepare("UPDATE `users` SET `online`='$time', `browser`=?, WHERE `ip`=? LIMIT 1;");      /////      $Hq1->execute(array($ip));            if($Hq1->rowcount())      {        $_SESSION = null;        session_regenerate_id(1);                $Ha = $Hq1->fetch(PDO::FETCH_ASSOC);        $Hq1->closecursor();                $_SESSION['id']   = $Ha['id'];   //Из базы будет извлекаться...        $_SESSION['team'] = $Ha['team']; //Из базы будет извлекаться...        $_SESSION['ip']   = $ip;        /////        $Hq2->execute(array($browser, $ip));        $Hq2->closecursor();      }      else      {        $_SESSION = null;        session_destroy();      }    }    elseif(!isset($_COOKIE['REMEMBER']) AND $_SESSION['ip'] != $ip)    {      $_SESSION = null;      session_destroy();    }  }  else  {    $Hq3 = $db->prepare("REPLACE INTO `guests` SET `online`='$time', `browser`=?, `ip`=?;");    $Hq3->execute(array($browser, $ip));    $Hq3->closecursor();  }?> | 
Друг подсказал, что надо и браузер в это дело подключить и еще ип сравнивать только по 3м первым диапазонам. 4ый меняется.
        
                            
                Отредактировано tipsun (2011.04.13 18:06)
            
        
                
     
        
        
                         #42.
            Nu3oN
                                                Off
                        #42.
            Nu3oN
                                                Off
                
                                                    (11)
                                                            
                        Moderator
                        2011.04.13 20:08
                                                
                                                        
 
                вместо $db->exec("SET NAMES 'utf8';"); делай так 
Код:
| span style="color: #0000BB"><?php$db = new PDO($host_db, $user, $pass, array(PDO :: MYSQL_ATTR_INIT_COMMAND => 'SET NAMES `utf8`'));?> | 
Вместо fetch(PDO::FETCH_ASSOC); укажи один раз, и вс 

Код:
| span style="color: #0000BB"><?php$db-> setAttribute(PDO :: ATTR_DEFAULT_FETCH_MODE, PDO :: FETCH_ASSOC);?> | 
Вот это:
Код:
| span style="color: #0000BB"><?php$stmt = $db -> prepare("...");$stmt -> execute(array(...));$stmt -> closecursor();?> | 
Сделай как плагинизацию (в котором ты будешь разширять класс пдо) такой метод
Код:
| span style="color: #0000BB"><?phpclass ClassBase extends PDO {   //  ля ля ля    /**    * prepare    *    * @param  string $sql    Строка запроса.    * @return object    **/          public function prepare($sql)    {            $stmt = parent :: prepare($sql, array(PDO :: ATTR_STATEMENT_CLASS => array('PDOStatement')));        return $stmt;    }}?> | 
В общем глянь как это в роторе сделано! удобней чем каждый раз это все писать!
        
        
                            
                Я буду лучше голоден, но между креслом и рулем и на дороге.
            
        
     
        
        
                Спс 

Как будет время рассмотрю остальную половину сообщения. Под рукой компа нет... С моб не удобно...
Как бы мне снова не заблудиться 
 
        
                            
                Отредактировано tipsun (2011.04.14 08:08)
            
        
                
     
        
        
                Nu3oN написал:
$db = new PDO($host_db, $user, $pass, array(PDO :: MYSQL_ATTR_INIT_COMMAND => 'SET NAMES `utf8`'));
http://php.net/ChangeLog-5.php#5.3.6Implemented FR #47802 (Support for setting character sets in DSN strings). (Kalle)
так, к сведению, начиная с PHP 5.3.6 кодировку можно указвыать прямо в строке подключения
        
        
                
    
 
        
        
                Ахринеть, это только сессия! 

Надо более компактно и логично сделать...
Код:
| span style="color: #0000BB"><?php$time    = $_SERVER['REQUEST_TIME']; //Время с запуска страницы$offline = $time - 240;              //Лимит тунеянства/////$browser = $_SERVER['HTTP_USER_AGENT'];$ip      = $_SERVER['REMOTE_ADDR'];$stat_ip = substr($ip, 0, strrpos($ip, '.'));//DB CONNECTION//$base = array('localhost', //Host'root',      //User'',          //Pass'tsb',       //Base'utf8');     //Char if('5.3.6' > phpversion())  {    $attr[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES `'.$base[4].'`;';  } $db = new PDO('mysql:host='.$base[0].';dbname='.$base[3].';charset='.$base[4].';', $base[1], $base[2], $attr);//SESSION//if(!empty($_COOKIE['PHPSESSID']))  {    session_start();        if(!empty($_COOKIE['REMEMBER']) && $_SESSION['browser'] != $browser && $_SESSION['ip'] != $stat_ip)    {      $Hq1 = $db->prepare("      SELECT `id`, `team`      FROM `users`      WHERE `remember`=1 AND `browser`=? AND `ip` LIKE ?;");            $Hq2 = $db->prepare("      UPDATE `users`      SET `online`='$time'      WHERE `browser`=? AND `ip` LIKE ?;");      /////      $Hq1->execute(array($browser, $stat_ip.'%'));            if($Hq1->rowcount())      {        $_SESSION = null;        session_regenerate_id(1);                $Ha = $Hq1->fetch(PDO::FETCH_ASSOC);        $Hq1->closecursor();                $_SESSION['id']      = $Ha['id'];        $_SESSION['team']    = $Ha['team'];        $_SESSION['browser'] = $browser;        $_SESSION['ip']      = $stat_ip;        /////        $Hq2->execute(array($browser, $stat_ip.'%'));        $Hq2->closecursor();      }      else      {        $_SESSION = null;        session_destroy();        setcookie('PHPSESSID', null);      }    }    elseif(empty($_COOKIE['REMEMBER']) && $_SESSION['browser'] != $browser && $_SESSION['ip'] != $stat_ip)    {      $_SESSION = null;      session_destroy();      setcookie('PHPSESSID', null);    }  }  else  {    $Hq3 = $db->prepare("    REPLACE INTO `guests`    SET `online`='$time', `browser`=?, `ip`=?;");    $Hq3->execute(array($browser, $ip));    $Hq3->closecursor();  }?> | 
                Отредактировано tipsun (2011.04.16 14:02)
            
        
                
     
        
        
                Чет мне народ говорит, что говнокод.
Типа по диапазону не стоит проверять, да и если так, то можно через модем билайн зайти, браузер поставить как у жертвы и все...
- - - -
Как тогда сделать?
        
                            
                Отредактировано tipsun (2011.04.17 06:06)
            
        
                
     
        
        
                я вообще не понимаю, нафига ты что-то мудришь? ты банковскую систему чтоли пишешь? идентифицируй пользователя по сессии и хватит. если пользователь умудрился потерять потерять куки, то ему уже ничто не поможет, ИМХО.
        
        
                
    
 
        
        
                Вебмани хотел переплюнуть 

- - - -
Снова я заблудился.
- - - -
Пофиг на функцию запомнить...
Вот типа авторизовался, побродил.
Вышел кука ид сессии удалилась, она ведь при закрытия браузера удаляется...
И эмм... все?
- - - -
Код:
| span style="color: #0000BB"><?phpif($_COOKIE['PHPSESSID'])  {    session_start();  }?> | 
                Отредактировано tipsun (2011.04.17 08:08)
            
        
                
     
        
        
                Зачем вообще на куках делать? Сессия же интереснее  и никто не увидит хэш.
        
        
                            
                ДАУН-Данная Аватара Унаследована Незнайкой