Problem z mechanizmem sesji PHP

Wszystko co dotyczy tworzenia i optymalizacji stron internetowych oraz programowania
filus0802

Użytkownik
Posty: 3
Rejestracja: 08 maja 2011, 20:21

Problem z mechanizmem sesji PHP

Post23 maja 2011, 19:18

Witam!! Może ktoś mi pomóc. Otóż wywala mi taki błąd przy próbie odpalenia tejże sesji.

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\PROJEKT\sessions.php on line 59

Mechanizm próbuję odpalić za pomocą xampp. Bazę danych stworzyłem w PHPmyADMIN.

Poniżej umieszczam kod sessions.php

Kod: Zaznacz cały

<?php
 
   define('SESSION_TIME', 3600);
 
   define('WEBBOT_S', 0);
   define('GUEST_S', 1);
   define('USER_S', 2);
 
   define('ANONYMOUS', 0);
 
   class session{
      var $session_id;
      var $session_user;
      var $session_ip;
      var $session_browser;
      var $session_time;
 
      var $sql_id;
      var $ip;
      var $browser;
      var $type;
 
      var $userdata;
         
          function spy_guest(){
         if(getenv('HTTP_X_FORWARDED_FOR') != ''){
            $this -> ip = (!empty($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : ((!empty($_ENV['REMOTE_ADDR'])) ? $_ENV['REMOTE_ADDR'] : $REMOTE_ADDR );
 
            if(preg_match("/^([0-9]+.[0-9]+.[0-9]+.[0-9]+)/", getenv('HTTP_X_FORWARDED_FOR'), $ip_list)){
               $private_ip = array('/^0./', '/^127.0.0.1/', '/^192.168..*/', '/^172.16..*/', '/^10..*/', '/^224..*/', '/^240..*/');
               $this -> ip = preg_replace($private_ip, $this -> ip, $ip_list[1]);
            }
         }else{
            $this -> ip = (!empty($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : ((!empty($_ENV['REMOTE_ADDR'])) ? $_ENV['REMOTE_ADDR'] : $REMOTE_ADDR );
         }
 
         $this -> browser = (!empty($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : $_ENV['HTTP_USER_AGENT'];
 
         if(preg_match('/(lycos|googlebot|slurp@inktomi|ask jeeves|whatuseek|ia_archiver)/i', $this -> browser)){
            $this -> type = WEBBOT_S;
         }else{
            $this -> type = GUEST_S;
         }
      } // end spy_guest();
         
            function is_session(){
         if(strlen($_COOKIE['my_session_id']) == 32){
            $this -> session_id = $_COOKIE['my_session_id'];
            setcookie('my_session_id', $this->session_id, time() + SESSION_TIME);
            $this -> sql_id = mysql_real_escape_string($this->session_id);
            return 1;
         }
         return 0;
      } // end is_session();
         
          function load_session(){
         $r = mysql_query('SELECT s.*, u.*
                  FROM sessions s LEFT JOIN users u ON (s.session_user <> 0 AND s.session_user = u.user_id)
        [u]WHERE s.session_id = ''.$this -> sql_id.'' AND s.session_time > '.(time() - 3600))[/u] [color=#FF4040]59 linijka kodu[/color]
            $this -> session_id = $row[0];[/color]
            $this -> session_user = $row[1];
            $this -> session_ip = $row[2];
            $this -> session_browser = $row[3];
            $this -> session_time = $row[4];
 
            if($this -> session_user != ANONYMOUS){
               $this -> type = USER_S;
               $this -> userdata['ID'] = $row[5];
               $this -> userdata['NAME'] = $row[6];
            }else{
               $this -> type = GUEST_S;
            }
 
            if($this -> session_browser == $this -> browser && $this -> session_ip == $this -> ip){
               mysql_query('UPDATE sessions SET session_time = ''.time().'' WHERE session_id = ''.$this->sql_id.''');
               return 1;
            }
         }
         $this -> type = GUEST_S;
         return 0;
      } // end load_session();
         
         function delete_session(){
         mysql_query('DELETE FROM sessions WHERE session_id=''.$this->sql_id.''');
         setcookie('my_session_id', '', 0);
      } // end delete_session();
         
          function bot_session(){
         $this -> session_id = '';
         $this -> session_user = 0;
         $this -> session_ip = $this -> ip;
         $this -> session_browser = $this -> browser;
         $this -> session_time = 0;
         $this -> userdata = array('ID' => 0, 'NAME' => '');
      } // end bot_session();

      function guest_session(){
         $this -> session_id = md5(uniqid($this->ip.time()));
         $this -> session_user = 0;
         $this -> session_ip = $this -> ip;
         $this -> session_browser = $this -> browser;
         $this -> type = GUEST_S;
         setcookie('my_session_id', $this->session_id, time()+SESSION_TIME);
         mysql_query('INSERT INTO sessions VALUES(''.$this->session_id.'', '0', ''.$this->ip.'', ''.mysql_real_escape_string($this->browser).'', ''.time().'')');
      } // end guest_session();
         
            function user_session(){
         $this -> garbage_collector();
 
         $r = mysql_query('SELECT user_id FROM users WHERE user_name = ''.mysql_real_escape_string($_POST['login']).'' and user_password = ''.md5($_POST['password']).''');
         if($id = mysql_fetch_row($r)){
            if(strlen($this->session_id) == 32){
               mysql_query('UPDATE sessions SET session_user = '.$id[0].', session_time = ''.time().'' WHERE session_id = ''.$this->session_id.''');
               if(mysql_affected_rows() == 1){
                  setcookie('my_session_id', $this->session_id, time()+SESSION_TIME);
               }
            }else{
               $this -> session_id = md5(uniqid($this->ip.time()));
               setcookie('my_session_id', $this->session_id, time()+SESSION_TIME);
               mysql_query('INSERT INTO sessions VALUES(''.$this->session_id.'', ''.$id[0].'', ''.$this->ip.'', ''.mysql_real_escape_string($this->browser).'', ''.time().'')');
            }
            return 1;
         }
         return 0;
      } // end user_session();
         
           function garbage_collector(){
            UPDATE users, sessions SET user_lastvisit = sessions.session_time WHERE sessions.session_time < '.(time() - SESSION_TIME)
         mysql_query('DELETE FROM sessions WHERE session_time < '.(time() - SESSION_TIME));
      } // end garbage_collector();
   }
   ?>
         
         


Nie wiem w czym tkwi problem. Podsyłam jeszcze moją bazę danych, jaką utworzyłem do tego mechanizmu.

Kod: Zaznacz cały

CREATE TABLE IF NOT EXISTS `sessions` (
  `session_id` int(32) NOT NULL AUTO_INCREMENT,
  `session_user` int(8) NOT NULL,
  `session_ip` varchar(15) NOT NULL,
  `session_browser` varchar(128) NOT NULL,
  `session_time` int(11) NOT NULL,
  PRIMARY KEY (`session_id`)
) ENGINE=MEMORY DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;

Kod: Zaznacz cały

CREATE TABLE IF NOT EXISTS `users` (
  `users_id` int(10) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(32) NOT NULL,
  `user_password` varchar(32) NOT NULL,
  `user_last_vist` varchar(128) NOT NULL,
  PRIMARY KEY (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;


Jeśli mam coś jeszcze podać, to piszcie.

-- 22 maja 2011, 18:26 ---

WHERE s.session_id = ''.$this -> sql_id.'' AND s.session_time > '.(time() - 3600));

To jest ta 59 linijka kodu, czy może mi ktoś to wyjaśnić??

Awatar użytkownika
lewy

Ekspert
Posty: 1462
Rejestracja: 15 gru 2009, 11:10

Problem z mechanizmem sesji PHP

Post23 maja 2011, 23:29

$r = mysql_query('SELECT s.*, u.*
FROM sessions s LEFT JOIN users u ON (s.session_user <> 0 AND s.session_user = u.user_id)
WHERE s.session_id = ''.$this -> sql_id.'' AND s.session_time > '.(time() - 3600)) 59 linijka kodu


Tam są pojedyncze ' ' czy cudzysłowia "" bo coś mi się wydaje, że to pierwsze.



  • Reklama

Wróć do „Webmastering i programowanie”



Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości