Visualizzazione risultati 1 fino 8 di 8

Discussione: Controlli nel form html e nell'inserimento php

  1. #1
    maselliluigi non è connesso Neofita
    Data registrazione
    28-08-2011
    Messaggi
    3

    Predefinito Controlli nel form html e nell'inserimento php

    Questo è il form e il file php che uso per salvare i commenti:

    Codice HTML:
    <form action="ins.php" method=post>
    Nome:<br>
    <input type="text" name="nome"><br />
    Commento:<br>
    <textarea name="commento" cols=40 rows=6 maxlength="300"></textarea>
    <br /><input type="submit" value="invia" name="invia"></form>
    Codice PHP:
    <?php
    $dateform
    = date("d/m/Y");
    $timeform = date("H:i");
    $testo=$_POST['commento'];
    $testo= nl2br($testo);
    $open = fopen('contatti.txt','a');
    fwrite( $open, "\n<hr id='bordi'><p>".$dateform." ".$timeform."</p><br /><h3>".$_POST['nome']." scrive:<h3> <hr /><br /> <p>".$testo."</p><br /><hr id='bordi'>" );
    fclose($open);
    ?>
    Volevo sapere, c'è del codice che posso aggiungere all'uno o all'altro per inserire dei controlli tipo, che il messaggio e il nome vengano inseriti e cose così.

  2. #2
    Guest

    Predefinito

    Lato client puoi usare questo plugin jquery per la validazione.

    Stai comunque attento che la validazione lato client non è efficace al 100% (pensa solo al caso in cui il browser ha js disabilitato.

    Per una validazione più solida, pensa a dei controlli lato server (php) che ti rimandano indietro in caso di problemi.

  3. #3
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    i controlli di default in php sono semplici, controlli se la variabile è settata e non è vuota, es.:
    Codice PHP:
    $nome=$commento=$messaggio=null;
    if (isset(
    $_POST['nome']) AND !empty($_POST['nome'])) $nome=$_POST['nome'];
    else
    $messaggio="<br>Il campo Nome è obbligatorio!";
    if (isset(
    $_POST['commento']) AND !empty($_POST['commento'])) $commento=$_POST['commento'];
    else
    $messaggio. ="<br>Il campo Commento è obbligatorio!";

    if (
    $messaggio) {
    echo
    $messaggio;
    //qui puoi fare un redirect o un link che ricarica la pagina del form
    die;
    }

    //qui prosegui con il codice
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  4. #4
    maselliluigi non è connesso Neofita
    Data registrazione
    28-08-2011
    Messaggi
    3

    Predefinito

    Grazie, ma cercando unpò con google ho visto che il php deriva dal c, perciò ho provato a scrivere il codice basandomisu di esso ed ha funzionato, in pi ho aggiunto una funziona trovata per caso.

    Codice HTML:
    <div id="ins"><form action="ins.php" method=post>
    <p>Nome:</p>
    <input type="text" name="nome" maxlength="30"><br />
    <br /><p>(obbligatoria)(non visualizzata)Mail:</p>
    <input type="text" name="mail" maxlength="100"><br />
    <br /><P>Commento:</p>
    <textarea name="commento" cols=40 rows=6 maxlength="300"></textarea>
    <br /><input type="submit" value="invia" name="invia"></form>
    </div>
    <br /><br />
    </div>
    Codice PHP:
    <?php
    $dateform
    = date("d/m/Y");
    $timeform = date("H:i");
    $testo=htmlentities($_POST['commento']);
    $testo= nl2br($testo);
    $nome=htmlentities($_POST['nome']);
    $database='database/contatti.txt';
    $datamail='database/mail.txt';
    $mail=$_POST['mail'];


    If (empty(
    $nome))
    {
    ob_start();
    echo
    "Inserire il nome obbligatoriamente.";
    header( "refresh:2;url=guestbook.php" );
    ob_end_flush();
    }
    If (empty(
    $mail))
    {
    ob_start();
    echo
    "Inserire e-mail obbligatoriamente.";
    header( "refresh:2;url=guestbook.php" );
    ob_end_flush();
    }
    If (empty(
    $testo))
    {
    ob_start();
    echo
    "Inserire testo obbligatoriamente.";
    header( "refresh:2;url=guestbook.php" );
    ob_end_flush();
    }

    If (!empty(
    $mail))
    If (!empty(
    $testo))
    If (!empty(
    $nome))
    {
    $open = fopen($database,'a');
    fwrite( $open, "\n<hr id='bordi'><p>".$dateform." ".$timeform."</p><br /><h3>".$nome." scrive:<h3> <hr /><br /> <p>".$testo."</p><br /><hr id='bordi'>" );
    fclose($open);

    $open = fopen($datamail,'a');
    fwrite( $open, "\n\n".$nome." - ".$mail."\n\n" );


    ob_start();
    echo
    "Messaggio inserito perfettamente.";
    header( "refresh:2;url=guestbook.php" );
    ob_end_flush();
    }
    ?>
    Ora l'unica cosa che mi serve è come fare il controllo che ci sia la @ nella mail.
    Ultima modifica di maselliluigi : 01-09-2011 alle ore 17.27.11

  5. #5
    Guest

    Predefinito

    Se ti interessa solo verificare che ci sia il carattere @, puoi usare la funzione strpos di php, che retituisce la posizione del carattere cercato all'interno di una stringa, ovvero false qualora il carattere cercato non sia presente nella stringa.

    Se vuoi fare le cose un po' più complicate puoi validare, tramite espressioni regolari il campo mail.
    Un pattern che potresti usare, può essere:

    Codice:
    ^[a-z0-9\._+-]+@[a-z0-9\._-]+\.[a-z]{2,4}$

  6. #6
    maselliluigi non è connesso Neofita
    Data registrazione
    28-08-2011
    Messaggi
    3

    Predefinito

    Non ho capito un H ma proverò ad usare strpos solo per la @, poi più in là cercherò di capire cos'è un pattern.

  7. #7
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,247

    Predefinito

    Meglio ancora delle espressioni regolari, puoi usare una funzione fatta aposta: la filter_var() passandogli come secondo parametro FILTER_VALIDATE_EMAIL.

    Per la sicurezza in generale, se ti interessa, puoi leggere anche qui.

    Ciao!

  8. #8
    Guest

    Predefinito

    Più che pattern documentati su espressioni regolari (qualocosa anche qui, o qui, oppure in inglese qui).

    Dai anche un'occhio sulla funzione preg_match di PHP

    EDIT:
    @alemoppo
    hai risposto mentre stavo scrivendo. Io solitamente mi affido alle regexp e devo confessarti che non conosceva quella funzione.
    Buono a sapersi
    Ultima modifica di simpleticket : 01-09-2011 alle ore 20.53.10

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •