• User Newbie

    Form email: come posso aggiungere...

    Salve a tutti,
    devo inserire un form nel mio sito; attualmente è composto di un file html con il form, e un file php col "motore" e il controllo dei campi.
    Ecco il codice dell'html:

    form method="post" action=invio.php>
      <table width="75%" border="0">
        <tr> 
          <td width="9%">Nome*</td>
          <td width="1%">&nbsp;</td>
          <td width="90%"> 
            <input name="nome" type="text" size="50" maxlength="40" />
          </td>
        </tr>
        <tr> 
          <td width="9%">Telefono*</td>
          <td width="1%">&nbsp;</td>
          <td width="90%"> 
            <input name="tel" type="text" size="50" maxlength="40" />
          </td>
        </tr>
        <tr> 
          <td width="9%">Indirizzo</td>
          <td width="1%">&nbsp;</td>
          <td width="90%"> 
            <input type="text" name="indirizzo" size="50">
          </td>
        </tr>
        <tr>
          <td width="9%">Citt&agrave;</td>
          <td width="1%">&nbsp;</td>
          <td width="90%">
            <input name="citt&agrave;" type="text" size="50" maxlength="40" />
          </td>
        </tr>
        <tr> 
          <td width="9%">Email*</td>
          <td width="1%">&nbsp;</td>
          <td width="90%"> 
            <input name="email" type="text" size="50" maxlength="40" />
          </td>
        </tr>
        <tr> 
          <td width="9%">Oggetto*</td>
          <td width="1%">&nbsp;</td>
          <td width="90%"> 
            <input name="oggetto" type="text" size="50" maxlength="40" />
          </td>
        </tr>
        <tr> 
          <td width="9%" height="27"> 
            <div align="left"> 
              <p>Messaggio*</p>
              <p>&nbsp;</p>
              <p>&nbsp;</p>
            </div>
          </td>
          <td width="1%" height="27">&nbsp;</td>
          <td width="90%" height="27"> 
            <textarea name="msg" cols="38" rows="6"></textarea>
          </td>
        </tr>
        <tr> 
          <td width="9%" height="27">&nbsp;</td>
          <td width="1%" height="27">&nbsp;</td>
          <td width="90%" height="27"> 
            <input type="reset" value="Reset" name="reset" />
            <input type="submit" value="Invia" name="submit" />
          </td>
        </tr>
      </table>
      </form>
    <p>* = campi obbligatori</p>
    ```e il codice php:
    

    <?php
    $mail = "[email protected]";

    $nome = ltrim(rtrim(strip_tags(stripslashes($_POST['nome']))));
    $tel = ltrim(rtrim(strip_tags(stripslashes($_POST['tel']))));
    $indirizzo = ltrim(rtrim(strip_tags(stripslashes($_POST['indirizzo']))));
    $città = ltrim(rtrim(strip_tags(stripslashes($_POST['città']))));
    $email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
    $oggetto = ltrim(rtrim(strip_tags(stripslashes($_POST['oggetto']))));
    $msg = ltrim(rtrim(strip_tags($_POST['msg'])));

    $ip = getenv("REMOTE_ADDR");
    $msgformat = "$nome,$email ($ip)\n$tel\n$indirizzo\n$cittàn\n$msg";

    // VALIDATION
    if(empty($nome) || empty($tel) || empty($email) || empty($oggetto) || empty($msg)) {
    echo "<h3>Compilare i campi obbligatori</h3>";
    }
    elseif(!ereg("^[_a-z0-9-]+(.[_a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$", $email)) {
    echo "<h3>Indirizzo e-mail non valido</h3>";
    }
    else {
    mail($mail, $oggetto, $msgformat, "From: $nome <$email>");
    echo "<h3>L'email è stata inviata</h3><p>Vi risponderemo il prima possibile</p>"; }
    ?>

    
    
    * Vorrei fare in modo che una volta inviato con successo il form, dopo tipo 5 secondi mi riporti ad un'altra pagina;
    * Questa, la più importante: attualmente se non viene compilato un campo obbligatorio, rimanda solamente un messaggio di errore. Vorrei invece che nel caso non venisse compilato un campo obbligatorio (ma gli altri si) non visualizzasse solamente l'errore ma l'errore e sotto il form, coi campi compilati, e quelli da compilare evidenziati (in rosso magari).
    
    Spero di essere stato chiaro, vi ringrazio anticipatamente per l'eventuali risposte

  • User Attivo

    Per quanto riguarda il primo punto devi inserire un **header("location: pagina.php"); **
    La seconda fase, per il controllo dei campi, credo dovresti fare in modo che il form invii i dati nella stessa pagina in cui si trova.
    Oltre non so dirti e ti dirò che non ho mai provato a farlo. Lo farò al più presto e magari ti farò sapere qualcosa.
    A presto


  • User Attivo

    Scusate, riapro la discussione vista la mia totale inesperienza col php e simili.

    Un codice simile, ad esempio il form mail sopra, o un guestbook php, come e dove va inserito?

    Logicamente il codice html nel body dove si preferisce, mentre il file invio.php, cioè il codice php, dove va inserito? dentro la stessa directory del file .html, come ad esempio un file .js?

    Altra cosa: ho scaricato un guestbook (libro degli ospiti) in PHP.
    Esso contiene la cartella IMG, alcuni file .PHP cioè admin,config,form,index,login, e un foglio di stile .css
    Come agire per inserire tale guestbook? Più che mai sui files PHP sono al largo..

    Grazie in anticipo.
    Alessio.


  • User Attivo

    Ciao orthulanu,
    solo una curiosità, il dominio che hai è su aruba?
    Se, si
    le email agli iscritti di libero arrivano?
    Te lo chiedo perchè a me agli iscritti di libero non arrivano mail
    Ciao da danny