come creare un form con dreamweaver da zero

marcopupi

Nuovo Utente
3 Mag 2010
26
0
0
Salve a tutti
sto creando un sito con photo e dreamweaver , sono ai primissimi passi :)
non riesco a creare un form
la pagina dovrebbe chiamarsi prenotazione-villaggi-vieste-gargano.php
dovrei scrivere :
nome
cognome
richiesta
accetti art. con il pulsantino
invio
e dopo l'invio vorrei che li mandasse in un'altra pag.
aiutatemi ... sto impazzendooo
il sito è www.myvieste.it
ho provato a crearlo ma .. ho avuto diversi problemi.. es. www.myvieste.it/form.php
 
<?php
// specifica la tua email e l'oggetto del messaggio
$your_email = '[email protected]';
$subject = 'richiesta';

// funzione per la visualizzazione degli errori
function show_error($errtxt)
{
// creo la query per la pagina
$query = array('err' => $errtxt);
$query = http_build_query($query);

// reindirizzo alla pagina
header("Location: form.php?{$query}");

// interrompo lo script
exit();
}

// se il form è stato inviato
if(isset($_POST['submit']))
{
// recupero i dati inviati
$name = isset($_POST['name']) ? trim($_POST['name']) : '';
$surname = isset($_POST['surname']) ? trim($_POST['surname']) : '';
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
$message = isset($_POST['message']) ? trim($_POST['message']) : '';
$privacy = isset($_POST['privacy']) ? $_POST['privacy'] : 0;

// controlla che i campi non siano vuoti
if($name == '')
show_error('Non hai inserito il tuo nome.');
if($surname == '')
show_error('Non hai inserito il tuo cognome.');
if(!preg_match('/^([\w\-\+\.]+)@([\w\-\+\.]+).([\w\-\+\.]+)$/', $email))
show_error('L\'e-mail che hai fornito non &egrave; valida.');
if($message == '')
show_error('Non hai inserito il tuo messaggio.');
if(!$privacy)
show_error('Non hai dato il consenso al trattamento dei dati.');

// crea il messaggio da inviare
$msgtxt = "Un nuovo messaggio ti è stato inviato da un utente.\n";
$msgtxt = "L'utente ha fornito queste informazioni:\n";
$msgtxt = "---------------------------------------------------\n";
$msgtxt = "Nome: {$name}\n";
$msgtxt = "Cognome: {$surname}\n";
$msgtxt = "E-mail: {$email}\n";
$msgtxt = "---------------------------------------------------\n";
$msgtxt = "{$message}\n";
$msgtxt = "---------------------------------------------------\n";
$msgtxt = "L'indirizzo IP dell'utente è {$_SERVER['REMOTE_ADDR']}.";

// tenta di inviare il messaggio
if(!mail($your_email, $subject, $msgtxt))
show_error('Impossibile inviare il messaggio. Riprova pi&ugrave; tardi.');

// visualizza il messaggio di avvenuto invio
header('Location: form.php?sent=true');
}
// altrimenti
{
// reindirizza al file del form
show_error('Non hai inviato i dati. Ritenta.');
}
?>



mi da sempre errore di invio..
grazie per l'interessamento
 
<?php
// specifica la tua email e l'oggetto del messaggio
$your_email = '[email protected]';
$subject = 'Nuovo messaggio';

// funzione per la visualizzazione degli errori
function show_error($errtxt)
{
// creo la query per la pagina
$query = array('err' => $errtxt);
$query = http_build_query($query);

// reindirizzo alla pagina
header("Location: form.php?{$query}");

// interrompo lo script
exit();
}

// se il form è stato inviato
if(isset($_POST['submit']))
{
// recupero i dati inviati
$name = isset($_POST['name']) ? trim($_POST['name']) : '';
$surname = isset($_POST['surname']) ? trim($_POST['surname']) : '';
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
$message = isset($_POST['message']) ? trim($_POST['message']) : '';
$privacy = isset($_POST['privacy']) ? $_POST['privacy'] : 0;

// controlla che i campi non siano vuoti
if($name == '')
show_error('Non hai inserito il tuo nome.');
if($surname == '')
show_error('Non hai inserito il tuo cognome.');
if(!preg_match('/^([\w\-\+\.]+)@([\w\-\+\.]+).([\w\-\+\.]+)$/', $email))
show_error('L\'e-mail che hai fornito non &egrave; valida.');
if($message == '')
show_error('Non hai inserito il tuo messaggio.');
if(!$privacy)
show_error('Non hai dato il consenso al trattamento dei dati.');

// crea il messaggio da inviare
$msgtxt = "Un nuovo messaggio ti è stato inviato da un utente.\n";
$msgtxt = "L'utente ha fornito queste informazioni:\n";
$msgtxt = "---------------------------------------------------\n";
$msgtxt = "Nome: {$name}\n";
$msgtxt = "Cognome: {$surname}\n";
$msgtxt = "E-mail: {$email}\n";
$msgtxt = "---------------------------------------------------\n";
$msgtxt = "{$message}\n";
$msgtxt = "---------------------------------------------------\n";
$msgtxt = "L'indirizzo IP dell'utente è {$_SERVER['REMOTE_ADDR']}.";

// tenta di inviare il messaggio
if(!mail($your_email, $subject, $msgtxt))
show_error('Impossibile inviare il messaggio. Riprova pi&ugrave; tardi.');

// visualizza il messaggio di avvenuto invio
header('Location: form.php?sent=true');
}
// altrimenti
{
// reindirizza al file del form
show_error('Non hai inviato i dati. Ritenta.');
}
?>
 
ciao
prova in questo modo

PHP:
<?php
//tutto quello che c'è sopra.......
// controlla che i campi non siano vuoti 
$errore="";//metto il messaggio di errore a vuoto
if($name == ''){
	$errore="Non hai inserito il tuo nome.<br>";
}
if($surname == ''){
	$errore.="Non hai inserito il tuo cognome.<br>";
}
if(!preg_match('/^([\w\-\+\.]+)@([\w\-\+\.]+).([\w\-\+\.]+)$/', $email))}
	$errore.="L'e-mail che hai fornito non &egrave; valida..<br>"; 
}
if($message == ''){
	$errore.="Non hai inserito il tuo messaggio.<br>";
}
if(!$privacy) 
	$errore.="Non hai dato il consenso al trattamento dei dati.<br>"; 
}
if($errore==""){//non sono stati commessi errori
	// crea il messaggio da inviare .......
 	
	// tenta di inviare il messaggio 
	if(!mail($your_email, $subject, $msgtxt)){//messaggio non inviato
		show_error('Impossibile inviare il messaggio. Riprova pi&ugrave; tardi.');
		//io utilizzo questo al posto di header
		echo "<meta http-equiv='Refresh' content='3; URL=form.php'>"; // ... ritorna a form dopo 3 secondi
	}else{//messaggio inviato
		// visualizza il messaggio di avvenuto invio 
		show_error("Grazie per averci contattato, risponderemo quanto prima");
		echo "<meta http-equiv='Refresh' content='3; URL=form.php?sent=true'>"; // ... ritorna a form o dove vuoi
	} 
}else{ // è stato commesso almeno un errore 
	// reindirizza al file del form 
	show_error($errore); 
	echo "<meta http-equiv='Refresh' content='3; URL=form.php'>";
}//fine if-else errori
} //fine if submit
?>

al posto di preg_match usa filter_var
guarda questo link
http://blog.mrwebmaster.it/2010/03/21/validare-email-php5.html
filter_var ti serve poi per validare anche altri tipi di campi

p.s.
guarda che le {} fanno parte del mio stile di programmazione, se non ti piacciono dove non servono puoi toglierle
 
comincio a pensare che nn sono portato per queste cose :)
appena la invio mi dice:
Parse error: syntax error, unexpected '}' in D:\Inetpub\webs\myviesteit\send.php on line 11
questo è il mio form:
( la pagina è : www.myvieste.it/prenotazione-villaggi-vieste-gargano.php )
<form action="send.php" method="post">
<table align="center" cellspacing="10">
<tr>
<td><label>Nome:</label></td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td><label>Cognome:</label></td>
<td><input type="text" name="surname" /></td>
</tr>
<tr>
<td><label>E-mail:</label></td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td><label>Messaggio:</label></td>
<td><textarea name="message" cols="50" rows="5"></textarea></td>
</tr>
<tr>
<td><label>Privacy:</label></td>
<td>
<input type="radio" name="privacy" value="1" />
Consento il trattamento dei dati</td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Invia" /></td>
<td><input type="reset" name="reset" value="Resetta" /></td>
</tr>
</table>
</form>
questa è la send.php
<?php
//tutto quello che c'è sopra.......
// controlla che i campi non siano vuoti
$errore="";//metto il messaggio di errore a vuoto
if($name == ''){
$errore="Non hai inserito il tuo nome.<br>";
}
if($surname == ''){
$errore.="Non hai inserito il tuo cognome.<br>";
}
if(!preg_match('/^([\w\-\+\.]+)@([\w\-\+\.]+).([\w\-\+\.]+)$/', $email))}
$errore.="L'e-mail che hai fornito non &egrave; valida..<br>";
}
if($message == ''){
$errore.="Non hai inserito il tuo messaggio.<br>";
}
if(!$privacy)
$errore.="Non hai dato il consenso al trattamento dei dati.<br>";
}
if($errore==""){//non sono stati commessi errori
// crea il messaggio da inviare .......

// tenta di inviare il messaggio
if(!mail($your_email, $subject, $msgtxt)){//messaggio non inviato
show_error('Impossibile inviare il messaggio. Riprova pi&ugrave; tardi.');
//io utilizzo questo al posto di header
echo "<meta http-equiv='Refresh' content='3; URL=form.php'>"; // ... ritorna a form dopo 3 secondi
}else{//messaggio inviato
// visualizza il messaggio di avvenuto invio
show_error("Grazie per averci contattato, risponderemo quanto prima");
echo "<meta http-equiv='Refresh' content='3; URL=form.php?sent=true'>"; // ... ritorna a form o dove vuoi
}
}else{ // è stato commesso almeno un errore
// reindirizza al file del form
show_error($errore);
echo "<meta http-equiv='Refresh' content='3; URL=form.php'>";
}//fine if-else errori
} //fine if submit
?>
 
ciao
scusa, ma se hai usato quello che ti ho mandato e l'hai scritto pari pari col copia/incolla per forza non funzia.
con
//tutto quello che c'è sopra.......
devi scriverci quella parte sopra del tuo script
con
// crea il messaggio da inviare .......
li devi scrivere la formazione del testo da inviare come hai scritto tu

ho messo così per non far diventare quello che scrivevo troppo lungo
per esempio ti d error di una } chiusa in quanto, nel mio script manca la parte

if(isset($_POST['submit']))
{

analogamente ti darà errore quando richiimi la funzione show_error() in quanto io non l'ho scritta
cioè, io ti avevo dato una traccia, a te il completamento
 
forse nn mi sono spiegato bene :) io sono abbastanza ignorante in materia.. il send.php e il form.php l'ho copiato da un sito e incollato ( modificato la mail e basta.. quindi nn so cosa è giusto o sbagliato... non hai 5 minuti da dedicarmi per scrivere in modo corretto tutto :) non è che nn ho voglia di imparare anzi... ma ho un pochino di fretta... poi se mi dici dove andare a studiare.. ;) lo farò volentieri..
io vorrei che quando inviano il messaggio si aprisse un'altra pag. es. messaggio-inviato.html con scritto un messaggio
per ora ti ringrazio..
ps. se passi dalle parti di varese ti offro una pizza :) al ristorante pizzeria impero :)
grazie ancora
 
ciao
in giornata guardo e se faccio in tempo ti mando lo script corretto.

ps. se passi dalle parti di varese ti offro una pizza...
più che la pizza sono in caccia di foto del territorio italiano per il mio sito dedicato all'italia, se ti soddisfo mandamele:)
 
ciao
ecco il form nello zip allegato (dovrebbe funziare).
l’ho chiamato form_MarcoPupi.php, se gli cambi nome attento devi modificare il nome alle righe n° 79 83 e 88 (o vicine).
inoltre devi mettere il tuo indirizzo email alla riga n° 54 (o vicina).
comunque vedi dove sono perche ci sono i commenti

se non funzia fammi sapere indicandomi l’errore e a quale riga
 
sei un grande :) grazie di cuore..
l'ultima domanda..
ma perchè quando mi arriva la mail il mittente è : [email protected]??? e non [email protected]


scrivimi la mail .. almeno ti spedisco le foto.. ;)
oppure mandami una mail su : [email protected]
grazie ancora
cmq oltre le foto se vuoi una pizza o un piatto di spaghetti allo scoglio non c'è problema
anzi :)
ciaooo
buona giornata
ps . se vuoi sapere qualcosa sulla cucina o sulle pizze.. chiedi pure .. su questo sono un genio io :)
 
mi spiego meglio
con il programma che usavo prima .. quando mi arrivava una richiesta
il mittente era : [email protected]
ora è [email protected]
non capisco il motivo.. tutto qui.. cmq funziona perfettamente.. ma la send nn serve più?
ora ti mando le foto..
ciao e grazie ancora...
già che ci sono ti faccio l'ultima domanda.. come mai mi carica a pezzettini il sito?? sbaglio qualcosa??
grazie ancora.. ciaoo
 
ciao
ma la send nn serve più?
no ho fatto tutto in una pagina, per un invio del genere è meglio.
domani guardo per il [email protected] non è detto che non abbiafatto qualche errori di dimenticanza

come mai mi carica a pezzettini il sito??
parli del caricamento sul server remoto?

se vuoi sapere qualcosa sulla cucina o sulle pizze.. chiedi pure .. su questo sono un genio io
quando passo, se passo, non mancherò di verificare
 
Il mio consiglio è di dare un po' più di sicurezza a quel form, ora come ora non ne ha e non può bloccare gli spammer, il mio semplice consiglio è di fare quaslche piccola modifica che non fermerà certo gli spammer ma ti farà dormire qualche notte tranquilla in più.
Per esempio dove tu scrivi:
PHP:
// se il form è stato inviato
if(isset($_POST['submit']))
{
// recupero i dati inviati
$name = isset($_POST['name']) ? trim($_POST['name']) : '';
$surname = isset($_POST['surname']) ? trim($_POST['surname']) : '';
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
$message = isset($_POST['message']) ? trim($_POST['message']) : '';
$privacy = isset($_POST['privacy']) ? $_POST['privacy'] : 0;



Io farei diversamente e cioè:
PHP:
// se il form è stato inviato
if(isset($_POST['submit']))
{
// recupero i dati inviati
$name = isset($_POST['name']) ? strip_tags($_POST['name']) : '';
$surname = isset($_POST['surname']) ? strip_tags($_POST['surname']) : '';
$email = isset($_POST['email']) ? strip_tags($_POST['email']) : '';
$message = isset($_POST['message']) ? strip_tags($_POST['message']) : '';
$privacy = isset($_POST['privacy']) ? $_POST['privacy'] : 0;
Ovvero in luogo di trim() che elimina solo alcuni caratteri di tabulazione e gli spazi vuoti, userei strip_tags() che come dice il nome elimina tutti i tag php e html dalla stringa.
E' più sicura in quanto evita che qualcuno usi il tuo form per inviare pericolosi script.
Non usarei nemmeno questo tipo di notazione ma avendo a disposizine il PHP5.2 userei i filtri sicuramente più sicuri per la pulizia del codice dannoso, ma anche così va già meglio di prima.
Altra cosa è il controllo degli indirizzi email, non basta controllare che l'indirizzo sia valido, ma che sia anche unico; uno dei trucchi più usati per sfruttare form come il tuo e inviare email a raffica a spese tue è quello di inviare da lì una stringa piena di indirizzi email separati uno dall'altro da una virgola.
Questo è perfettamente valido, chissà quante volte l'hai fatto anche tu per girare email ai tuoi amici :) ma è anche estremamente pericoloso in un form.
Il modo per evitatre che sfruttino il tuo form è quello di verificare che dopo l'indirizzo email non ci sia una virgola e ovviamente eliminare questa e tutto ciò che segue, usando solo il primo indirizzo valido per l'invio.
Un altro consiglio che mi sento di darti riguarda solo l'accessibilità del form, butta alle ortiche il tasto reset, non serve a nulla, se mi baglio a scrivere un campo lo correggo non cancello l'intero form, specie se ho digitato mezz'ora e mi accorgo di dover modificarne solo una parte.
Invece quel tasto è pericoloso perché se uno si sbaglia a cliccare... le conseguenze le immagini vero? :incazz:
 
Ciao
Perche dici che l’indirizzo è errato?

Questo e prima dell’invio
form_marco.jpg


E questo quanto arriva

oggetto:messaggio da borgo

L'utente ha fornito queste informazioni:
---------------------------------------------------
Nome: borgo
Cognome: italia
E-mail: [email protected]
---------------------------------------------------
nel nezzo di camin di nostra vita
mi ritrovai per una selva oscura
che la diritta via era smarrita
---------------------------------------------------
Inviato il 07.05.2010 ore 07:25:36
da indirizzo IP dell'utente 127.0.0.1

poi marcogarzia ha ragione per lo strip_tag, lo metto e ti riinvio, visto che ci sono vedo di aggiungerti un piccolo antispam.
 
Ultima modifica:
ciao
et voila!
ricarica la pagina e la cartella coi numeri (per l'antispam).
pagina e cartella devono essere assieme.
ricordati di correggere il tuo indirizzo email
 
non lo riesco a inviare
mi dice :
Your message

To: [email protected]
Subject:

did not reach the following recipient(s):

[email protected] on Fri, 7 May 2010 13:58:31 +0200
This message is larger than the current system limit or the recipient's mailbox is full. Create a shorter message body or remove attachments and try sending it again.
<FBCMCL01B02.fbc.local #5.2.3>
 
ciao
cosa non riesci ad inviare?
il form che ti ho mandato non invia a me ma alla tua email
o forse parli di qualcosa che volevi inviarmi?
 

Discussioni simili