Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    [OOP] Gestire gli errori

    Ragazzi stò creando una libreria per la gestione di un database(connessione, esecuzione query e tant'altro), login e altro, però , vorrei un consiglio su come gestire gli errori.

    Codice PHP:
    class User extends Database {

        private 
    $username;
        private 
    $password;

        public function 
    login($username$password) {
        
            
    $this->username mysql_real_escape_string($username);
            
    $this->password mysql_real_escape_string($password);
            
            
    $sql="SELECT * FROM admin WHERE username = '".$this->username."' AND password = '".$this->password."'";
            
            
    $this->result execute($sql);
            
            if ( 
    $this->num_rows($sql) != ) {
                
    // ritorno errore
            
    } else {
                
    session_start();
                
                
    // function
                
    $this->execute("UPDATE...");
                
                
    $_SESSION['logkey'] = $logkey;
            }
        }
        

    adesso vorrei capire come gestire il ritorno dell'errore, poichè qual'ora l'if è vero, devo ritornare un parametro che mi fà stampare a video: "errore nel login", inoltre è giusto usare $_SESSION['logkey'] e $sql senza prima "dichiararle" come private o protected.
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Ciao

    Codice PHP:
    thrown new Exception'Errore di login'); 
    questo è un punto di partenza... Studia le Exceptions sul manuale
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Io cmq, intendevo ritornare un errore ad esempio alla pagina precedente es. login.php, però volevo rendere la cosa più generale possibile
    Con i sogni possiamo conoscere il futuro...

  4. #4
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    controlla_user.php //chiamata da login.php (form utente e pwd)

    Codice PHP:
    try{

    $user = new user();
    $db->login($user,$pass); 
    header('Location: main.php');
    }catch(
    Exception $e){
    header('Location: login.php?err=$e/');

    dovrebbe essere piu o meno cosi a grandi linee
    Che mestiere difficile.....essere da soli ancora di più

  5. #5
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Come fai a usare $db->login, se login è un metodo di user? non dovresti fare;

    Codice PHP:
    $user->login($username$password); 
    Inoltre se il login và a buon fine, devo andare alla pagina: "private.php", passando $_SESSION['logkey'] altrimenti va benissimo andare a login.php passando un parametro di errore.
    Con i sogni possiamo conoscere il futuro...

  6. #6
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Originariamente inviato da gaten
    Come fai a usare $db->login, se login è un metodo di user? non dovresti fare;

    Codice PHP:
    $user->login($username$password); 
    Inoltre se il login và a buon fine, devo andare alla pagina: "private.php", passando $_SESSION['logkey'] altrimenti va benissimo andare a login.php passando un parametro di errore.
    si hai perfetamente ragione sono io che ho sbagliato.

    Per quanto riguarda la $_SESSION['logkey'] perchè la dovrei passare?
    E' una session nella pagina private.php andro semplicemente a fare

    $user->controlla_user();

    e nella classe ci sarà il metodo

    public function controlla_user(){
    session_start();
    if(issset($_SESSION['logkey'])){
    //recupero i dati utenti che mi interessa avere sempre a disposizione dall'eventuale database e lo setto nelle proprietà
    }
    }
    Che mestiere difficile.....essere da soli ancora di più

  7. #7
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Proverò a buttare giù un pò di codice per poi postare qui ok? Grazie mille
    Con i sogni possiamo conoscere il futuro...

  8. #8
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    anche ho provato un po di volte a postare l'intestazione della classe in questo modo

    class User extends Database {
    ma mi hanno sempre insultato come delle iene
    non si dovrebbero estendere classi che non centrano nulla l'una con l'altra... anche se detto fra noi anche io la trovo una cosa comodissima
    Che mestiere difficile.....essere da soli ancora di più

  9. #9
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Originariamente inviato da Fractals87
    anche ho provato un po di volte a postare l'intestazione della classe in questo modo



    ma mi hanno sempre insultato come delle iene
    non si dovrebbero estendere classi che non centrano nulla l'una con l'altra... anche se detto fra noi anche io la trovo una cosa comodissima
    che esagerazione, è solo che anzichè estendere una classe che chiami database, crei la tua classe user che istanzia al suo interno un oggetto di classe database e lo utilizza per fare le sue interrogazioni.

    Meglio ancora se crei una interfaccia database, quindi crei delle classi database che implementano l'interfaccia (una per mysql, una per sql server...). Quindi user richiede come argomento alla creazione un oggetto che implementi l'interfaccia database comune a tutte le implementazioni. A questo punto puoi, senza mai modificare una riga di user, usare lo stesso applicativo su motori DB diversi scrivendo semplicemente una classe che implementi l'interfaccia database.

    Penso io, giusto come assaggio.

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  10. #10
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Originariamente inviato da Grino
    che esagerazione, è solo che anzichè estendere una classe che chiami database, crei la tua classe user che istanzia al suo interno un oggetto di classe database e lo utilizza per fare le sue interrogazioni.

    Meglio ancora se crei una interfaccia database, quindi crei delle classi database che implementano l'interfaccia (una per mysql, una per sql server...). Quindi user richiede come argomento alla creazione un oggetto che implementi l'interfaccia database comune a tutte le implementazioni. A questo punto puoi, senza mai modificare una riga di user, usare lo stesso applicativo su motori DB diversi scrivendo semplicemente una classe che implementi l'interfaccia database.

    Penso io, giusto come assaggio.

    Ciao Grino, era molto scerzosa e ironica la mia affermazione
    Tu hai perfettamente ragione e anche io come gaten sono all'inizi della programmazioni in classi ed veramente difficile trovare subito la strada migliore, ad esempio le interfacce non le ho ancora implementate con efficacia e sto procedendo per gradi (per come sono fatto io per molto gradi) anche perche la cosa più brutta è mettere in piedi un sistema e poi capire che non va bene affatto, io per ora passo sempre come argomento alla chiamata del metodo il resource link, non sarà ottimale ma è funzionale tu cosa ne pensi?
    Che mestiere difficile.....essere da soli ancora di più

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.