Converting PostgreSQL code to MySQL code

Discussion in 'PHP' started by cashflowtips, Aug 2, 2007.

  1. #1
    can anybody here help me to solve this problem. i know lots of u might wondering why do i want to convert to postgreSQL but i really want to know how can i do that. below is my code, if anyone know how, please help me. thanks.

    
    <?php
      class UserSession {
        private $php_session_id;
        private $native_session_id;
        private $dbhandle;
        private $logged_in;
        private $user_id;
        private $session_timeout = 600;      # 10 minute inactivity timeout
        private $session_lifespan = 3600;    # 1 hour session duration
        
        public function __construct() {
          # Connect to database
          $this->dbhandle = pg_connect("host=db dbname=prophp5 user=ed")  or die ("PostgreSQL error: --> " . pg_last_error($this->dbhandle));
          # Set up the handler
          session_set_save_handler(
              array(&$this, '_session_open_method'),
              array(&$this, '_session_close_method'),
              array(&$this, '_session_read_method'),
              array(&$this, '_session_write_method'),
              array(&$this, '_session_destroy_method'),
              array(&$this, '_session_gc_method')
          );
          # Check the cookie passed - if one is - if it looks wrong we'll scrub it right away      
          $strUserAgent = $GLOBALS["HTTP_USER_AGENT"];
          if ($_COOKIE["PHPSESSID"]) {
           # Security and age check
           $this->php_session_id = $_COOKIE["PHPSESSID"];
           $stmt = "select id from \"user_session\" where ascii_session_id = '" . $this->php_session_id . "' AND ((now() - created) < ' " . $this->session_lifespan . " seconds') AND user_agent='" . $strUserAgent . "' AND ((now() - last_impression) <= '".$this->session_timeout." seconds' OR last_impression IS NULL)";
           $result = pg_query($stmt);
           if (pg_num_rows($result)==0) {
             # Set failed flag
              $failed = 1;
             # Delete from database - we do garbage cleanup at the same time
             $result = pg_query("DELETE FROM \"user_session\" WHERE (ascii_session_id = '". $this->php_session_id . "') OR (now() - created) > $maxlifetime)");
             # Clean up stray session variables
             $result = pg_query("DELETE FROM \"session_variable\" WHERE session_id NOT IN (SELECT id FROM \"user_session\")");
             # Get rid of this one... this will force PHP to give us another
             unset($_COOKIE["PHPSESSID"]);
           };  
          };
          # Set the life time for the cookie
          session_set_cookie_params($this->session_lifespan);
          # Call the session_start method to get things started
          session_start();
        }
        
        public function Impress() {
          if ($this->native_session_id) {
            $result = pg_query("UPDATE \"user_session\" SET last_impression = now() WHERE id = " . $this->native_session_id);
          };
        }
        
        public function IsLoggedIn() {
          return($this->logged_in);
        }
        
        public function GetUserID() {
          if ($this->logged_in) {
            return($this->user_id);
          } else {
            return(false);
          };
        }
        
        public function GetUserObject() {
          if ($this->logged_in) {
            if (class_exists("user")) {
              $objUser = new User($this->user_id);
              return($objUser);
            } else {
              return(false);
            };
          };
        }
        
        public function GetSessionIdentifier() {
          return($this->php_session_id);
        }
        
        public function Login($strUsername, $strPlainPassword) {
          $strMD5Password = md5($strPlainPassword);
          $stmt = "select id FROM \"user\" WHERE username = '$strUsername' AND md5_pw = '$strMD5Password'";
          $result = pg_query($stmt);
          if (pg_num_rows($result)>0) {
            $row = pg_fetch_array($result);
            $this->user_id = $row["id"];
            $this->logged_in = true;
            $result = pg_query("UPDATE \"user_session\" SET logged_in = true, user_id = " . $this->user_id . " WHERE id = " . $this->native_session_id);
            return(true);
          } else {
            return(false);
          };
        }  
        
        public function LogOut() {
          if ($this->logged_in == true) {
            $result = pg_query("UPDATE \"user_session\" SET logged_in = false, user_id = 0 WHERE id = " . $this->native_session_id);
            $this->logged_in = false;
            $this->user_id = 0;
            return(true);
          } else {
            return(false);
          };
        }
        
        public function __get($nm) {
          $result = pg_query("SELECT variable_value FROM session_variable WHERE session_id = " . $this->native_session_id . " AND variable_name = '" . $nm . "'");
          if (pg_num_rows($result)>0) {
            $row = pg_fetch_array($result);
            return(unserialize($row["variable_value"]));
          } else {
            return(false);
          };
        }
        
    
        public function __set($nm, $val) {
          $strSer = serialize($val);
          $stmt = "INSERT INTO session_variable(session_id, variable_name, variable_value) VALUES(" . $this->native_session_id . ", '$nm', '$strSer')";
          $result = pg_query($stmt);
        }
        
        private function _session_open_method($save_path, $session_name) {
          # Do nothing
          return(true);
        }
        
        private function _session_close_method() {
          pg_close($this->dbhandle);
          return(true);
        }
        
        private function _session_read_method($id) {
          # We use this to determine whether or not our session actually exists.
          $strUserAgent = $GLOBALS["HTTP_USER_AGENT"];
          $this->php_session_id = $id;
          # Set failed flag to 1 for now
          $failed = 1;
          # See if this exists in the database or not.
          $result = pg_query("select id, logged_in, user_id from \"user_session\" where ascii_session_id = '$id'");
          if (pg_num_rows($result)>0) {
           $row = pg_fetch_array($result);
           $this->native_session_id = $row["id"];
           if ($row["logged_in"]=="t") {
             $this->logged_in = true;
             $this->user_id = $row["user_id"];
           } else {
             $this->logged_in = false;
           };
          } else {
            $this->logged_in = false;
            # We need to create an entry in the database
            $result = pg_query("INSERT INTO user_session(ascii_session_id, logged_in, user_id, created, user_agent) VALUES ('$id','f',0,now(),'$strUserAgent')");
            # Now get the true ID
            $result = pg_query("select id from \"user_session\" where ascii_session_id = '$id'");
            $row = pg_fetch_array($result);
            $this->native_session_id = $row["id"];
          };
          # Just return empty string
          return("");
        }
        
        private function _session_write_method($id, $sess_data) {
          return(true);
        }
        
        private function _session_destroy_method($id) {
          $result = pg_query("DELETE FROM \"user_session\" WHERE ascii_session_id = '$id'");
          return($result);
        }
        
        private function _session_gc_method($maxlifetime) {
          return(true);
        }
        
        
      }
    ?> 
    
    PHP:

     
    cashflowtips, Aug 2, 2007 IP
  2. cashflowtips

    cashflowtips Peon

    Messages:
    12
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    anyone? help needed
     
    cashflowtips, Aug 9, 2007 IP
  3. ecentricNick

    ecentricNick Peon

    Messages:
    351
    Likes Received:
    13
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Basically, all those SQL statements look like they'll work against an MySql connection apart from you need to remove the double quotes around the table names.

    Other than that, it's pretty much a straight swap of pg_ functions to mysql_ functions.
     
    ecentricNick, Aug 9, 2007 IP