Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    181

    [php] Automatizzare raccolta variabili post

    Salve a tutti, è possibile automatizzare l'estrazione di variabili post per poi passarli a un db mysql?

    Mi spiego ho molti dati provenienti da un form e come faccio di solito salvo questi dati in delle variabili trattate, e poi li do in pasto alla query mysql. solo adesso che sono tanti mi sembra troppo pesante come approccio. Qualcuno sa come automattizzare questa procedura?


    Tnx

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, la variabile array $_POST contiente tutti i campi che tu passi tramite post, quindi con un foreach puoi scorrere tutti i valori presenti, ma per darli in pasto alla query dovresti estrarli secondo un ordine preciso no?

    Codice PHP:
    foreach($_POST as $valore) echo $valore."
    "
    //stampa tutti i valori 

  3. #3
    Non lo fare. Un utente puo' inviarti quello che vuole tramite POST, tu pero' devi gestire i dati che vuoi tu, non quelli che vuole l'utente. Se vuoi costruire un'applicazione con un minimo di solidita' e sicurezza, devi SEMPRE accettare solo i dati che ti aspetti di ricevere, e controllare che siano nel formato che vuoi tu.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    181
    Originariamente inviato da jcsnake
    Ciao, la variabile array $_POST contiente tutti i campi che tu passi tramite post, quindi con un foreach puoi scorrere tutti i valori presenti, ma per darli in pasto alla query dovresti estrarli secondo un ordine preciso no?

    Codice PHP:
    foreach($_POST as $valore) echo $valore."
    "
    //stampa tutti i valori 
    Si ma così li stampo mentre io vorrei passarli alla query. Quindi mi servirebbero nel formato campo=$variabile dove campo è la key della variabile post. Oppure $variabile=$valore dove $ variabile è sempre la key del post. non so se mi spiego.

    In pratica non voglio dover fare un'assegnazione manuale del tipo
    $variabile=$_POST['valore']
    per ogni variabile post.

    ho provato cosi

    foreach($_POST as $key=>$value)
    {
    if ($key!="submit")
    {
    $key=mysql_real_escape_string($value);


    ma ovviamente la variabile key viene sovrascritta.

    e quindi quando arrivo a fare la query non posso valorizzare tutti i campi spero che adesso sia stato piu comprensibile

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    181
    Originariamente inviato da k.b
    Non lo fare. Un utente puo' inviarti quello che vuole tramite POST, tu pero' devi gestire i dati che vuoi tu, non quelli che vuole l'utente. Se vuoi costruire un'applicazione con un minimo di solidita' e sicurezza, devi SEMPRE accettare solo i dati che ti aspetti di ricevere, e controllare che siano nel formato che vuoi tu.

    Quindi tu mi consigli cmq di fare le assegnazioni per tutte le variabili del form.

    giusto?

  6. #6
    Originariamente inviato da maforast
    Quindi tu mi consigli cmq di fare le assegnazioni per tutte le variabili del form.

    giusto?
    Ti consiglio di verificare manualmente ogni valore inviato via POST, e soprattutto di non usare indiscriminatamente cio' che POST contiene per generare una query. Anche senza considerare SQL injection o altri problemi di sicurezza, e' sufficiente che un client ti invii un campo in piu' per generare una query non valida.

    La query devi costruirla tu (possibilmente con i prepared statements), ed inserire i valori che hai ricevuto e verificato.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    181
    Originariamente inviato da k.b
    Ti consiglio di verificare manualmente ogni valore inviato via POST, e soprattutto di non usare indiscriminatamente cio' che POST contiene per generare una query. Anche senza considerare SQL injection o altri problemi di sicurezza, e' sufficiente che un client ti invii un campo in piu' per generare una query non valida.

    La query devi costruirla tu (possibilmente con i prepared statements), ed inserire i valori che hai ricevuto e verificato.
    ok tnx

    scusa consa sono i prepared statements

    intendi tipo mysql_real_escape_string?

  8. #8
    Originariamente inviato da maforast
    ok tnx

    scusa consa sono i prepared statements

    intendi tipo mysql_real_escape_string?
    I prepared statements sono dei comandi inviati al database, in pratica sono delle mezze query. Un prepared statement contiene la query senza i valori, che vengono poi collegati con un secondo comando.

    Consiglio sempre di lasciar perdere le funzioni mysql_* ed usare l'interfaccia PDO: http://php.net/manual/en/book.pdo.php

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    181
    Originariamente inviato da k.b
    I prepared statements sono dei comandi inviati al database, in pratica sono delle mezze query. Un prepared statement contiene la query senza i valori, che vengono poi collegati con un secondo comando.

    Consiglio sempre di lasciar perdere le funzioni mysql_* ed usare l'interfaccia PDO: http://php.net/manual/en/book.pdo.php
    Ma lo sai non la conoscevo proprio questa interfaccia... però mo è un casino modificare tutto...

    dalla doc non ci ho capito molto dovrei approfondire o magar se hai un esempio pratico a portata di mano mi fai un favore... come mai per te è meglio usare questa che mysql_*?

  10. #10
    Originariamente inviato da maforast
    Ma lo sai non la conoscevo proprio questa interfaccia... però mo è un casino modificare tutto...

    dalla doc non ci ho capito molto dovrei approfondire o magar se hai un esempio pratico a portata di mano mi fai un favore... come mai per te è meglio usare questa che mysql_*?
    Dicono tutti che il PHP e' facile, ed infatti lo e', ma se vuoi fare le cose per bene c'e' molto da studiare

    Le funzioni mysql_* sono l'interfaccia minima per interagire con il database, non forniscono nessuna utilita' particolare ne' alcuna protezione per garantire la sicurezza.

    Un'interfaccia come PDO ti fornisce strumenti piu' avanzati (puo' estrarre dati e popolare un'instance di una classe a tua scelta), ti fornisce il miglior strumento in assoluto per proteggerti dalle SQL injection (appunto i prepared statements), si integra meglio con la programmazione ad oggetti anche per via delle exception e - dovesse mai servirti - ti permette di non dover modificare il codice se cambi motore di database.

    Certo richiede piu' lavoro, io lo consiglio perche' secondo me e' il modo giusto di fare le cose. Poi sta a te valutare se nel tuo caso vale la pena oppure no.

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.