Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    684

    Controllo submit non autorizzato

    Ciao a tutti,
    sto realizzando un piccolo e semplice form in php che invia una mail. Vorrei inserire un controllo sulla pagina visualizzata in seguito all'invio in modo che nessuno possa accedervi in maniera diretta (evitando, così, l'invio di email vuote): sapete darmi una mano?

    Ecco il codice:

    form.php

    <form action="email_inviata.php" method=post><table width="500" border="0" align="center">
    <tr>
    <td width="239">Nome *</td>
    <td width="606"><div align="right">
    <input type="text" name="nome" value="" id="nome" class="textform" />
    </div></td>
    </tr>
    <tr>
    <td>Cognome *</td>
    <td><div align="right">
    <input type="text" name="cognome" value="" id="cognome" class="textform"/>
    </div></td>
    </tr>
    <tr>
    <td>Indirizzo</td>
    <td><div align="right">
    <input type="text" name="indirizzo" value="" id="indirizzo" class="textform"/>
    </div></td>
    </tr>
    <tr>
    <td>Tel.*</td>
    <td><div align="right">
    <input type="text" name="tel" value="" id="tel" class="textform"/>
    </div></td>
    </tr>
    <tr>
    <td>E Mail: *</td>
    <td><div align="right">
    <input name="email" type="text" class="textform" id="email" value=""/>
    </div></td>
    </tr>
    <tr>
    <td>Informazioni richieste:</td>
    <td><div align="right">
    <textarea cols="20" rows="4" name="messaggio" class="sfondo"></textarea>
    </div></td>
    </tr>
    <tr>
    <td colspan="2" style="height:40px;">


    <center>
    Autorizzazione
    </center>
    </p>


    Autorizzo, ai sensi del Dec. Leg.vo 196/2003...</p>
    </td>
    </tr>
    <tr>
    <td colspan="2" style="height:40px;"><div align="center">
    <input type="submit" value="Invia" class="pulsante"/>
    </div></td>
    </tr>
    </table>
    </form>


    email_inviata.php


    <? include ("header.php"); ?>
    <?php
    // L'INDIRIZZO DEL DESTINATARIO DELLA MAIL
    $to = "mail@dominio.it";

    // IL SOGGETTO DELLA MAIL
    $subject = "Modulo proveniente dal sito www.dominio.it";

    // COSTRUZIONE DEL CORPO DEL MESSAGGIO
    $body = "Contenuto del modulo:\n\n";

    $body .= "Nome: " . trim(stripslashes($_POST["nome"])) . "\n";
    $body .= "Cognome: " . trim(stripslashes($_POST["cognome"])) . "\n";
    $body .= "Indirizzo: " . trim(stripslashes($_POST["indirizzo"])) . "\n";
    $body .= "Telefono: " . trim(stripslashes($_POST["tel"])) . "\n";
    $body .= "E mail: " . trim(stripslashes($_POST["email"])) . "\n";
    $body .= "Informazioni richieste: " . trim(stripslashes($_POST["messaggio"])) . "\n";

    // INTESTAZIONI SUPPLEMENTARI
    $headers = "From: Richiesta di contatto";

    // INVIO DELLA MAIL
    if(@mail($to, $subject, $body, $headers)) { // SE L'INOLTRO E' ANDATO A BUON FINE...

    echo "

    La tua email inviata con successo!</p><p align=\"center\"><a href=\"form.php\">Torna indietro</a></p>";

    } else {// ALTRIMENTI...

    echo "

    Si è verificato un errore nell'invio dell'email. </p><p align=\"center\"><a href=\"form.php\">Torna indietro</a></p>";

    }

    ?>

    Grazie

  2. #2
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    hai 2 strade:
    javascript (lato client)
    php (lato server)
    con la prima controlli nella pagina se l'utente non ha riempito i campi. L'utente resta nella pagina e in quella successiva non ci va proprio.
    con la seconda anche se è tutto vuoto lo mandi nella pagina successiva e controlli se il POST dei dati inviati non sia vuoto, quindi tipo:
    Codice PHP:
    $mail $_POST['email'];
    if (
    $mail != '') {
    //procedo con la mail, incollo il tuo codice
    // L'INDIRIZZO DEL DESTINATARIO DELLA MAIL
    $to "mail@dominio.it";

    // IL SOGGETTO DELLA MAIL
    $subject "Modulo proveniente dal sito [url]www.dominio.it[/url]";

    // COSTRUZIONE DEL CORPO DEL MESSAGGIO
    $body "Contenuto del modulo:\n\n";

    $body .= "Nome: " trim(stripslashes($_POST["nome"])) . "\n";
    $body .= "Cognome: " trim(stripslashes($_POST["cognome"])) . "\n";
    $body .= "Indirizzo: " trim(stripslashes($_POST["indirizzo"])) . "\n";
    $body .= "Telefono: " trim(stripslashes($_POST["tel"])) . "\n";
    $body .= "E mail: " trim(stripslashes($_POST["email"])) . "\n";
    $body .= "Informazioni richieste: " trim(stripslashes($_POST["messaggio"])) . "\n";

    // INTESTAZIONI SUPPLEMENTARI
    $headers "From: Richiesta di contatto";

    // INVIO DELLA MAIL
    if(@mail($to$subject$body$headers)) { // SE L'INOLTRO E' ANDATO A BUON FINE...

    echo "

    La tua email inviata con successo!</p><p align=\"center\"><a href=\"form.php\">Torna indietro</a></p>"
    ;

    } else {
    // ALTRIMENTI...

    echo "

    Si è verificato un errore nell'invio dell'email. </p><p align=\"center\"><a href=\"form.php\">Torna indietro</a></p>"
    ;

    }
    } else {
    //qua potresti fare un redirect alla pagina precedente

    una roba del genere.. il controllo lo puoi fare su tutti i campi che vuoi.. quelli OBBLIGATORI per intenderci.. io li integrerei entrambi (anche se JS non ne so niente..), e aggiungerei un captcha, perchè qualche malintenzionato potrebbe accedere direttamente alla seconda pagina conoscendone il nome e rischieresti la chiusura temporanea del sito.. mi è successo, lascia perdere..

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    684
    Ciao e grazie per il tuo aiuto.
    Sto facendo delle prove ma per adesso ho, come risultato, una pagina bianca e l'email non me la invia più...:-(

    Continuerò con i tentativi..grazie

  4. #4
    Originariamente inviato da telegio
    hai 2 strade:
    javascript (lato client)
    php (lato server)
    con la prima controlli nella pagina se l'utente non ha riempito i campi. L'utente resta nella pagina e in quella successiva non ci va proprio.
    con la seconda anche se è tutto vuoto lo mandi nella pagina successiva e controlli se il POST dei dati inviati non sia vuoto, quindi tipo:
    Codice PHP:
    $mail $_POST['email'];
    if (
    $mail != '') {
    //procedo con la mail, incollo il tuo codice
    // L'INDIRIZZO DEL DESTINATARIO DELLA MAIL
    $to "mail@dominio.it";

    // IL SOGGETTO DELLA MAIL
    $subject "Modulo proveniente dal sito [url]www.dominio.it[/url]";

    // COSTRUZIONE DEL CORPO DEL MESSAGGIO
    $body "Contenuto del modulo:\n\n";

    $body .= "Nome: " trim(stripslashes($_POST["nome"])) . "\n";
    $body .= "Cognome: " trim(stripslashes($_POST["cognome"])) . "\n";
    $body .= "Indirizzo: " trim(stripslashes($_POST["indirizzo"])) . "\n";
    $body .= "Telefono: " trim(stripslashes($_POST["tel"])) . "\n";
    $body .= "E mail: " trim(stripslashes($_POST["email"])) . "\n";
    $body .= "Informazioni richieste: " trim(stripslashes($_POST["messaggio"])) . "\n";

    // INTESTAZIONI SUPPLEMENTARI
    $headers "From: Richiesta di contatto";

    // INVIO DELLA MAIL
    if(@mail($to$subject$body$headers)) { // SE L'INOLTRO E' ANDATO A BUON FINE...

    echo "

    La tua email inviata con successo!</p><p align=\"center\"><a href=\"form.php\">Torna indietro</a></p>"
    ;

    } else {
    // ALTRIMENTI...

    echo "

    Si è verificato un errore nell'invio dell'email. </p><p align=\"center\"><a href=\"form.php\">Torna indietro</a></p>"
    ;

    }
    } else {
    //qua potresti fare un redirect alla pagina precedente

    una roba del genere.. il controllo lo puoi fare su tutti i campi che vuoi.. quelli OBBLIGATORI per intenderci.. io li integrerei entrambi (anche se JS non ne so niente..), e aggiungerei un captcha, perchè qualche malintenzionato potrebbe accedere direttamente alla seconda pagina conoscendone il nome e rischieresti la chiusura temporanea del sito.. mi è successo, lascia perdere..
    Certo, se il controllo che fai è solo che mail non sia vuoto...
    Ciao!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    684
    Il controllo funziona ed ho messo anche un redirect ma accedendo direttamente a
    email_inviata.php

    vedo il layout della pagina ma non il form: perchè?

    Grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    684
    Ho risolto con un echo ed un link che rimanda alla pagina reale del form.



    Ciaoo

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.