Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,803

    inserire una classe per il salvataggio delle sessioni nel db

    salve ragazzi apro questa discussione, perche mi serve il vostro aiuto, nel lavoro che sto facendo , ho creato il pannello di amministrazione con login. premetto che usao un template esterno smarty comunque vi posto l area privata
    Codice PHP:
    session_start();
    $area_administrator=isset($_SESSION['area_administrator'])?$_SESSION['area_administrator']:'';
    if(
    $area_administrator){
    ob_start();
    echo 
    $area_administrator ;
    echo
    "
    "
    ;
    echo
    "[url='logout.php']logout[/url]";
    $pagcontenuto['admin_content'] = ob_get_contents();
    ob_end_clean();
    }
    else
    {
    //========================================================================================================
    //qui inizia laparte se l admin non e loggiato              #
    //========================================================================================================
    ob_start();
    unset(
    $_SESSION['area_administrator']);
    if(!isset(
    $_POST['action'])){$action ="";}else{$action =trim(addslashes($_POST['action']));}
    if(!isset(
    $_POST['login'])){$login ="";}else{$login =trim(addslashes($_POST['login']));}
    if(!isset(
    $_POST['password'])){$password ="";}else{$password =trim(addslashes($_POST['password']));}
    $CONFIG['check_table'] = array("action"=>"check_global","login"=>"check_global","password"=>"check_global");
    function 
    areaAdmin($action,$login,$password){
    global 
    $CONFIG ;
    $action =trim(addslashes($action));
    $login =trim(addslashes($login));
    $password =trim(addslashes($password));
    if(!isset(
    $login)or $login ==""){
    echo
    "<div class='errorlogin'>Il campo login e obbligatorio</div>";
       echo
    "<script type=\"text/javascript\">";
       echo
    "setTimeout(\"location.href='".$_SERVER['PHP_SELF']."'\",3000)";
       echo
    "</script>";
        return;
    }if(!isset(
    $password)or $password ==""){
    echo
    "<div class='errorlogin'>Il campo password e obbligatorio</div>";
       echo
    "<script type=\"text/javascript\">";
       echo
    "setTimeout(\"location.href='".$_SERVER['PHP_SELF']."'\",3000)";
       echo
    "</script>";
        return;
        }else{return 
    "TRUE" ;}
    }
    if(
    $action == "controladmin")
    {
    $controlloAmministrator areaAdmin($action,$login,$password);
    if(
    $controlloAmministrator !="TRUE")
    {
    echo 
    $controlloAmministrator;
    }
    else
    {

    if(!
    file_exists("../include/funzion.php")){
    echo
    "Il files funzioni.php non e presente";
    }else{
    include
    "../include/funzion.php";
    }
    $password criptpass($password);
    $control_administrator mysql_query("SELECT * FROM amministratori WHERE login='$login' AND password ='$password' AND enable =1 LIMIT 0,1");
    if(@
    mysql_num_rows($control_administrator)==1)
    {
    $_SESSION['area_administrator']= "$login";
            
     echo 
    "<meta http-equiv=\"Refresh\" content=\"3; URL=index.php\">Login effettuato correttamente ";
    }
    else
    {
     echo 
    "<meta http-equiv=\"Refresh\" content=\"3; URL=index.php\">Login non corretto ";
    }
    }
    }
    echo
    "<div class='divloginadmin'>\n";
    echo
    "<div class='divloginadmintitle'>\n";
    echo
    "Administrator";
    echo
    "</div>";
    echo
    "<table  class='' style='margin:0 auto; border:none; padding-top:10px;padding-bottom:20px;' cellpadding='0' cellspacing='0'  >\n";
      echo
    "<tr>\n";
         echo
    "<td></td>\n";
         echo
    "<td>\n";
    echo
    "<form name='' action='".$_SERVER['PHP_SELF']."' method='post' id=''>\n";
     echo
    "<table class='tabinputlogin' style='margin:0 auto; border:none; width:100%;' cellpadding='3' cellspacing='0'  >\n";
       echo
    "<tr>\n";
         echo
    "<td></td>\n";
        echo
    "<td>[b]Login:[/b]
    <input type='text' name='login'  style='border: 1px solid #ddd; width:180px;'/></td>\n"
    ;
          echo
    "</tr>";
         echo
    "<tr>\n";
          echo
    "<td></td>\n";
            echo
    "<td>[b]Password:[/b]
    <input type='password' name='password' style='border: 1px solid #ddd; width:180px;' /></td>\n"
    ;
          echo
    "</tr>\n";
    echo
    "</table>\n";
    echo
    "<table     style='margin:0 auto; border:none; width:100%;' cellpadding='3' cellspacing='0'  >\n";
          echo
    " <tr>";
             echo
    "<td><input type = 'hidden' name = 'action' value='controladmin'/></td>";
             echo
    "<td><input type='submit' value='Accedi' name='' style='border: 1px solid #ddd; width:100px;' /></td>\n";
        echo
    "</tr>\n";
     echo
    "</table>\n";
     echo
    "
    "
    ;
     echo
    "<table  class='infologin'   style='margin:0 auto; border:none; width:100%;' cellpadding='3' cellspacing='0'  >\n";
          echo
    " <tr>\n";
             echo
    "<td>".$_SERVER['REMOTE_ADDR']."</td>\n";
        echo
    "</tr>\n";
         echo
    " <tr>\n";
           echo
    "<td></td>\n";
        echo
    "</tr>\n";
     echo
    "</table>\n";
     echo
    "</form>\n"
    echo
    "</td>\n";
     echo
    "<td></td>\n";
    echo
    "</tr>\n";
    echo
    "</table>\n";
    echo
    "</div>\n";
    $pagcontenuto['admin_content'] = ob_get_contents();
    ob_end_clean();

    adesso dovrei aggiungere questa classe per il salvataggio delle sessioni nel database ,
    Codice PHP:
    /*
    CREATE TABLE `ws_sessions` (
      `session_id` varchar(255) binary NOT NULL default '',
      `session_expires` int(10) unsigned NOT NULL default '0',
      `session_data` text,
      PRIMARY KEY  (`session_id`)
    ) TYPE=InnoDB;
    */
    class session {
        
    // session-lifetime
        
    var $lifeTime;
        
    // mysql-handle
        
    var $dbHandle;
        function 
    open($savePath$sessName) {
           
    // get session-lifetime
           
    $this->lifeTime get_cfg_var("session.gc_maxlifetime");
           
    // open database-connection
           
    $dbHandle = @mysql_connect("localhost","root","maurizio");
           
    $dbSel = @mysql_select_db("www",$dbHandle);
           
    // return success
           
    if(!$dbHandle || !$dbSel)
               return 
    false;
           
    $this->dbHandle $dbHandle;
           return 
    true;
        }
        function 
    close() {
            
    $this->gc(ini_get('session.gc_maxlifetime'));
            
    // close database-connection
            
    return @mysql_close($this->dbHandle);
        }
        function 
    read($sessID) {
            
    // fetch session-data
            
    $res mysql_query("SELECT session_data AS d FROM ws_sessions
                                WHERE session_id = '
    $sessID'
                                AND session_expires > "
    .time(),$this->dbHandle);
            
    // return data or an empty string at failure
            
    if($row mysql_fetch_assoc($res))
                return 
    $row['d'];
            return 
    "";
        }
        function 
    write($sessID,$sessData) {
            
    // new session-expire-time
            
    $newExp time() + $this->lifeTime;
            
    // is a session with this id in the database?
            
    $res = @mysql_query("SELECT * FROM ws_sessions
                                WHERE session_id = '
    $sessID'",$this->dbHandle);
            
    // if yes,
            
    if(@mysql_num_rows($res)) {
                
    // ...update session-data
                
    mysql_query("UPDATE ws_sessions
                             SET session_expires = '
    $newExp',
                             session_data = '
    $sessData'
                             WHERE session_id = '
    $sessID'",$this->dbHandle);
                
    // if something happened, return true
                
    if(@mysql_affected_rows($this->dbHandle))
                    return 
    true;
            }
            
    // if no session-data was found,
            
    else {
                
    // create a new row
                
    @mysql_query("INSERT INTO ws_sessions (
                             session_id,
                             session_expires,
                             session_data)
                             VALUES(
                             '
    $sessID',
                             '
    $newExp',
                             '
    $sessData')",$this->dbHandle);
                
    // if row was created, return true
                
    if(@mysql_affected_rows($this->dbHandle))
                    return 
    true;
            }
            
    // an unknown error occured
            
    return false;
        }
        function 
    destroy($sessID) {
            
    // delete session-data
            
    mysql_query("DELETE FROM ws_sessions WHERE session_id = '$sessID'",$this->dbHandle);
            
    // if session was deleted, return true,
            
    if(mysql_affected_rows($this->dbHandle))
                return 
    true;
            
    // ...else return false
            
    return false;
        }
        function 
    gc($sessMaxLifeTime) {
            
    // delete old sessions
            
    @mysql_query("DELETE FROM ws_sessions WHERE session_expires < ".time(),$this->dbHandle);
            
    // return affected rows
            
    return @mysql_affected_rows($this->dbHandle);
        }
    }
    $session = new session();
    session_set_save_handler(array(&$session,"open"),
                             array(&
    $session,"close"),
                             array(&
    $session,"read"),
                             array(&
    $session,"write"),
                             array(&
    $session,"destroy"),
                             array(&
    $session,"gc")); 
    mi date una mano? percortesia grazie
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,803
    Salve ancora ho trovato una classe , che sembra salvarmi le sessioni nel database, pero non mi fa fare il logout perche?
    posto la classe

    Codice PHP:

    /**

    CREATE TABLE IF NOT EXISTS `sessions_admin` (
      `session` varchar(255) character set utf8 collate utf8_bin NOT NULL,
      `session_expires` int(10) unsigned NOT NULL default '0',
      `session_data` text collate utf8_unicode_ci,
      PRIMARY KEY  (`session`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

     */

    class Session
    {
        
    /**
         * a database connection resource
         * @var resource
         */
        
    private static $_sess_db;

        
    /**
         * Open the session
         * @return bool
         */
        
    public static function open() {
           
            if (
    self::$_sess_db mysql_connect('localhost',
                                                
    'root',
                                                
    'maurizio')) {
                return 
    mysql_select_db('diva'self::$_sess_db);
            }
            return 
    false;
        }
        
    /**
         * Close the session
         * @return bool
         */
        
    public static function close() {
            return 
    mysql_close(self::$_sess_db);
        }

        
    /**
         * Read the session
         * @param int session id
         * @return string string of the sessoin
         */
        
    public static function read($id) {
            
    $id mysql_real_escape_string($id);
            
    $sql sprintf("SELECT `session_data` FROM `sessions_admin` " .
                           
    "WHERE `session` = '%s'"$id);
            if (
    $result mysql_query($sqlself::$_sess_db)) {
                if (
    mysql_num_rows($result)) {
                    
    $record mysql_fetch_assoc($result);
                    return 
    $record['session_data'];
                }
            }
            return 
    '';
        }
        
    /**
         * Write the session
         * @param int session id
         * @param string data of the session
         */
        
    public static function write($id$data) {
            
    $sql sprintf("REPLACE INTO `sessions_admin` VALUES('%s', '%s', '%s')",
                           
    mysql_real_escape_string($id),
                           
    mysql_real_escape_string(time()),
                           
    mysql_real_escape_string($data)
                           );
            return 
    mysql_query($sqlself::$_sess_db);
        }

        
    /**
         * Destoroy the session
         * @param int session id
         * @return bool
         */
        
    public static function destroy($id) {
            
    $sql sprintf("DELETE FROM `sessions_admin` WHERE `session` = '%s'"$id);
            return 
    mysql_query($sqlself::$_sess_db);
        }
        
    /**
         * Garbage Collector
         * @param int life time (sec.)
         * @return bool
         * @see session.gc_divisor      100
         * @see session.gc_maxlifetime 1440
         * @see session.gc_probability    1
         * @usage execution rate 1/100
         *        (session.gc_probability/session.gc_divisor)
         */
        
    public static function gc($max) {
            
    $sql sprintf("DELETE FROM `sessions_admin` WHERE `session_expires` < '%s'",
                           
    mysql_real_escape_string(time() - $max));
            return 
    mysql_query($sqlself::$_sess_db);
        }
    }
    //ini_set('session.gc_probability', 50);
    ini_set('session.save_handler''user');
    session_set_save_handler(array('Session''open'),
                             array(
    'Session''close'),
                             array(
    'Session''read'),
                             array(
    'Session''write'),
                             array(
    'Session''destroy'),
                             array(
    'Session''gc')
                             );

    if (
    session_id() == ""session_start();
    //session_regenerate_id(false); //also works fine
    if (isset($_SESSION['counter'])) {
        
    $_SESSION['counter']++;
    } else {
        
    $_SESSION['counter'] = 1;
    }
    //echo '
    SessionID'. session_id() .'
    Counter'. $_SESSION['counter']; 
    e questo e il files logout
    Codice PHP:
    session_start();
    unset(
    $_SESSION['area_administrator']);
    session_destroy();
    header("Location: index.php"); 
    cosa sto sbagliando ciao
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,803
    Buon giorno ragazzi mi date cortesemente una mano? sono un po incasinato grazie
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,803
    help ragazzi
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,803
    ragazzi mi avete abbandonato
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,803
    mi rispondo da solo raga ho trovato una classe che m' inserisce nel db id di sessione il tempo, ecc pero questi non si cancellao vanno sempre ad incrementarsi e non mi fa fare il logout che sarebbe
    Codice PHP:
    session_start();
    unset(
    $_SESSION['area_administrator']);
    session_destroy(); 
    mi da questo nel db
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.