Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661

    [php]Recupero variabile da form

    ciao,

    ho un form... per recuperare i valori delle variabile _post ho scritto questo:

    <?php
    foreach($_POST as $valore)
    echo $valore."
    ";
    ?>

    sembra funzionare... non riesco a capire come associare a questi valori _POST anche i nomi dei campi di testo, checkbox, select ecc..

    vorrei ottenere una cosa del genere

    nome (campo di testo input): valore_POST
    cognome(campo di testo input): valore_POST
    autorizzo al trattamento dei dati(checkbox): valore_POST


    grazie per l'attenzione

  2. #2
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    forse ho risolto così:

    foreach($_POST as $key => $value){
    echo "Chiave: $key; Valore: $value
    \n";
    }

  3. #3
    Forse ho capito male quello che chiedi ma... non basta fare così?

    Codice PHP:
    $nome $_POST['nomeCampoNome'];
    $cognome $_POST['nomeCampoCognome'];
    $autorizzo $_POST['nomeCampoAutorizzo']; 

  4. #4
    non puoi sapere da che TIPO di input ti arriva il dato... puoi sapere solo il NAME che è esattamente la chiave dell'array associativo $_POST
    www.gext.it

  5. #5
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    era per abbreviare la procedura... non mi andava di scrivere per ogni valore (circa 50) tutte le variabili... cmq il controllo lo effettuto con javascript...


    grazie per il supporto

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Originariamente inviato da tigerjack
    era per abbreviare la procedura... non mi andava di scrivere per ogni valore (circa 50) tutte le variabili... cmq il controllo lo effettuto con javascript...
    Questo è un errore MOLTO rischioso. Non puoi MAI essere certo che una determinata pagina PHP sia chiamata dalla tua pagina con i controlli javascript. Posso tranquillamente creare una pagina io sul mio sito che invia le stesse variabili al tuo sito con un form, ma con dentro variabili valorizzate come mi pare
    Ogni pagina php deve SEMPRE controllare che i dati che arrivano da POST e GET siano congruenti e non pericolose, soprattutto se di tali valori viene fatto echo (ci posso mettere un javascript malevolo) o vengono inserite in un db (sql injection)

    Per quanto riguarda il tuo problema, dipende da cosa sono queste variabili
    Se ho capito bene vuoi che ad ogni campo del form corrisponda una variabile con lo stesso nome (al campo "pippo" corrisponda la variabile $pippo) puoi fare così
    Codice PHP:
    <?php
    foreach($_POST as $key=>$value)
      $
    $key $value;
    ?>
    E sei a posto
    Notare il doppi $
    L'istruzione $$var = $valore significa esattamente
    La variabile con nome contenuto nella variabile $var prende il valore $valore
    Se ad esempio $var vale "pippo", l'istruzione equivale a $pippo = $valore

  7. #7
    sul discorso sicurezza non posso fare altro che darti ragione, ma non vedo come il tuo script possa risolvere il problema... bisogna cmq effettuare tutti i controlli...
    www.gext.it

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Io creo di solito delle funzioni generiche e setto in un array l'elenco delle funzioni da richiamare per ogni campo

    Ad esempio
    Codice PHP:
    $controlli = array(
      
    "campo1" => "numerico",
      
    "campo2" => "numerico",
      
    "campo3" => "testolibero",
      
    "campo4" => "testolibero",
      
    "campo5" => "email"
    // eccetera
    );
    // definisco le funzioni di controllo con lo stesso nome indicato nell'array
    function numerico($n// solo numeri
    {
      return 
    is_numeric($n);
    }
    function 
    testolibero($t// no htmlentities ammesse
    {
      
    rerurn $t==htmlentities($t);
    }
    function 
    email($e)
    {
    // eccetera
    }

    // controllo per vedere se qualche campo non va bene
    $campierrati = array();
    foreach(
    $_POST as $key=>$value)
    {
      
    $funzione $controlli[$key];
      if(!
    $funzione($value))
        
    $campierrati[]=$key;

    L'array $campierrati conterrà l'elenco dei campi che non rispettano le regole
    Devi ovviamente sostituire a "campo1", "campo2" eccetera, i nomi dei campi del tuo form e le funzioni di controllo sono ovviamente semplificate: per i testi avrai dei preg_match o similar... per i numeri avrai dei limiti minimi e massimi e cose così. L'importante è che tutte le funzioni di controllo restituiscano FALSE se il campo non rispetta le regole
    In questo modo fai si tutti i controlli, ma definisci la funzione di controllo per ogni tipologia di dato (testo, numero, email ecc) una sola volta e la richiami grazie al nome della funzione definito all'interno dell'array $controlli

    Volendo puoi affinare il tutto facendo si che le funzioni di controllo restituiscano qualcosa di più di "true" e "false" ma anche un testo, un codice di errore o quello che vuoi, modificando opportunamente lo script

    Non ho inventato nulla, è una soluzione che ho trovato in giro

  9. #9
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    ora mi è più chiara la mia situazione, cercherò di applicare il tuo suggerimento.

    grazie


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.