Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Escape con PDO

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420

    Escape con PDO

    Ciao a tutti;
    sto usando PDO da qualche giorno... le connessioni funzionano, ma non mi è chiaro come viene gestito l'escape dei caratteri...

    Codice PHP:
    include ("connessionePDO.php");

    $loginform = ($_POST["login"]);        
    $passwordform = ($_POST["password"]);
    $emailform = ($_POST["email"]);

    $sql $db->prepare("SELECT * FROM utenti WHERE login = :login");     
    $sql->execute(array(":login"=>$loginform));  
    $sql2 $db->prepare("SELECT * FROM utenti WHERE email = :password");
    $sql2->execute(array(":password"=>$emailform));                                          

    if (
    $res $sql->fetchAll())   {
        echo 
    "Username già utilizzato";
    }elseif (
    $res2 $sql2->fetchAll())   {
        echo 
    "Email già registrata";
    }else{
        
    $securpassword sha1($passwordform);
        
    $sql $db->prepare("INSERT INTO utenti(login,password,email) VALUES('$loginform','$securpassword','$emailform')");
        
    $sql->execute();
        echo 
    "Registrazione effettuata!!!";
        } 
    Al di la del controllo sugli altri caratteri particolari che ho omesso, se ad esempio come username inserisco u'tente, mi restituisce il messaggio "registrazione effettuata!" ma di fatto non crea nessun nuovo record nel db; se scrivo "utente" tutto funziona ovviamente...
    Mi era stato spiegato che l'utilizzo dei segnaposti :login assword e dell'istruzione "prepare" avrebbero gestito in automatico l'escape facendo in pratica ciò che faceva myslq_real_escape_string .... ma qualcosa non quadra :-s

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Codice PHP:
    $securpassword sha1($passwordform); 
        
    $sql $db->prepare("INSERT INTO utenti(login,password,email) VALUES('$loginform','$securpassword','$emailform')"); 
        
    $sql->execute(); 
        echo 
    "Registrazione effettuata!!!"
    Devi usare i placeholder anche qui...altrimenti non viene fatto l'escape
    (dovresti farlo tu manulamente)
    Codice PHP:
    $securpassword sha1($passwordform); 
        
    $sql $db->prepare("INSERT INTO utenti(login,password,email) VALUES(:login,:password,:email)"); 
        
    $sql->execute(array(':login'=>$loginform':password'=>$securpassword':email'=>$emailform)); 
        echo 
    "Registrazione effettuata!!!"

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Giustissimo e perfetto!
    dovrò farti una statua prima o poi! grazie mille

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626



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.