Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    7

    validazione stringhe inserite dall'utente

    salve a tutti..!
    devo realizzare un programmino che faccia inserire all'utente, nella pagina index.php, i dati NOME, COGNOME, ETA ed EMAIL.
    Successivamente al click di un bottone di tipo submit questi dati devono essere inviati alla pagina conferma.php che deve validarli (NOME e COGNOME stringhe di solo testo, ETA numerico e MAIL con formato standard).

    Ho due problemi:
    - Per la validazione ho provato a usare preg_match(), poichè ereg()/eregi() sono deprecate.
    Il problema è che mi restituisce sempre errore anche quando la stringa rispetta il formato
    corretto.
    - Se c'è qualche errore in inserimento devo reindirizzare l'utente alla pagina di inserimento dati
    (index.php). Mi è stato consigliato di usare una piccola istruzione javascript preceduta da uno
    sleep(5). Anche quella però funziona male, nel senso che mi rimbalza a index.php senza
    visualizzare conferma.php. Può essere che la risposta tardiva del server nel controllare i campi
    faccia scadere i 5 secondi prima che la pagina venga visualizzata..?

    Posto il codice di conferma.php per darvi modo di vedere se ho sbagliato qualcosa.


    <?php

    /*
    variabile di controllo per gli errori

    VALORI:
    - 0, nessun errore
    - 1, errore
    */
    $risultato_controllo = 0;

    //se il nome è vuoto o è composto da soli numeri
    if( empty($_GET['nome']) || !preg_match('/^([a-z])$/i',$_GET['nome']) )
    {
    echo "errore sul nome! </br>";
    $risultato_controllo = 1;
    }

    //se il cognome è vuoto o è composto da soli numeri
    if( empty($_GET['cognome']) || is_numeric($_GET['cognome']) )
    {
    echo "errore sul cognome! </br>";
    $risultato_controllo = 1;
    }

    //se l'eta è vuota o non è numerica
    if( empty($_GET['eta']) || !is_numeric($_GET['eta']) )
    {
    echo "errore sull'età! </br>";
    $risultato_controllo = 1;
    }


    //se la mail è vuota o non rispetta il formato standard
    if( empty($_GET['mail']) || preg_match("/^([a-z0-9\.\-\_])+@([a-z0-9\.\-\_])+\.[a-z]{2-4}$/i",trim($_GET['mail'])) )
    {
    echo "errore sulla mail! </br>";
    $risultato_controllo = 1;
    }

    //se i campi erano corretti
    if($risultato_controllo == 0)
    {
    echo "<table align=\"center\">";

    echo "<tr>";
    echo "<td width=\"200\">";
    echo "Nome";
    echo "</td>";
    echo "<td>";
    echo $_GET['nome'];
    echo "</td>";
    echo "</tr>";

    echo "<tr>";
    echo "<td width=\"200\">";
    echo "Cognome";
    echo "</td>";
    echo "<td>";
    echo $_GET['cognome'];
    echo "</td>";
    echo "</tr>";

    echo "<tr>";
    echo "<td width=\"200\">";
    echo "Età";
    echo "</td>";
    echo "<td>";
    echo $_GET['eta'];
    echo "</td>";
    echo "</tr>";

    echo "<tr>";
    echo "<td width=\"200\">";
    echo "e-mail";
    echo "</td>";
    echo "<td>";
    echo $_GET['mail'];
    echo "</td>";
    echo "</tr>";

    echo "</table>";
    }
    else
    {
    echo "reindirizzamento alla pagina di inserimento dati in 5 secondi";
    sleep(5);
    echo "<script language=\"javascript\"> location.href=\"index.php\"; </script>";
    }


    GRAZIE DI CUORE IN ANTICIPO A CHIUNQUE MI RISPONDERA'

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    7
    PS: preg_match() l'ho provato solo con il campo nome...

  3. #3
    io al tuo posto avrei fatto cosi:

    if((!isset($_POST['mail'])) || (!eregi("^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$", $_POST['mail']))){
    header("location:registrati.php?errore=502&type=ma il&campo=errata");
    }
    else{
    if($_POST[nome]==false || $_POST[cognome]==false || $_POST[mail]==false){
    header("location:registrati.php?errore=503&type=ca mpi&campi=vuoti");
    }
    else{
    ..... quello che deve eseguire.. per esempio aggiungere dati ad una tabella sql ecc...
    }
    }
    spero di esserti stato utile... mentre per la funzione "sleep" non ho capito bene che cosa voglia fare

  4. #4
    per nome e cognome devi usare le regex (possono contenere lettere, il trattino -, gli spazi e gli apostrofi);
    per email ed età usa filter_var()

    Poi cerca di separare la logica dalla stampa a video.
    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.

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.