PDA

View Full Version : Aiuto form in php


Vespalonga76
31-05-2007, 12:39
Salve a tutti,
spero di riuscire a spiegarmi, vorrei aggiungere al mio script dei contatti delle indicazioni obbligatorie che l utente che mi manda una e-mail deve compilare.

Tipo foto:

http://img112.imageshack.us/img112/311/formla5.th.jpg (http://img112.imageshack.us/my.php?image=formla5.jpg)

Nello script che tutt ora utilizzo ho solamente:

Nome:

e-mail:

Oggetto:

Messaggio:

Io vorrei aggiungere:

Seconda e-mail:

Tel:

Città:

Come da foto...

Chi è cosi gentile da modificare lo script che tutt ora utilizzo in PHP..
Quali sono le stringhe da modificare e quelle da inserire??

<?php

$receiverMail = "info@vespaclubnuoro.it";
$nome = trim(strip_tags(stripslashes($_POST['nick'])));
$mail = trim(strip_tags(stripslashes($_POST['mail'])));
$subject = trim(strip_tags($_POST['oggetto']));
$msg = trim(strip_tags($_POST['messaggio']));

//$ip = getenv("REMOTE_ADDR");
$msgformat = "Nome: $nome\n";
$msgformat.= "Email: $mail\n\n";
$msgformat.= "Messaggio:\n\t$msg";

// VALIDATION
if(empty($nome) || empty($mail) || empty($subject) || empty($msg))
{
header("Refresh: 2; URL=http://www.vespaclubnuoro.it/html/contatti.html");
echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>Perfavore riempi tutti i campi obbligatori</p>";
echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
}
elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $mail))
{
header("Refresh: 2; URL=http://www.vespaclubnuoro.it/html/contatti.html");
echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>L'indirizzo mail e' invalido</p>";
echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
}
else
{
mail($receiverMail, $subject, $msgformat, "From: $nome <$email>");
header("Refresh: 2; URL=http://www.vespaclubnuoro.it/html/contatti.html");
echo "<h3>Il modulo di richiesta e' stato inoltratto!</h3><p>Verrete ricontattati il prima possibile.</p>";

yorkeiser
31-05-2007, 14:26
Il codice che hai postato non è quello relativo alla grafica del form, semmai al retrieve dei valori inseriti.

Per modificare graficamente il form devi andare a vedere il codice HTML che c'è sotto (fai una ricerca per parole chiave nel codice) e aggiungere dei campi simili a quelli che trovi, cambiando gli ID con quelli da te desiderati. Dopo che hai modificato il form, per modificare invece la logica, che è la parte che hai postato, ti basta inserire delle righe similari a quelle da te postate. Ad esempio, se inserisci un nuovo campo chiamato email2, nella parte php aggiungerai

$mail2 = trim(strip_tags(stripslashes($_POST['email2'])));

Vespalonga76
31-05-2007, 17:27
Ti ringrazio per aver risposto,
sapevo benissimo che per modificare come da foto, dovevo maneggiare sul codice html e quello l ho gia fatto ottendendo quanto volevo..
Il problema sorge nel sistema php quello postato in alto..
Anche mettendo le stringhe simili a quelle esistenti non funge, e poi non mi fa vedere quello aggiunto tipo e-mail2 città tel..
mi incasina priprio la posta..
dove sbaglio??

yorkeiser
31-05-2007, 17:36
Uhm, dovresti essere un po' più specifico... in che senso non funge? Prova a postare la parte HTML in cui definisci il form e il codice php dopo le modifiche che hai apportato

Vespalonga76
31-05-2007, 18:02
Il sito dove ho inserito il form nuovo è il seguente, l ho fatto qui giusto per provare..

http://www.sardegnaadventures.com/html/contatti.html

L html è apposto..
Compilando i nuovicambi, l e-mail arriva alla posta regolarmente, ma le nuove voci sono inesistenti..

Ho fatto nuove prove, nel copiare le stringhe gia esistenti, ma non è cambiato nulla..

<?php

$receiverMail = "vespalonga@virgilio.it";
$nome = trim(strip_tags(stripslashes($_POST['nick'])));
$mail = trim(strip_tags(stripslashes($_POST['mail'])));
$mail2 = trim(strip_tags(stripslashes($_POST['email2'])));
$subject = trim(strip_tags($_POST['oggetto']));
$msg = trim(strip_tags($_POST['messaggio']));

//$ip = getenv("REMOTE_ADDR");
$msgformat = "Nome: $nome\n";
$msgformat = "Città: $citta\n";
$msgformat.= "Email: $mail\n\n";
$msgformat.= "Messaggio:\n\t$msg";

// VALIDATION
if(empty($nome) || empty($mail) || empty($subject) || empty($msg))
{
header("Refresh: 2; URL=http://www.sardegnaadventures.com/html/contatti.html");
echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>Perfavore riempi tutti i campi obbligatori</p>";
echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
}
elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $mail))
{
header("Refresh: 2; URL=http://www.sardegnaadventures.com/html/contatti.html");
echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>L'indirizzo mail e' invalido</p>";
echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
}
else
{
mail($receiverMail, $subject, $msgformat, "From: $nome <$email>");
header("Refresh: 2; URL=http://www.sardegnaadventures.com/html/contatti.html");
echo "<h3>Il modulo di richiesta e' stato inoltratto!</h3><p>Verrete ricontattati il prima possibile.</p>";
}
?>


Questa è la foto dell e-mail ricevuta..

http://img164.imageshack.us/img164/6816/formzb2.th.jpg (http://img164.imageshack.us/my.php?image=formzb2.jpg)

yorkeiser
01-06-2007, 09:06
Il problema è nella parte HTML: hai sì inserito i nuovi campi, ma con l'identificativo sbagliato (mail): te li segno in rosso nel codice

td><p class="testo">Nome:</p></td>
<td><p class="testo"><input class="testo" type="text" name="nick" size="45"></input></p></td>

</tr>
<tr>
<td><p class="testo">Città:</p></td>
<td><p class="testo"><input class="testo" type="text" name="mail" size="45"></input></p></td>
</tr>
<tr>
<td><p class="testo">Telefono:</p></td>
<td><p class="testo"><input class="testo" type="text" name="mail" size="45"></input></p></td>

</tr>
<tr>
<td><p class="testo">E-Mail:</p></td>
<td><p class="testo"><input class="testo" type="text" name="mail" size="45"></input></p></td>
</tr>
<tr>
<td><p class="testo">Seconda E-Mail:</p></td>
<td><p class="testo"><input class="testo" type="text" name="mail" size="45"></input></p></td>
</tr>

<tr>
<td><p class="testo">Oggetto:</p></td>
<td><p class="testo"><input class="testo" type="text" name="oggetto" size="45"></input></p></td>
</tr>
<tr>
<td><p class="testo">Messaggio:</td>
<td><textarea class="testo" name="messaggio" cols="35" rows="7"></textarea></td>

</tr>

Ovvero: il form sta passando con ID = mail vari campi, mentre non ci sono campi chiamati città, telefono e email2: per cui, quando fai il retrieve di tali dati da php, ovviamente non te li ritrovi. Ti basta sostituire le parti in rosso con i loro veri nomi e ovviamente aggiungerli tutti nel retrieve dei dati lato php

Vespalonga76
01-06-2007, 11:30
PER: yorkeiser

Ti ringrazio tantissimo per la disponibilità e per l aiuto che mi hai dato..
Ho cambiato le stringhe nell html, rendendomi conto della cazzata che ho commesso, non mi sono proprio reso conto che nel copiare le stringhe pronte dovevo sostituire anche i nomi..

Poi oltre l html, ho modificato il codice php..
Le sole stringhe da inserire e modificare sono quelle riportate di rosso nel codice qui sotto, non si sa mai possa servire a qualcuno..

Ti ringrazio nuovamente..
Ciao ciao Vespalonga!!



<?php

//$ip = getenv("REMOTE_ADDR");
$msgformat = "Nome: $nome\n";
$msgformat.= "Città: $città\n";
$msgformat.= "Telefono: $telefono\n";
$msgformat.= "Oggetto: $subject\n";
$msgformat.= "Email: $mail\n";
$msgformat.= "Email2: $mail2\n\n";
$msgformat.= "Messaggio:\n\t$msg";