Visualizzazione dei risultati da 1 a 8 su 8

Discussione: dubbio PHP PDO

  1. #1

    dubbio PHP PDO

    Salve a tutti. Da un paio di giorni a questa parte stò cercando di orientarmi verso pdo per allontarmi dall'uso di MySqli (al momento uso una classe che mi gestisce tutte le interazioni col db) visti i limiti della libreria (se nasci per mysql muori in mysql quindi se cambia il db dell'applicazione devo riscrevere tutto). Diciamo che un po' alla volta fra prove e letture le nozioni mi stanno entrando in testa (almeno spero ) , ma un dubbio che non riesco a levarmi dalla testa è il seguente: come agisce pdo per la pulizia dei dati ingresso per evitare delle injection?
    Con le librerie MySql/MySqli si hanno a disposizione delle funzioni standard tipo mysql_real_escape_string.....ma in pdo? Come si effettua? Il sistema di pulizia ed escape si fà esattamente come con le altre 2 librerie o ripulisce in automatico? Chi mi chiarisce questo dubbio?
    Fare o non fare....non c'è provare!

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    http://it2.php.net/manual/en/pdo.quote.php pdo usa un sistema di quotes per rendere sicure le stringhe

  3. #3
    Carino. Invece con i prepared statement tipo
    Codice PHP:
    $sql "SELECT * FROM books WHERE title = ?";
    $q $conn->prepare($sql);
    $q->execute(array($title)); 
    non serve a niente il quote(), oppure si può infilare anche li?
    Fare o non fare....non c'è provare!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Sarebbe meglio usare bindValue o bindParam prima di eseguirlo

  5. #5
    Intendi usare dei placeholder tipo così?
    Codice PHP:
    $sql "SELECT * FROM books WHERE title like :title AND author like :author ";
    $q $conn->prepare($sql);
    q->execute(array(':author'=>$author,
               
    ':title'=>$title)); 
    Altra parentesi per il quote(), usandolo si possono tralasciare i vari get_magic_quote, strip/addslashes etc etc?
    Fare o non fare....non c'è provare!

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da Sbidiguda
    Intendi usare dei placeholder tipo così?
    Codice PHP:
    $sql "SELECT * FROM books WHERE title like :title AND author like :author ";
    $q $conn->prepare($sql);
    q->execute(array(':author'=>$author,
               
    ':title'=>$title)); 
    Altra parentesi per il quote(), usandolo si possono tralasciare i vari get_magic_quote, strip/addslashes etc etc?
    Si, anche se i magic_quotes sarebbe sempre meglio averli disattivati non si sa mai

  7. #7
    Ho affrontato l'argomento nel mio blog.

    La questione è la seguente. Si può agire in due modi:
    Il primo è un pò "old style" e prevede l'impiego del metodo PDO->quote()

    Tuttavia all'interno del manuale ufficiale troverai scritto:

    "...
    you are strongly recommended to use PDO:repare() to prepare SQL statements with bound parameters instead of using PDO::quote()
    ..."

    Google traduttore

    Ergo, se vuoi utilizzare in meniera fruttifera pdo devi formulare le query attraverso i cosiddetti prepared statements e i metodi bindParam e bindValue.

    Se ti può interessare e i moderatori non lo ritengono spam ti linko l'articolo del mio blog in cui ne parlo:
    http://www.miniscript.it/articoli/67..._le_query.html
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  8. #8
    Niente male Oly, davvero, scrittura lineare e abbastanza semplice da comprendere. Ho recuperato l'argomento dalla prima parte (connessioni), credo mi sarà molto utile. Grazie mille e a buon rendere.
    Fare o non fare....non c'è provare!

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.