Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    Consiglio script contact form

    Salve, sono abbasta niubbo in php. Vorrei utilizzare uno script per l'invio di una email da un form. Ecco il codice

    File email.htm
    Codice PHP:
    ............
        <
    form action="email.php?action=send" method="post">
         <
    table width="50%">
          <
    tr
           <
    td width="110"><div align="right"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Email:</font></div></td>
           <
    td width="260"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"
            <
    input name="from" type="text" id="from">
            </
    font></td>
          </
    tr>
          <
    tr
           <
    td><div align="right"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Name:</font></div></td>
           <
    td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"
            <
    input type="text" name="fullname">
            </
    font></td>
          </
    tr>
          <
    tr
           <
    td><div align="right"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Subject:</font></div></td>
           <
    td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"
            <
    input name="subject" type="text" id="subject">
            </
    font></td>
          </
    tr>
          <
    tr
           <
    td height="136"><div align="right"
             

    <
    font size="2" face="Verdana, Arial, Helvetica, sans-serif">Message:</font></p>
             

    </
    p>
             

    </
    p>
             

    </
    p>
            </
    div></td>
           <
    td><textarea name="message" rows="7" id="message"></textarea>
            <
    font size="2" face="Verdana, Arial, Helvetica, sans-serif"></font></td>
          </
    tr>
         </
    table>
         

     
          <
    input type="submit" value="Send">
         </
    p>
        </
    form>
    ................ 
    File email.php

    Codice PHP:
    <?php
    extract
    ($HTTP_GET_VARS);
    extract($HTTP_POST_VARS);
    if (
    $action == "send")
    {
    include(
    "config.php");
    $to $ademail;
    $from $_POST['from'];
    $name $_POST['fullname'];
    $subject $_POST['subject'];
    $message $_POST['message'];

    $to trim($to);
    $from trim($from);
    $name trim($name);
    $subject trim($subject);
    $message trim($message);

    if (empty(
    $to))
    {
    $ermessage "Error: Email address to can not be blank, Please enter your email address in the config file!";
    include(
    "_inc/email_error.htm"); exit();
    }
    if (empty(
    $from))
    {
    $ermessage "Error: Email address can not be blank, Please enter your email address!";
    include(
    "_inc/email_error.htm"); exit();
    }
    if (!
    ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.
    '@'.
    '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
    '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$'$from))
    {
    $ermessage "Error: Invalid Email address, Please re-enter your email address!";
    include (
    "_inc/email_error.htm"); exit;
    }
    if (empty(
    $name))
    {
    $ermessage "Error: Please enter your name!";
    include(
    "_inc/email_error.htm"); exit();
    }
    if (empty(
    $subject))
    {
    $ermessage "Error: Subject can not be blank, Please enter email subject";
    include(
    "_inc/email_error.htm"); exit();
    }
    if (empty(
    $message))
    {
    $ermessage "Error: Message body can not be blank, Please enter email message";
    include(
    "_inc/email_error.htm"); exit();
    }
    $send mail($to$subject$message"From: {$from}");
    if (
    $send)
    {
    include(
    "_inc/email_sent.htm"); exit();
    }
    else 

    $ermessage "Error: You message has not been sent, please try again";
    include(
    "_inc/email_error.htm"); exit();
    }
    }
    else
    {
    include(
    "_inc/email.htm");
    }
    ?>
    Lo script mi pare pericoloso per l'utilizzo di questo codice
    Codice PHP:
    extract($HTTP_GET_VARS);
    extract($HTTP_POST_VARS); 
    Quindi vorrei modificarlo così

    file email.htm
    Codice PHP:
    ..................
    <
    form method="post" action="email.php">
    ..................
          
          <
    input type="submit" value="invia">
    .................. 
    File email.php

    Codice PHP:
    <?php
    if ($_POST)
    {
    ..................
    Sono sulla buona strada o parto già sbagliando?

    Mi consigliate anche come validare meglio l'input sui campi?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di Takeno
    Registrato dal
    May 2007
    Messaggi
    146
    Per controllare i campi ti consiglio di usare il javascript nella pagina mail.htm

    Codice PHP:
    #........
        
    <form action="email.php?action=send" method="post" name="FORM" onSubmit="return controllo();"
    #...........
    #con il normale submit
          
    <input type="submit" value="Send">
    #.......... 
    E poi lo script javascript:
    Codice PHP:
    <script language="JavaScript">
    function 
    controllo(){
      
    with(document.FORM) {
        if(
    nome.value=="") {
          
    alert("Errore: compilare il campo NOME");
          
    nome.focus();
          return 
    false;
        }
        if(
    cognome.value=="") {
          
    alert("Errore: compilare il campo COGNOME");
          
    cognome.focus();
          return 
    false;
        }
      }
      
    alert("Controllo effettuato con successo. La form sarà inviata.");
    return 
    true;
    }
    </script> 
    Dove FORM sta per il nome della form e tanti if quanti campi serve controllare siano vuoti.

  3. #3
    Mi permetto di darti un po' di consigli.

    1. Penso che puoi tranquillamente togliere gli EXTRACT che metti in capo allo script, anche perché vanno a ripescare dati da HTTP_POST e GET_VARS, che sono obsoleti.
    Peraltro, se poi vai a recuperare le variabili con il metodo $_POST, è pure un lavoro doppio.
    2. Non capisco come mai vai a mettere un controllo su $_POST.
    Se hai premuto il bottone, di invio, almeno una variabile è valorizzata (SEND di SUMBIT) per cui quel controllo sarà sempre inutile.
    3. Non puoi fermare il controllo di valori solo al fatto che i campi siano stati riempiti o meno!
    Leggiti la Guida di Sicurezza in PHP e capirai sia il motivo di quello che ti sto dicendo, sia i metodi per fare dei controlli solidi.
    4. Takeno ti consiglia di fare dei controlli in JavaScript.
    Mi auguro che te lo abbia suggerito solo per fare una form carina ed usabile, perché quel tipo di controlli (dal punto di vista della sicurezza dello script) sono completamente inutili!
    5. Abbandona le tabelle, ed usa gli appropriati TAG HTML per formattare le FORM.
    Ci guadagni in pulizia di codice ed in accessibilità!

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

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    QUoto alcio. I js servono solo per evitare un trughput alto al server di dati errati e cmq i controlli lato server vanno sempre fatti . Js infatti lavora lato client e nessuno mi vieta di replicare la form su una mia pagina web e dargli come action il tuo script e inviare quindi quello che volgio.

    Altra cosa controllare che i dati provengano da post piuttosto che da get ti da gia' un livello di sicurezza in piu' in quanto per inviare dati da get mi basta fare una semplice stringa sulla barra degli indirizzi del browser.

    Inoltre se hai salvataggi su sql ovunque tu abbia stringhe usare il mysql_real_escape in concomitanza con il controllo sulle gpc_magic_quotes diminuisce la possibilita' di ricevere injections. .....
    Poi il resto lo trovi sul link che ha messo alcio.


    P.S.
    Non sottovalutate mail la comodita' delle tabelle.
    Alcio per alcune cose come allineare i campi non c'e' nulla di meglio delle tabelle in quanto funzionano ovunque.

    Vero che il codice e' piu' sporco e diventa meno bello .... pero' finche' i campi sono pochi la sol atabelle sinceramente la trovo comoda anche perche' cmq in xtml strict 1.0 viene accettata e mi rende la vita piu' facile per i css.

    Cmq poi ad oguno il suo.

  5. #5
    Originariamente inviato da Virus_101
    Non sottovalutate mail la comodita' delle tabelle.
    Ti quoto anche io dicendoti: non sottovalutate la potenza dei CSS.

    A parte gli scherzi, però: ho scritto quello perché con i tag per le form (FIELDSET, LABEL eccetera) si ottengono dei risultati fenomenali di allineamento e pulizia della form che con le tabelle te le sogni! Si possono creare dei gruppi logici di opzioni per le select, ad esempio, e questa è solo la fantomatica punta dell'iceberg!

    Le tabelle sono nate per intabellare risultati e non per creare layout.
    Peraltro, si possono usare i tag specifici per le tabelle piuttoso che quelli generici (THEAD, TBODY, TFOOT, TH eccetera) che permettono di risparmiare codice e di ottimizzare il tutto.
    Tra l'altro, se si usassero i CSS si eviterebbe di appesantire la pagina di informazioni di formattazione del testo ad ogni tag!

    Ma non andiamo OFF-TOPIC dai!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    Originariamente inviato da alcio74
    Mi permetto di darti un po' di consigli.

    1. Penso che puoi tranquillamente togliere gli EXTRACT che metti in capo allo script, anche perché vanno a ripescare dati da HTTP_POST e GET_VARS, che sono obsoleti.
    Peraltro, se poi vai a recuperare le variabili con il metodo $_POST, è pure un lavoro doppio.
    2. Non capisco come mai vai a mettere un controllo su $_POST.
    Se hai premuto il bottone, di invio, almeno una variabile è valorizzata (SEND di SUMBIT) per cui quel controllo sarà sempre inutile.
    3. Non puoi fermare il controllo di valori solo al fatto che i campi siano stati riempiti o meno!
    Leggiti la Guida di Sicurezza in PHP e capirai sia il motivo di quello che ti sto dicendo, sia i metodi per fare dei controlli solidi.
    4. Takeno ti consiglia di fare dei controlli in JavaScript.
    Mi auguro che te lo abbia suggerito solo per fare una form carina ed usabile, perché quel tipo di controlli (dal punto di vista della sicurezza dello script) sono completamente inutili!
    5. Abbandona le tabelle, ed usa gli appropriati TAG HTML per formattare le FORM.
    Ci guadagni in pulizia di codice ed in accessibilità!

    Ciao alcio, grazie a te e a tutti gli altri per avermi risposto innanzi tutto.
    Riguardo al punto 2, ho messo il controllo sul $_POST per verificare se si tratta del primo caricamento della pagina. Se lo tolgo, all'apertura della pagina del form, mi compare già il messaggio di errore "Error: Email address can not be blank, Please enter your email address!". Tu come ovvieresti a questo inconveniente?

    3. Sto già predisponendo dei controlli più accurati sui vari campi. Anche qui sono ben accetti dei consigli.

    4. Il sito è tutto css ed il form che dovrà accogliere il codice php è già pronto. Sono anche io dell'idea che con i css si ottengono risultati eccellenti.

  7. #7
    Beh... innanzi tutto ti chiedo scusa se siamo un po' andati Off-Topic con Virus... ma tant'è!

    Passo subito a risponderti.
    Io di solito, faccio tutto con uno script solo.
    Cioè metto un controllo ad inizio pagina sul fatto che sia valorizzata o meno la variabile passata con il bottone di SUBMIT.
    Codice PHP:
    <?php 
    if(!$_POST['check']) {
        
    // stampi la form  
        // ricordati che il campo submit lo devi compilare come segue
        // <input type="submit" id="check" name="check" value="Send">
    } else {
    // esegui i controlli ed il resto dello script
    }
    ?>
    Questo metodo, in PHP5 ti solleva un notice, se si lavora con il report degli errori ON, in quanto la variabile check, alla apertura della pagina non esiste in $_POST.
    Andrebbe creato un controllino stupido per valorizzarlo prima di utilizzarlo, ad ogni modo, il notice non blocca lo script.

    Per quello che riguarda i controlli e l'uso dei CSS, non posso che farti i miei complimenti.
    Per i controlli, ti consiglio di crearti delle funzioni che:
    • controllino la presenza di caratteri "speciali" nelle stringhe, eventualmente sostituendoli (apici vari, caratteri HTML, ecc); se cerchi nel forum, ho più volte suggerito una mia funzione per trovarli e sostituirli in un click;
    • per le email ti consiglio un preg-match per validarne quantomeno la congruità... in giro per il forum e per il web ne trovi a bizzeffe di regexp già pronte;
    • se ti aspetti dei campi numerici, usare come minimo un is_numeric().
    Tutto dipende anche da cosa vai a fare con queste informazioni passate dalle form.
    Leggi bene la guida che ti ho linkata: ci sono molte informazioni utili.

    Circa l'uso dei CSS, non posso che farti i complimenti: a fronte di un lavoro più duro all'inizio (nello sviluppo del layout), ci si guadagna in manutenzione successiva, pulizia del codice ed accessibilità delle pagine: God Bless CSS!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Sono d0accordissmo con vuoi sull'uso dei css fieldset etc per quanto riguarda la stuilizzazione purtroppo pero' per problematiche di tempo dovute sopratto a rendere i css funzionanti sui vari browsers a volte la scelta a tabelle e' solo un discorso di comodita' e velocita' di sviluppo.
    Tutto la fosse per me farei tto ccs solo che purtroppo a volte non si puo'.

    Cmq piuttosto di una preg match io uso la funzione filter_var( $stringa , FILTER_VALIDATE_MAIL ); Fa la stessa cosa di preg match solo che e' piu' piccola e restituisce solamente true/false.

    Poi ovviamente se hai server linux usa la funzione dnslookup per controllare che il dominio esista.


    Per ovviare l'inconveniente da te citato alcio ha gia' detto tto.

    Ciao raga torno a studiare il livello data-link e poi il livello transport .... chi capisce lo sa cosa sono :::

  9. #9
    Originariamente inviato da Virus_101
    Ciao raga torno a studiare il livello data-link e poi il livello transport .... chi capisce lo sa cosa sono :::
    In bocca al lupo!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #10
    Sto cercando di inserire nello script controlli più approfonditi sui campi da compilare per evitare tentativi di mail injection.
    Cerco un pattern da utilizzare con la funzione preg_match per controllare il campo nome. Ne ho trovato uno che però non fa passare i caratteri accentati.
    Ecco il pattern
    Codice PHP:
    '/^[a-z0-9()\/\'":\*+|,.; \- !?&#$@]{2,75}$/i' 
    .
    Se qualcuno me lo potesse correggere, magari rendendomelo più comprensibile...
    Ho studiato un po' le espressioni regolari qui ma non sono riuscito a capire quel pattern. Grazie in anticipo

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.