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

    [OOP] Migliorare funzione per registrazione utente o modifica

    Salve a tutti, vorrei sottoporvi due metodi di classe in php5 che servono per visualizzare un form a seconda che sia un nuovo utente che si deve registrare o un utente già esistente che deve modificare i suoi dati.. I metodi funzionano, ma vorrei sapere se fosse possibile migliorarli e semplificarli a livello di codice, sopratutto per quanto riguarda le variabili dei dati in entrata:

    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'], $_SESSION['id']);
                
                if(
    $this->verify == FALSE)
                {
                    if(!isset(
    $_SESSION['id']))
                    {
                        
    // inseriemo all'interno del database i dati
                        
    $this->query_insert_registration($_POST);
                    }
                    else
                    {
                        
    // aggiornamento dei dati del database
                        
    $this->query_change_registration($_POST);
                    }
                    return 
    TRUE;
                }
                else
                {
                    
    //return FALSE;
                    
    echo '<div class="error">La mail inserita &egrave; gi&agrave; esistente!</div>';
                }
            }
            return 
    FALSE;
        }
        
        
    // controlla esistenza della email
        // se esistono nel database ritorna un messaggio altrimenti ritorna una stringa nulla
        
    public function check_insert_registration($email$id=null)
        {
            if(
    is_null($id))
            {
                
    $query "SELECT id FROM users WHERE email = '$email'";
            }
            else
            {
                
    $query "SELECT id FROM users WHERE email = '$email' AND id != $id";
            }
            
            
    $result mysql_query($query);
            
            if(
    mysql_num_rows($result)>0)    
            {
                
    $this->verify .= TRUE;
            }
            else
            {
                
    $this->verify .= FALSE;
            }
            
            return 
    $this->verify;
        } 
    vorrei evitare ad esempio di inserire "$_POST" e "$_SESSION" in questa riga:
    Codice PHP:
    $this->check_insert_registration($_POST['email'], $_SESSION['id']); 
    Un grazie a chi mi può aiutare
    Hutton

    "Una tela bianca, offre infinite possibilità."

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Per me sarebbe meglio se non ci fossero superglobali all'interno della classe. Senza, la classe potrebbe servire dappertutto o per altri siti che non sarebbero obbligati ad utilizzare le stesse variabili POST o potrebbero adirittura utilizzare variabili $GET.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Ciao,
    ti do' un po' di consigli.

    - Non usare le deprecate funzioni mysql_* ma usa l'interfaccia PDO

    - Hai un problema di SQL Injection quando fai le query tipo

    Codice PHP:
    $query "SELECT id FROM users WHERE email = '$email'"
    Problema che con le PDO puoi mitigare facilmente.


    - Nel codice fai un concatenamento di un valore booleano

    Codice PHP:
    $this->verify .= TRUE
    che non ha molto senso.

    - Per il tuo problema puoi semplicemente passare i valori che ti servono direttamente nel metodo start_registration.
    Tipo:

    Codice PHP:
    if(isset($_POST['register'])) {
         
    $engine->start_registration($_POST['user'],$_SESSION['id']);

    oppure

    Codice PHP:
    if(isset($_POST['register'])) {
         
    $engine->start_registration($_POST);

    oppure ancora
    Codice PHP:
    if(isset($_POST['register'])) {
         
    $engine->start_registration(
               Array(
                       
    'email'  =>$_POST['email'],
                       
    'name' => $_POST['name']
    // ecc. ecc. ecc.

                
    )
         );


  4. #4
    Grazie per i consigli... mi metto al lavoro!!
    Hutton

    "Una tela bianca, offre infinite possibilità."

  5. #5
    e come posso fare per eliminare le superglobali ma avere lo stesso il valore di esse?
    Hutton

    "Una tela bianca, offre infinite possibilità."

  6. #6
    Originariamente inviato da hutton
    e come posso fare per eliminare le superglobali ma avere lo stesso il valore di esse?
    singleton -> sconsiglio

    composition -> meglio
    Questa volta, più che un voto.. è favoreggiamento.

  7. #7
    ??
    Hutton

    "Una tela bianca, offre infinite possibilità."

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 © 2026 vBulletin Solutions, Inc. All rights reserved.