Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [OOP] visualizzare un messaggio per un form di registrazione

    Ciao a tutti,
    mi sono "incartato" su una funzione e non so come risolvere "è da poco che lavoro con PHP", ed il mio problema alla fine non è complesso ma non riesco a levarci le gambe...
    allora io ho una pagina con un form di registrazione e questo è il codice:
    Codice PHP:
    <?php
        session_start
    ();
        
    ob_start();
        require_once(
    'Lib/user.class.php'); // Includo la classe Users
        
    require_once('Lib/function.php'); // Includo le funzioni
        
    $db = new connDb();
        
    $login = new users;
        if(
    $login->start_registration()==TRUE)
        {
            
    header("location: ".$login->Urls['login_page']);
            exit;
        }
    ?>
    <!doctype html>
    ....
    <body>
    <?php
        $registration 
    "register";
        
    $_POST NULL;
        
    $login->Get_register_form();
    ?>
    </body>
    Una volta che l'utente ha scritto tutti i dati necessari e ha premuto il pulsante, i dati vengono letti da una funzione che restituisce FALSE o TRUE a seconda se la mail è già esistente o meno.. il mio problema è la restituzione del risultato di tale funzione, infatti all'inizio del codice postato sopra c'è questo script:
    Codice PHP:
    if($login->start_registration()==TRUE)
        {
            
    header("location: ".$login->Urls['login_page']);
            exit;
        } 
    Che va benissimo nel caso l'utente si sia registrato, ma se io volessi visualizzare un messaggio nel caso l'utente abbia inserito una mail già esistente non posso mettere
    "$login->start_registration()==FALSE" perchè il messaggio verrebbe visualizzato anche quando la pagina viene vista la prima volta ( perchè la funzione è falsa di default ) ... come posso fare ??

    Questa è la funzione che gestisce il ritorno:
    Codice PHP:
    public function start_registration()
        {            
            
    // se il form e i suoi input sono stati inviati
            
    if(isset($_POST['register']))
            {
                
    // controllo l'email
                
    $this->check_insert_registration($_POST['email']);
                
                if(
    $this->verify == FALSE)
                {
                    
    // inseriemo all'interno del database i dati
                    
    $this->query_insert_registration($_POST);
                    return 
    TRUE;
                }
                else
                {
                    
    //return FALSE;

                
    }
            }
            return 
    FALSE;
        } 
    Hutton

    "Una tela bianca, offre infinite possibilità."

  2. #2
    guarda, direi che la cosa più veloce sia mettere un ritorno a 3 valori, 0/1/2 ad esempio, dove 0 = false (no invio dei dati con post), 1 = inserimento Ok, 2 = post effettuato e errore nella validazione dati...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    e mettere $login->start_registration() in un try catch.
    poi
    nella classe user mettere una proprietà $error
    nel metodo start_registration(), al posto di fare il return false, richiamare un metodo privato SetError() passandogli il messaggio.
    SetError infine non fa altro che settare la proprietà $error e sollevare eccezzione.
    Nel blocco catch recuperare il messaggio di errore e gestirlo come meglio si crede.

    Soluzione da prendere con le pinze.

    Questo a mio avviso ti permetterebbe di integrare in un futuro nuovi controlli e nuovi messaggi di errore gestendoli sempre nello stesso modo, una semplice chiamata al metodo SetError().
    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.