Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    103

    [OOP] Classe auth non funziona!

    Scusate, ho postato un topic nella maniea sbagliata precedentemente.

    Il problema e' che pare non funzioni (al caricamento della pagina la variabile di sessione non e' settata)..

    Riposto qui il codice (dopo aver seguito i consigli nel topic precedente, session_start inserito ovviamente...)
    Codice PHP:
    class auth {
        
      public function 
    _constructor() 
      {
        if(!isset(
    $_SESSION['userStatus'])) {
          
    $_SESSION['userStatus'] = 'notlogged';
        } elseif (isset(
    $_GET['username'])) {
          
    $this->userLogin();
        } elseif (isset(
    $_GET['logout'])) {
          
    $this->userLogout();
        }
      }
      
      private function 
    userLogin() 
      {
        
    $rs $conn->Execute('SELECT * FROM admin_users WHERE username="$_GET[username]" AND password="$_GET[password]"');
        if (
    $rs->RecordCount 0) {
          
    $_SESSION['userStatus'] = $rs->Fields['type'];
          
    $_SESSION['userName'] = $rs->Fields['name'];
          
    $_SESSION['userSurname'] = $rs->Fields['surname'];
          
    $_SESSION['userEmail'] = $rs->Fields['email'];
          
    $_SESSION['userLastLogin'] = $rs->Fields['lastlogin'];
          
    $conn->Execute('UPDATE admin_users SET lastlogin="'.time().'" WHERE username="$user"');
        } else {
          
    $_SESSION['userStatus'] = 'notlogged';
        }
      }
      
      private function 
    userLogout() 
      {
        unset(
    $_SESSION);
        
    $_SESSION['userStatus'] = 'notlogged';
      }
      


  2. #2
    Utente bannato L'avatar di Skyline89
    Registrato dal
    Jun 2006
    Messaggi
    225
    hai messo session_start(); all'inizio della pagina...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    103
    Certo.. infatti ho provato a settare la var di sessione prima di creare l oggetto e funziona..

  4. #4
    Utente bannato L'avatar di Skyline89
    Registrato dal
    Jun 2006
    Messaggi
    225
    Quindi funziona...

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    103
    no ok, questo e' il top.inc.php

    Codice PHP:
    session_start();
    require_once(
    'settings.inc.php');
    function 
    __autoload($class_name) {
      require_once 
    'class/' $class_name '.inc.php';
    }
    $auth = new auth;

    require_once(
    'adodb/adodb-errorhandler.inc.php');
    require_once(
    'adodb/adodb.inc.php');
    require_once(
    'adodb/adodb-pager.inc.php'); 
    $GLOBALS['conn'] = ADONewConnection('mysql');
    $GLOBALS['conn']->debug false;
    if (
    USE_PCONNECT == 'false') {
        
    $GLOBALS['conn']->Connect(DB_SERVERDB_SERVER_USERNAMEDB_SERVER_PASSWORDDB_DATABASE);
    }
    else {
        
    $GLOBALS['conn']->PConnect(DB_SERVERDB_SERVER_USERNAMEDB_SERVER_PASSWORDDB_DATABASE);

    e nella pagina c'e' un cotrollo cosi'

    Codice PHP:
    if ($_SESSION['userStatus'] != 'notlogged') {
     
    //...
    }else{
    //....

    se prima di istanziare l oggetto auth scrivo io $_SESSION['userStatus'] = 'Admin'; il costruttore esegue i controlli e vedendo che $_SESSION['userStatus'] esiste va avanti, ecco cosa intendevo dire per funziona. Quello che il costruttore non fa appuno e' verificare se esiste la variabile di sessione e crearla se non esiste.

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.