Visualizzazione risultati 1 fino 13 di 13

Discussione: rendere delle text area di un form obbligatorie

  1. #1
    Guest

    Predefinito rendere delle text area di un form obbligatorie

    ragazzi sono ancora qui a rompervi le scatole con la mia impeditaggine in fatto di php

    ho girato un po sulle guide ma non ho trovato quello che cerco.
    io ho bisogno di rendere alcune aree di un form da compilare obbligatoriamente per aggirare lo spam
    avevo pensato al captcha ma non so per quale motivo quello immesso invia il form anche senza controllo captcha

    ora vi posto i codici del form e il file invia.php se qualcuno gentilmente mi darebbe le modifiche da fare per rendere alcune aree obbligatorie gli sarei immensamente grata

    form:

    Codice HTML:
    <FORM name=dataform method="POST" action="invia.php">
    <input type="hidden" name="formmail_id" value="13553">
    <center><TABLE cellSpacing=2 cellPadding=2 border=0>
    <tbody>
    <tr><td><label>Nome: <br /><input type="text" name="nome"></label></td>
    <td><label> Cognome: <br /><input name="cognome" type="text"></label></td>
    <td><label>Societ&agrave: <br /><input name="soc"type="text"></label></td></tr>
    <tr><td><label>Via / P.zza: <br /><input name="via"type="text"></label></td>
    <td><label> Citt&agrave: <br /><input name="citta" type="text"></label></td>
    <td><label>Provicia / Stato: <br /><input name="stato" type="text"></label></td></tr>
    <tr><td><label>Telefono: <br /><input name="telefono" type="text"></label></td>
    <td><label>Fax: <br /><input type="text" name="fax"></label></td>
    <td><label>E-mail: <br /><input type="text" name="email"></label></td>
    <tr><td>Oggetto: <br /><input type="text" name="oggetto"></label></td></tr>
    </tbody>
    </table></center>
    <center><table>
    <tbody>
    <tr><td>Messaggio: <br /><TEXTAREA cols=50 rows=4 WRAP="physical" name="commento"></textarea></td></tr>
    </tbody>
    </table></center>
    
    
    <center><input type="submit" value="INVIA!" class="bt"></center></form>
    invia.php

    Codice PHP:
    <?php
    //Valori presi dal form

    $oggetto="Commento";
    $mittente=$_REQUEST['email'];

    // dati anagrifici

    $nome=$_REQUEST['nome'];
    $Cognome=$_REQUEST['cognome'];
    $soc=$_REQUEST['soc'];
    $via=$_REQUEST['via'];
    $citta=$_REQUEST['citta'];
    $stato=$_REQUEST['stato'];
    $telefono=$_REQUEST['telefono'];
    $fax=$_REQUEST['fax'];
    $email=$_REQUEST['email'];
    $oggetto=$REQUEST['oggetto'];
    $messaggio=$REQUEST['messaggio'];



    // Rielabora e crea un testo formattato

    $testo= "


    Nome: "
    . $nome . "
    Cognome: "
    . $Cognome . "
    Società: "
    . $soc . "
    Via / P. zza: "
    . $via . "
    Città: "
    . $citta . "
    Provincia / Stato: "
    . $stato . "
    Telefono: "
    . $telefono . "
    Fax: "
    . $fax . "
    Email: "
    . $email . "
    Oggetto: "
    . $oggetto . "
    Messaggio: "
    . $messaggio ;








    //e-mail del destinatario. (inserire la vostra mail, chiaramente)
    $destinatario="sandyan@hotmail.it";

    //script invio mail
    mail($destinatario,$oggetto,$testo,$mittente);
    header("location: http://sandy.altervista.org/grazie.html");
    ?>
    spero proprio che qualcuno mi aiuti a risolvere questo maledetto problema
    Ultima modifica di musicanapoli : 30-08-2010 alle ore 02.32.22 Motivo: Modicato tag per racchiudere il codice

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

    Predefinito

    Codice PHP:
    <?php

    if(!isset($_REQUEST['cognome'],$_REQUEST['soc'],$_REQUEST['via'],$_REQUEST['citta'],$_REQUEST['stato'],$_REQUEST['telefono'],$_REQUEST['fax'],$_REQUEST['email'],$_REQUEST['oggetto'],$_REQUEST['messaggio']))
    header('location: errore.html');

    if(empty(
    $_REQUEST['cognome']) || empty($_REQUEST['soc']) || empty($_REQUEST['via']) || empty($_REQUEST['stato']) || empty($_REQUEST['telefono']) || empty($_REQUEST['fax']) || empty($_REQUEST['email']) || empty($_REQUEST['oggetto']) || empty($_REQUEST['messaggio']))
    header('Location: errore1.html');



    //Valori presi dal form

    $oggetto="Commento";
    $mittente=$_REQUEST['email'];

    // dati anagrifici

    $nome=$_REQUEST['nome'];
    $Cognome=$_REQUEST['cognome'];
    $soc=$_REQUEST['soc'];
    $via=$_REQUEST['via'];
    $citta=$_REQUEST['citta'];
    $stato=$_REQUEST['stato'];
    $telefono=$_REQUEST['telefono'];
    $fax=$_REQUEST['fax'];
    $email=$_REQUEST['email'];
    $oggetto=$REQUEST['oggetto'];
    $messaggio=$REQUEST['messaggio'];



    // Rielabora e crea un testo formattato

    $testo= "


    Nome: "
    . $nome . "
    Cognome: "
    . $Cognome . "
    Società: "
    . $soc . "
    Via / P. zza: "
    . $via . "
    Città: "
    . $citta . "
    Provincia / Stato: "
    . $stato . "
    Telefono: "
    . $telefono . "
    Fax: "
    . $fax . "
    Email: "
    . $email . "
    Oggetto: "
    . $oggetto . "
    Messaggio: "
    . $messaggio ;








    //e-mail del destinatario. (inserire la vostra mail, chiaramente)
    $destinatario="sandyan@hotmail.it";

    //script invio mail
    mail($destinatario,$oggetto,$testo,$mittente);
    header("location: http://sandy.altervista.org/grazie.html");
    ?>
    errore.html si apre se almeno un dato non esiste (non è proprio presente nel form!).
    errore1.html si apre se almeno un dato esiste, ma è vuoto

    Ovviamente io ho interpretato che TUTTI i dati sono obbligatori.... Nella domanda hai detto ALCUNE, ma quali?

    _____

    Suggermenti personali che puoi anche evitare di leggere:

    1- dai priorità ai singoli apici invece che ai doppi:

    Le assegnazioni con i doppi apici vengono prima controllate in modo di sostituire eventuali variabili con i loro contenuti
    ad esempio:
    Codice PHP:
    $var = 'cane';
    $testo = "Un animale: $var";
    prima di essere eseguito, l'interprete PHP dovrà sostituire $var con "cane"... quindi in generale prima di usare una stringa tra doppi apici controlla e sostituisce le variabili all'interno della stringa; comunque sia, si risparmia qualche millisecondo (anzi, forse anche meno!)

    2 - evita di usare il tag <center> oramai obsoleti... in quel caso avresti potuto mettere align="center" dentro il tag table, o meglio allinearlo con CSS

    3 - prima di utilizzare qualsiasi testo digitato dagli utenti, fallo passare dentro la htmlentities()

    ad esempio:
    Codice PHP:
    $nome=htmlentities($_REQUEST['nome']);

    4 - invece di mail($destinatario,$oggetto,$testo,$mittente); avresti potuto scrivere mail($destinatario,$oggetto,$testo,$email); eliminando la variabile $mittente e quindi la sua assegnazione

    5 - preferisci percorsi relativi, invece che assoluti
    invece di
    Codice PHP:
    header("location: http://sandy.altervista.org/grazie.html");
    se la pagina dello script risiede nella cartella principale, io farei:
    Codice PHP:
    header('location: ./grazie.html');
    ---------------
    Ecco come la farei IO:
    Codice PHP:
    <?php

    if(!isset($_REQUEST['cognome'],$_REQUEST['soc'],$_REQUEST['via'],$_REQUEST['citta'],$_REQUEST['stato'],$_REQUEST['telefono'],$_REQUEST['fax'],$_REQUEST['email'],$_REQUEST['oggetto'],$_REQUEST['messaggio']))
    header('location: errore.php?e=0');

    if(empty(
    $_REQUEST['cognome']) || empty($_REQUEST['soc']) || empty($_REQUEST['via']) || empty($_REQUEST['stato']) || empty($_REQUEST['telefono']) || empty($_REQUEST['fax']) || empty($_REQUEST['email']) || empty($_REQUEST['oggetto']) || empty($_REQUEST['messaggio']))
    header('Location: errore.php?e=1');

    // dati anagrifici

    $nome=$_REQUEST['nome'];
    $Cognome=$_REQUEST['cognome'];
    $soc=$_REQUEST['soc'];
    $via=$_REQUEST['via'];
    $citta=$_REQUEST['citta'];
    $stato=$_REQUEST['stato'];
    $telefono=$_REQUEST['telefono'];
    $fax=$_REQUEST['fax'];
    $email=$_REQUEST['email'];
    $oggetto=$REQUEST['oggetto'];
    $messaggio=$REQUEST['messaggio'];

    // Rielabora e crea un testo formattato

    $testo= 'Nome: '.$nome.'
    Cognome: '
    .$Cognome.'
    Società: '
    .$soc.'
    Via / P. zza: '
    .$via.'
    Città: '
    .$citta.'
    Provincia / Stato: '
    .$stato.'
    Telefono: '
    .$telefono.'
    Fax: '
    .$fax.'
    Email: '
    .$email.'
    Oggetto: '
    .$oggetto.'
    Messaggio: '
    .$messaggio;

    //script invio mail
    if(!mail('sandyan@hotmail.it','Commento',htmlentities($testo),$email))
    header('location: errore.php?e=2');
    else
    header('Location: http://sandy.altervista.org/grazie.html');
    ?>
    Ciao!
    Ultima modifica di alemoppo : 30-08-2010 alle ore 01.17.13

  3. #3
    Guest

    Predefinito

    ho usato il tag <center> perchè non so per quale motivo ma un <align="center"> non rispondeva ai comandi

    grazie per il tuo aiuto era proprio quello ke mi serviva :D

    ora scusa se sono stressante :P

    if(!iset e if(empty sono quelli che rendono obbligatorie le aree?
    almeno vedo quali lasciare facoltative e quali obbligatorie :P

    x il percorso assoluto errore mio, in quanto lo stavo usando su un form che ho usato anche per questo sito e ho messo un percorso assoluto in quanto il sito sta sul mio spazio e poi devo fornirlo al cliente mentre i file di ringraziamento ecc sul suo spazio se no dovrò poi modificare troppe pagine e non ho pensato di rendere relativo il link :P

    nel secondo form che mi hai scritto ci sono + pagine ossia
    errore.php?e=0 ed errore1.php?e=1

    queste pagine le devo creare?
    scusa la domanda stupida ma è la prima volta che faccio una cosa del genere e non so molte cose :(

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

    Predefinito

    no dunque...

    errore.php?e=0
    errore.php?e=1

    la pagina è soltanto una: errore.php

    le "scritte" dopo il ? rappresentano parametri di tipo GET.. ad esempio la pagina errore.php potrebbe essere del tipo:
    Codice PHP:
    <?php
    if(!isset($_REQUEST['e']))
    echo
    'errore';

    if(
    $_REQUEST['e'] == '0')
    echo
    'uno o più campi non esistono!';
    else if(
    $_REQUEST['e'] == '1')
    echo
    'Uno o più campi obbligatori sono vuoti!';
    else
    echo
    'errore sconosciuto!';
    ?>
    NOTA che i parametri li puoi prendere anche con gli array superglobali $_GET (per i marametri get) e $_POST (per i parametri POST).

    Quindi anche sul tuo sorgente avresti potuto prelevare i parametri POST ad esempio così:

    Codice PHP:
    $nome=$_POST['nome'];
    $Cognome=$_POST['cognome'];
    $soc=$_POST['soc'];
    $via=$_POST['via'];
    [...]
    ovvero $_REQUEST comprende sia $_POST sia $_GET sia $_COOKIE

    if(!iset e if(empty sono quelli che rendono obbligatorie le aree?
    Sì... il primo if puoi lasciarlo anche come è.... il secondo { if(empty( } controlla se e quali campi son vuoti...

    ovviamente per altro chiedi pure!

    EDIT:

    Per allineare
    Codice HTML:
    <align="center">
    align di per se non è un tag!...

    Prova a sostituire
    Codice HTML:
    <center><TABLE cellSpacing=2 cellPadding=2 border=0>
    con
    Codice HTML:
    <TABLE cellSpacing='2' cellPadding='2' border='0' align='center'>
    Ciao!
    Ultima modifica di alemoppo : 30-08-2010 alle ore 10.46.46

  5. #5
    Guest

    Predefinito

    allora io ho fatto come hai detto ma il form parte lo stesso

    ho uppato la pagina online, non far caso alla grafica perchè è adattata per un altro template XD

    http://sandy.altervista.org/preventivi.html

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

    Predefinito

    Strano... puoi scrivere il contenuto del file "invia.php"?

    Forse hai sbagliato qualcosa! (oppure ho sbagliato io )

    Ciao!

  7. #7
    Guest

    Predefinito

    eccolo

    <?php

    if(!isset($_REQUEST['cognome'],$_REQUEST['soc'],$_REQUEST['via'],$_REQUEST['citta'],$_REQUEST['stato'],$_REQUEST['telefono'],$_REQUEST['fax'],$_REQUEST['email'],$_REQUEST['oggetto'],$_REQUEST['messaggio']))
    header('location: errore.php?e=0');

    if(empty($_REQUEST['nome']) || empty($_REQUEST['via']) || empty($_REQUEST['stato']) || empty($_REQUEST['telefono']) || empty($_REQUEST['email']) || empty($_REQUEST['oggetto']) || empty($_REQUEST['messaggio']))
    header('Location: errore.php?e=1');

    // dati anagrifici

    $nome=$_REQUEST['nome'];
    $Cognome=$_REQUEST['cognome'];
    $soc=$_REQUEST['soc'];
    $via=$_REQUEST['via'];
    $citta=$_REQUEST['citta'];
    $stato=$_REQUEST['stato'];
    $telefono=$_REQUEST['telefono'];
    $fax=$_REQUEST['fax'];
    $email=$_REQUEST['email'];
    $oggetto=$REQUEST['oggetto'];
    $messaggio=$REQUEST['messaggio'];

    // Rielabora e crea un testo formattato

    $testo= 'Nome: '.$nome.'
    Cognome: '.$Cognome.'
    Società: '.$soc.'
    Via / P. zza: '.$via.'
    Città: '.$citta.'
    Provincia / Stato: '.$stato.'
    Telefono: '.$telefono.'
    Fax: '.$fax.'
    Email: '.$email.'
    Oggetto: '.$oggetto.'
    Messaggio: '.$messaggio;

    //script invio mail
    if(!mail('sandyan@hotmail.it','Commento',htmlentit ies($testo),$email))
    header('location: errore.php?e=2');
    else
    header('Location: http://sandy.altervista.org/grazie.html');
    ?>

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

    Predefinito

    Riprovalo così:

    Codice PHP:
    <?php

    if(!isset($_REQUEST['cognome'],$_REQUEST['soc'],$_REQUEST['via'],$_REQUEST['citta'],$_REQUEST['stato'],$_REQUEST['telefono'],$_REQUEST['fax'],$_REQUEST['email'],$_REQUEST['oggetto'],$_REQUEST['commento']))
    header('location: errore.php?e=0');


    $nome=$_REQUEST['nome'];
    $Cognome=$_REQUEST['cognome'];
    $soc=$_REQUEST['soc'];
    $via=$_REQUEST['via'];
    $citta=$_REQUEST['citta'];
    $stato=$_REQUEST['stato'];
    $telefono=$_REQUEST['telefono'];
    $fax=$_REQUEST['fax'];
    $email=$_REQUEST['email'];
    $oggetto=$_REQUEST['oggetto'];
    $messaggio=$_REQUEST['commento'];

    if((
    $nome == '') || ($via == '') || ($stato == '') || ($telefono == '') || ($email == '') || ($oggetto == '') || ($messaggio == ''))
    header('Location: errore.php?e=1');

    //controllo validità email
    if(!eregi("^([a-z0-9_\.-])+@(([a-z0-9_-])+\\.)+[a-z]{2,6}$", $email))
    header('Location: errore.php?e=2');

    // Rielabora e crea un testo formattato

    $testo= 'Nome: '.$nome.'
    Cognome: '
    .$Cognome.'
    Società: '
    .$soc.'
    Via / P. zza: '
    .$via.'
    Città: '
    .$citta.'
    Provincia / Stato: '
    .$stato.'
    Telefono: '
    .$telefono.'
    Fax: '
    .$fax.'
    Email: '
    .$email.'
    Oggetto: '
    .$oggetto.'
    Messaggio: '
    .$messaggio;

    //script invio mail
    if(!mail('sandyan@hotmail.it','Commento',htmlentities($testo),$email))
    header('location: errore.php?e=2');
    else
    header('Location: http://sandy.altervista.org/grazie.html');
    ?>
    Oltre all'if(), non andava bene $_REQUEST['messaggio']; infatti doveva essere $_REQUEST['commento'].

    Poi htmlentities, non htmlentit ies.

    p.s. ho aggiunto anche il controllo del formato della email... Quindi SE HAI USATO l'errore.php che ti ho abbozzato sopra, dovresti aggiungere anche:

    Codice PHP:
    [...]
    else if(
    $_REQUEST['e'] == '2')
    echo
    'Email non valida!';
    [...]
    Ripeto: se serve altro non esitare a chiedere!

    Ciao!
    Ultima modifica di alemoppo : 30-08-2010 alle ore 17.02.23

  9. #9
    Guest

    Predefinito

    ho fatto come hai detto ma se clicco su invia parte lo stesso

    sicuro che nn devo apportare modifiche al form????

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

    Predefinito

    avevo provato e mi funzionava!.. adesso infatti non funziona più!..

    Adesso, però, funziona così:

    Codice PHP:
    <?php

    if(!isset($_REQUEST['cognome'],$_REQUEST['soc'],$_REQUEST['via'],$_REQUEST['citta'],$_REQUEST['stato'],$_REQUEST['telefono'],$_REQUEST['fax'],$_REQUEST['email'],$_REQUEST['oggetto'],$_REQUEST['commento']))
    header('location: errore.php?e=0');


    $nome=trim($_REQUEST['nome']);
    $Cognome=trim($_REQUEST['cognome']);
    $soc=trim($_REQUEST['soc']);
    $via=trim($_REQUEST['via']);
    $citta=trim($_REQUEST['citta']);
    $stato=trim($_REQUEST['stato']);
    $telefono=trim($_REQUEST['telefono']);
    $fax=trim($_REQUEST['fax']);
    $email=trim($_REQUEST['email']);
    $oggetto=trim($_REQUEST['oggetto']);
    $messaggio=trim($_REQUEST['commento']);

    if((
    $nome == '') || ($via == '') || ($stato == '') || ($telefono == '') || ($email == '') || ($oggetto == '') || ($messaggio == ''))
    {
    header('Location: errore.php?e=1');
    die();
    }
    //controllo validità email
    if(!eregi("^([a-z0-9_\.-])+@(([a-z0-9_-])+\\.)+[a-z]{2,6}$", $email))
    {
    header('Location: errore.php?e=2');
    die();
    }
    // Rielabora e crea un testo formattato

    $testo= 'Nome: '.$nome.'
    Cognome: '
    .$Cognome.'
    Società: '
    .$soc.'
    Via / P. zza: '
    .$via.'
    Città: '
    .$citta.'
    Provincia / Stato: '
    .$stato.'
    Telefono: '
    .$telefono.'
    Fax: '
    .$fax.'
    Email: '
    .$email.'
    Oggetto: '
    .$oggetto.'
    Messaggio: '
    .$messaggio;

    //script invio mail

    if(!mail('sandyan@hotmail.it','Commento',htmlentities($testo),$email))
    {
    header('location: errore.php?e=2');
    die();
    }
    else
    {
    header('Location: http://sandy.altervista.org/grazie.html');
    }
    ?>
    ..spero sia la volta buona, anche se non ha senso la modifica che ho fatto!

    Ciao!

  11. #11
    Guest

    Predefinito

    ottimo ora funziona :D

    ora ultimissima domanda poi non ti stresso più che sei stato fin troppo gentile con me :)

    per far in modo che la pagina di errore contenga il template basta che metto il codice php dentro ad una pagina normale giusto?
    vorrei fosse come grazie.html :) quindi con tutta la grafica per poi inserire un bottone per tornare indietro :P

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

    Predefinito

    Citazione Originalmente inviato da sandy Visualizza messaggio
    ottimo ora funziona :D

    ora ultimissima domanda poi non ti stresso più che sei stato fin troppo gentile con me :)

    per far in modo che la pagina di errore contenga il template basta che metto il codice php dentro ad una pagina normale giusto?
    vorrei fosse come grazie.html :) quindi con tutta la grafica per poi inserire un bottone per tornare indietro :P
    Sìsì, puoi farlo!....

    Comunque, puoi fare anche una pagina per ogni errore, ma per motivi di spazio conviene riconoscere con PHP

    puoi fare ad esempio:

    Codice HTML:
    <html>
    <head>
    <title>titolo</title>
    </head>
    <body>
    <!-- template -->
    <!- altri tag -->
    <?php
         //codice PHP
    ?>
    <!- altri tag -->
    <!-- template -->
    </body>
    </html>
    Ciao!

  13. #13
    Guest

    Predefinito

    grazie sei stato davvero molto gentile e disponibile ad aiutarmi :)
    la mia email te ne sarà molto grata ;)

Regole di scrittura

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