Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    23

    Problema form invio dati?!?!

    Ciao a tutti.
    Neofita php. Ho realizzato una pagina che si apre come una popup, la quale contiene un form per inviare dati a un db, ho utilizzato il method post e l'action avviene nella stessa pagina del form, tutto funziona, o meglio, la pagina si apre quando richiamata, compilando il form i dati vengono inviati al db, c'è solo un piccolo problema che non riesco a risolvere: ogni volta che la pagina contenente il form viene aperta e chiusa, anche senza compilare i campi e senza premere inviadati nel db si registrano dei record vuoti.
    Perchè avviene ciò?

    Riporto parte del listato:

    <html>
    <head>
    <script language=JavaScript>
    </script>
    </head>
    <body>
    <table.....>
    <form action="xxx.php" name="ciao" method="POST">
    .....
    .....
    <input type="submit" value="Invia">
    <input type="reset" value="Cancella">
    <input type="button" value="Chiudi" onclick="window.close('','xxx.php','')">
    </form>
    </table>
    </body>
    </html>

    <?php
    require_once "daticonnessione.php";
    require_once "connessione.php";
    mysql_query("INSERT INTO guestbook (aa,bb,cc,dd,ee,orario,ip) VALUES ('$aa','$bb','$cc','$dd','$ee','".time()."','".$_S ERVER['REMOTE_ADDR']."')");
    ?>

    Grazie per i suggerimenti.

  2. #2
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    devi porre una condizione che un campo di un form sia settato, io di norma controllo il tasto submit o lo stesso form

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    23
    Grazie Ranma2

    Ho inserito questa condizione sui campi, problema risolto, ora se ne apre un altro: come posso inserire un messaggio di allarme che avverte il client che deve compilare tutto il form compreso campo mail con indirizzo valido, altrimenti il messaggio non va a buon fine?
    Un'ultima cortesia, puoi farmi un esempio di un controllo submit o form? Io non ci sono riuscito.

    Curiosità: questo script funziona ma è sintatticamente esatto?

    <?php
    require_once "daticonnessione.php";
    require_once "connessione.php";

    if(trim($aa)!="" && eregi("^([a-z0-9_\.-])+@(([a-z0-9_-])+\\.)+[a-z]{2,6}
    $",$mail) && trim($ee)!=""){

    mysql_escape_string($aa);
    mysql_escape_string($bb);
    mysql_escape_string($cc);
    mysql_escape_string($dd);
    mysql_escape_string($ee);


    mysql_query("INSERT INTO guestbook (aa,mail,cc,dd,ee,orario,ip) VALUES ('$aa','$mail','$cc','$dd','$ee','".time()."','".$ _SERVER['REMOTE_ADDR']."')");
    }

    ?>

  4. #4
    fai così:
    aggiungi un campo
    <input type="hidden" name="inviato" value="1" />

    e poi fai il controllo
    <?
    if ($_POST['inviato']==1)
    {
    //controllo sui campi

    //inserisci

    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    23
    Ciao fiurex

    Grazie per la dritta, ma non riesco a fare funzionare lo script, ho aggiunto le condizioni ma probabilmente c'è un'errore di sintassi, mi viene restituito un'errore boleano?!?!

    <form action="xxx.php" name="ciao" method="POST">
    .....
    .....
    <input type="hidden" name="inviato" value="1" />
    <input type="submit" value="Invia">
    <input type="reset" value="Cancella">
    <input type="button" value="Chiudi" onclick="window.close('','xxx.php','')">
    </form>
    </table>
    </body>
    </html>

    <?php
    require_once "daticonnessione.php";
    require_once "connessione.php";
    if ($_POST['inviato']==1)
    {
    if(trim($aa)!="" && eregi("^([a-z0-9_\.-])+@(([a-z0-9_-])+\\.)+[a-z]{2,6}
    $",$mail) && trim($ee)!="")
    {
    mysql_escape_string($aa);
    mysql_escape_string($bb);
    mysql_escape_string($cc);
    mysql_escape_string($dd);
    mysql_escape_string($ee);
    mysql_query("INSERT INTO guestbook (aa,bb,cc,dd,ee,orario,ip) VALUES ('$aa','$bb','$cc','$dd','$ee','".time()."','".$_S ERVER['REMOTE_ADDR']."')");
    }

    ?>

  6. #6
    Per sapere se un campo è stato compilato o meno, devi controllare se è vuoto oppure no con la funzione EMPTY().
    Quindi fai lo script come segue:

    Codice PHP:

    $submitted 
    $_POST['submitted'];

    // il bottone di invio non è stato premuto
    // stampo la form
    if (!$submitted) {

    echo 
    "
    <form action=\"xxx.php\" name=\"ciao\" [B]enctype=\"multipart/form-data\"[/B] method=\"POST\">
    .....
    ..... 
    <input type=\"submit\" [B]id=\"submitted\" name=\"submitted\" [/B] value=\"Invia\">
    <input type=\"reset\" value=\"Cancella\">
    <input type=\"button\" value=\"Chiudi\" onclick=\"window.close('','xxx.php','')\">

    "
    ;
    /* 
    non hai bisogno di un campo hidden visto che puoi 
    associare una variabile al campo submit
    metti poi anche l'enctype nella action della form
    oppure rischi che qualche variabile si perda 
    */

    } else {
    /*
    Il bottone è stato premuto: passi a recuperare le 
    variabili passate dalla form [aa,bb,cc,dd,ee]
    Oltre a recuperarle,togli eventuali
    spazi bianchi prima e dopo la stringa
    */

    $aa trim($_POST['aa']);
    $bb trim($_POST['bb']);
    $cc trim($_POST['cc']);
    $dd trim($_POST['dd']);
    $ee trim($_POST['ee']);

    // controllo se sono vuote
    if (empty($aa) OR empty($bb) OR empty($cc) OR empty($dd) OR empty($ee)) {
    echo 
    "
    <h3>Spiacente, ma è obbligatorio compilare tutti i campi richiesti!</h3>
    <a href=\"javascript:history.back()\">Indietro</a>
    "
    ; exit();
    }
    /*
    QUI VA IL RESTO DELLO SCRIPT
    */

    Naturalmente, ogni campo presente nel controllo di cui sopra, deve essere obbligatorio.
    Quelli che non ti interessa se risultano vuoti o meno li togli dalla condizione di quel IF.

    Se poi vuoi fare le cose per bene, ti consiglio di filtrare tutti gli input con dei controlli per evitare sia hacking sia caratteri che possono creare problemi.
    Il campo dove viene digitato l'indirizzo email andrebbe invece controllato con una regexp per verificarne la validità.... quantomeno a livello sintattico!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    23
    Ciao alcio74

    Scusa se ti ringrazio solo ora, ma ho provato le mofiche che mi hai suggerito e non riesco a comporre lo script nel modo giusto, in esecuzione mi restituisce errore di sintassi, ripeto sono un neofita di php, , forse necessito di un tutor.

    Questa parte è addirittura aramaico: Se poi vuoi fare le cose per bene, ti consiglio di filtrare tutti gli input con dei controlli per evitare sia hacking sia caratteri che possono creare problemi, mi puoi spiegare con un esempio pratico?

    Grazie.

  8. #8
    Beh... io non posso proprio essere il tuo tutor, però una cosa te la posso suggerire:

    in esecuzione mi restituisce errore di sintassi
    Scrivimi per cortesia su quale riga ti da l'errore (così mi regolo in base allo script che vedo postato qui) e che tipo di errore di sintassi ti segnala.

    Per quello che riguarda i filtraggi degli input, beh.... ti conviene prima farti una bella lettura.
    Guida Alla Sicurezza in PHP.



    p.s. un consiglio per i tuoi post futuri.
    Riporta sempre per intero il messaggio di errore: non immagini quanto tempo si risparmierebbe se lo fossero sempre riportati per intero!!!!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    23
    ore 1.24, sarà l'ora tarda, sarà questo acronimo maledetto, ma ho il vago sospetto di essere io!?!
    Ho riprovato ad inserire le tue modifiche ora non mi restituisce più nessun errore, ma lo script non funziona, cerco di spiegarmi meglio: il form è inserito in una popup, quando la mando in esecuzione e invio i dati senza compilare i campi, si visualizza il messaggio "Spiacente, ma è obbligatorio compilare tutti i campi richiesti!Fino a qui si comporta come deve.
    Clicco "indietro", ma non torna al form, mi restituisce "impossibile visualizzare la pagina", chiudo la finestra, la riapro, compilo il form in ogni sua parte, quando lo invio sparisce il form, la finestra diventa bianca, operazione ultimata, ma non scrive sul db. Mah....

    Le modifiche le ho inserite come segue:

    <html>
    <head>
    </head>
    <body>

    <?php

    $submitted = $_POST['submitted'];

    // il bottone di invio non è stato premuto
    // stampo la form
    if (!$submitted) {

    echo "
    <div align=\"center\">
    <table width=\"45%\" border=\"0\" cellspacing=\"5\" cellpadding=\"3\">
    <form action=\"http://www.getaway68.com/form.php\" name=\"ciao\" enctype=\"multipart/form-data\" method=\"POST\">
    <tr>
    <td bgcolor=\"\" width=\"14%\"><font face=\"Arial, Helvetica, sans-serif\">aa:</font></td>
    <td bgcolor=\"\" width=\"86%\"><font face=\"Arial, Helvetica, sans-serif\"><input type=\"text\" name=\"aa\" size=\"40\"></font></td>
    </tr>
    <tr>
    <td bgcolor=\"\" width=\"14%\"><font face=\"Arial, Helvetica, sans-serif\">Mail:</font></td>
    <td bgcolor=\"\" width=\"86%\"><font face=\"Arial, Helvetica, sans-serif\"><input type=\"text\" name=\"mailautore\" size=\"40\"></font></td>
    </tr>
    <tr>
    <td bgcolor=\"\" width=\"14%\"><font face=\"Arial, Helvetica, sans-serif\">bb:</font></td>
    <td bgcolor=\"\" width=\"86%\"><font face=\"Arial, Helvetica, sans-serif\"><input type=\"text\" name=\"bb\" size=\"40\"></font></td>
    </tr>
    <tr>
    <td bgcolor=\"\" width=\"14%\"><font face=\"Arial, Helvetica, sans-serif\">cc:</font></td>
    <td bgcolor=\"\" width=\"86%\"><font face=\"Arial, Helvetica, sans-serif\"><textarea name=\"cc\" rows=\"10\" cols=\"50\">
    </textarea></font></td>
    </tr>
    <tr>
    <td bgcolor=\"\" colspan=\"2\"><font face=\"Arial, Helvetica, sans-serif\">
    <div align=\"center\">
    <input type=\"submit\" id=\"submitted\" name=\"submitted\" value=\"Invia\">
    <input type=\"reset\" value=\"Cancella\">
    <input type=\"button\" value=\"Chiudi\" onclick=\"window.close('','../form.php','')\">
    </div>
    </font></td>
    </tr></form>
    </table> </div></body></html>
    ";
    /*
    non hai bisogno di un campo hidden visto che puoi
    associare una variabile al campo submit
    metti poi anche l'enctype nella action della form
    oppure rischi che qualche variabile si perda
    */
    } else {
    /*
    Il bottone è stato premuto: passi a recuperare le
    variabili passate dalla form [aa,bb,cc,dd,ee]
    Oltre a recuperarle,togli eventuali
    spazi bianchi prima e dopo la stringa
    */
    $aa = trim($_POST['aa']);
    $mailautore = trim($_POST['mailautore']);
    $bb = trim($_POST['bb']);
    $cc = trim($_POST['cc']);
    // controllo se sono vuote
    if (empty($aa) OR empty($mailautore) OR empty($bb) OR empty($cc)) {
    echo "
    <h3>Spiacente, ma è obbligatorio compilare tutti i campi richiesti!</h3>
    <a href=\"java-script:history.back()\">Indietro</a>
    "; exit();
    }
    if(trim($aa)!="" && eregi("^([a-z0-9_\.-])+@(([a-z0-9_-])+\\.)+[a-z]{2,6}
    $",$mailautore) && trim($bb)!="" && trim($cc)!="")
    mysql_escape_string($aa);
    mysql_escape_string($mailautore);
    mysql_escape_string($bb);
    mysql_escape_string($cc);
    mysql_query("INSERT INTO guest (aa,mailautore,bb,cc,orario,ip) VALUES ('$aa','$mailautore','$bb','$cc','".time()."','".$ _SERVER['REMOTE_ADDR']."')");
    }
    ?>

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.