Devo realizzare un form che vi invii dei dati su un email

  • Creatore Discussione Creatore Discussione malossa
  • Data di inizio Data di inizio

malossa

Nuovo Utente
28 Gen 2010
4
0
0
Salve a tutti. Sto diventando pazzo, sono giorni che cerco su internet qualcosa che mi potrebbe interessare...ma quello che trovo per una cosa o per l'altra non mi soddisfa completamente...ora mi affido a voi..sperando di riuscire finalmente a risolvere il mio problemino. Grazie in anticipo

in pratica mi servirebbe un form carino e serio (da inserire in un sito) che mi invii dei dati sulla mia email.

E' un form che deve far iscrivere a dei giochi che vorrei organizzare in futuro.
Io ho pensato di mettere nella pagina del sito un pulsante ISCRIZIONE collegata alla pagina dove si trova il form iscrizione.

i campi sono Nome,Cognome,Città,Telefono,Email,Torneo (la voce torneo dovrà avere un menù elenco 1000,1001,1002) e Messaggio,

I campi, tranne il testo, sono tutti obbligatori.

Non appeva l'utente ha cliccato su iscrizione e tutto è andato bene, far comparire il messaggio LA TUA ISCRIZIONE E' STATA INVIATA e subito dopo la pagina si deve chiudere e a me mi dovrebbe arrivare in email Nome,cognome,ecc ecc.

Mi ringrazio veramente di cuore ma io non so come risolvere.
 
prima di tutto devi creare il form e poi devi avere anche un file che riceva i dati inseriti dall'utente nel form e li invii al tuo indirzzo email. suppongo che il tuo spazio web supporti il linguaggio php visto che hai postato in questa sezione. fammi sapere se vuoi il mio aiuto così ti spiego tutto
 
Certo che ho bisogno...ho bisognissimo ;)

Ho trovato questi servizi automatici:Jotform, Freevo ma non credo facciano al caso mio..anche perchè penso richiamino script che si trovano nei loro server.

si, utilizerò php.
 
ok allora ti scrivo i codici:
allora questo è il codice della pagina in cui si trova il form

PHP:
<html>
<head>
  
  <title>Titolo Pagina</title>
</head>
<body>
<form method="post" action="inviadati.php">
  <table style="text-align: left; width: 20%;" border="0"
 cellpadding="2" cellspacing="2">
    <tbody>
      <tr>
        <td>Nome</td>
        <td><input name="nome"></td>
      </tr>
      <tr>
        <td>Cognome</td>
        <td><input name="cognome"></td>
      </tr>
      <tr>
        <td>Citt&agrave;</td>
        <td><input name="citta"></td>
      </tr>
      <tr>
        <td>Telefono</td>
        <td><input name="telefono"></td>
      </tr>
      <tr>
        <td>E-mail</td>
        <td><input name="email"></td>
      </tr>
      <tr>
        <td>Torneo</td>
        <td>
        <select size="1" name="torneo">
        <option>1000</option>
        <option>1001</option>
        <option>1002</option>
        </select>
        </td>
      </tr>
      <tr>
        <td>Messaggio</td>
        <td><textarea cols="15" rows="3"
 name="messaggio"></textarea></td>
      </tr>
      <tr>
        <td style="text-align: center;" colspan="2"
 rowspan="1"><input name="Submit" value="Invia"
 type="submit">
        </td>
      </tr>
    </tbody>
  </table>
  <br>
</form>
</body>
</html>

poi modificherai tu la pagina x quanto riguarda titolo, grafica ecc

mentre questo è il file inviadati.php che riceve i dati inseriti nel form e li manda al tuo indirizzo email:

PHP:
<?php

// Creo il redirect
echo '<meta http-equiv="refresh" content="8;url=pagina a cui tornare dopo aver inviato il form">';

  

// Recupero il valore dei campi del form

$destinatario = "qui metti il tuo indirizzo email a cui arriveranno i dati";
$mittente = $_POST['email'];
$oggetto = $_POST['oggetto'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$citta = $_POST['citta'];
$telefono = $_POST['telefono'];
$email = $_POST['email'];
$torneo = $_POST['torneo'];
$messaggio = $_POST['messaggio'];

// Creo 2 variabili che riempirò più avanti...
$headers = "From: " . $mittente;
$msg = "";

// Questa è la parte "testuale" del messaggio
  $msg .= $nome . "\n\n";
  $msg .= $cognome . "\n\n";
  $msg .= $citta . "\n\n";
  $msg .= $telefono . "\n\n";
  $msg .= $email . "\n\n";
  $msg .= $torneo . "\n\n";
  $msg .= $messaggio . "\n\n";

// Invio la mail
if (mail($destinatario, $oggetto, $msg, $headers))
{
  echo "Mail inviata";
}else{
  echo "Errore";
}
?>

ho provato tutto e funziona bene, ricordati che la pagina con il form e il file inviadati.php devono essere nella stessa cartella
 
grazie.

Ho provato le due pagine e funzionano ma ancora non sono complete.

1) sarebbe buono se i capi fossero obbligatori (tranne il testo e il telefono)
e che quindi in caso di compilazione incompleta uscisse fuori un messaggio del tipo: i campi nome e cognome..esempio..sono incompleti o qualcosa del genere.

2) nell'email che mi arriva mancano i titoli: Nome: , Cognome: ; ecc ecc
 
I titoli non credo si possano aggiungere ma comunque sono in ordine di compilazione quindi al primo posto avrai sempre il nome, al secondo il cognome ecc.

modifica il file inviadati.php così e prova se funziona:

PHP:
<?php

// Creo il redirect
echo '<meta http-equiv="refresh" content="8;url=pagina a cui tornare dopo aver inviato il form">';

  

// Recupero il valore dei campi del form

$destinatario = "qui metti il tuo indirizzo email a cui arriveranno i dati";
$mittente = $_POST['email'];
$oggetto = $_POST['oggetto'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$citta = $_POST['citta'];
$telefono = $_POST['telefono'];
$email = $_POST['email'];
$torneo = $_POST['torneo'];
$messaggio = $_POST['messaggio'];

// Creo 2 variabili che riempirò più avanti...
$headers = "From: " . $mittente;
$msg = "";

// Questa è la parte "testuale" del messaggio
  $msg .= $nome . "\n\n";
  $msg .= $cognome . "\n\n";
  $msg .= $citta . "\n\n";
  $msg .= $telefono . "\n\n";
  $msg .= $email . "\n\n";
  $msg .= $torneo . "\n\n";
  $msg .= $messaggio . "\n\n";

//controllo che i campi siano stati compilati
if($nome==""){

    echo "Inserisci il nome";

}elseif($cognome==""){

    echo "Inserisci il cognome";

}elseif($citta==""){

    echo "Inserisci la città";

}elseif($email==""){

    echo "Inserisci l'indirizzo e-mail";

// Invio la mail
if (mail($destinatario, $oggetto, $msg, $headers))
{
  echo "Mail inviata";
}else{
  echo "Errore";
}
?>
 
Parse error: syntax error, unexpected $end in /home/mhd-01/www.titoloesempio.com/htdocs/modulo/inviadati.php on line 58
 
prova così

PHP:
<?php

// Creo il redirect
echo '<meta http-equiv="refresh" content="8;url=pagina a cui tornare dopo aver inviato il form">';

  

// Recupero il valore dei campi del form

$destinatario = "qui metti il tuo indirizzo email a cui arriveranno i dati";
$mittente = $_POST['email'];
$oggetto = $_POST['oggetto'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$citta = $_POST['citta'];
$telefono = $_POST['telefono'];
$email = $_POST['email'];
$torneo = $_POST['torneo'];
$messaggio = $_POST['messaggio'];

// Creo 2 variabili che riempirò più avanti...
$headers = "From: " . $mittente;
$msg = "";

// Questa è la parte "testuale" del messaggio
  $msg .= $nome . "\n\n";
  $msg .= $cognome . "\n\n";
  $msg .= $citta . "\n\n";
  $msg .= $telefono . "\n\n";
  $msg .= $email . "\n\n";
  $msg .= $torneo . "\n\n";
  $msg .= $messaggio . "\n\n";

//controllo che i campi siano stati compilati
if($nome==""){

    echo "Inserisci il nome";

}elseif($cognome==""){

    echo "Inserisci il cognome";

}elseif($citta==""){

    echo "Inserisci la città";

}elseif($email==""){

    echo "Inserisci l'indirizzo e-mail";

// Invio la mail
}elseif (mail($destinatario, $oggetto, $msg, $headers))
{
  echo "Mail inviata";
}else{
  echo "Errore";
}
?>
 
Ecco, dopo un po' di lavoro, il tuo script. Testato e funzionante. Per configurarlo modifica le prime righe, dove è definita la tua e-mail e i tornei disponibili (questi ultimi da modificare solo se li modifichi, ho già aggiunto io quelli che hai detto). Et voilà:
PHP:
<?php
// compila con la tua e-mail
$your_email = 'admin@localhost';
// inserisci i tornei disponibili
$challenges = array('1000', '1001', '1002');

function show_errors()
{
	global $errors;

	echo <<<EOF
<html>
	<head>
		<title>Errore iscrizione</title>
	</head>
	<body>
		<h1>Errore</h1>
		<p>Si sono verificati degli errori:</p>

		<ul>
		
EOF;

	foreach($errors as $err)
		echo "\t\t<li>{$err}</li>\n";

	echo <<<EOF
		</ul>
		<p><a href="{$_SERVER['PHP_SELF']}">Torna indietro</a></p>
	</body>
</html>
EOF;

	exit();
}

if(isset($_POST['submit']))
{
	$name      = isset($_POST['name'])      ? trim($_POST['name'])      : '';
	$surname   = isset($_POST['surname'])   ? trim($_POST['surname'])   : '';
	$city      = isset($_POST['city'])      ? trim($_POST['city'])      : '';
	$telephone = isset($_POST['telephone']) ? trim($_POST['telephone']) : '';
	$email     = isset($_POST['email'])     ? trim($_POST['email'])     : '';
	$challenge = isset($_POST['challenge']) ? trim($_POST['challenge']) : '';
	$message   = isset($_POST['message'])   ? trim($_POST['message'])   : '';

	$errors = array();

	if($name == '')
		$errors[] = 'Non hai inserito il tuo nome.';
	if($surname == '')
		$errors[] = 'Non hai inserito il tuo cognome.';
	if($city == '')
		$errors[] = 'Non hai inserito la tua citt&agrave;.';
	if(!is_numeric($telephone))
		$errors[] = 'Il numero di telefono non &egrave; numerico.';
	if(!preg_match('/^[\w][\w\.-]*[\w]@[\w][\w\.-]*[\w]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/', $email))
		$errors[] = 'L\'indirizzo e-mail inserito non &egrave; valido.';
	if(!in_array($challenge, $challenges))
		$errors[] = 'Il torneo inserito non &egrqave; valido.';

	if(count($errors) > 0)
		show_errors();

	$subject = 'Nuova iscrizione';
	$body = "Una nuova iscrizione è stata richiesta inserendo i seguenti dati:\n";
	$body .= "------------------------------------------\n";
	$body .= "Nome: {$name}\n";
	$body .= "Cognome: {$surname}\n";
	$body .= "Città: {$city}\n";
	$body .= "Telefono: {$telephone}\n";
	$body .= "Torneo: {$challenge}\n";
	$body .= "------------------------------------------\n";
	$body .= !empty($message) ? "Messaggio: {$message}\n" : '';
	$body .= !empty($message) ? "------------------------------------------\n" : '';
	$body .= "L'indirizzo IP da cui è stata effettuata la richiesta è {$_SERVER['REMOTE_ADDR']}.";

	ob_start();
	if(!mail($your_email, $subject, $message))
		$errors[] = 'Impossibile inviare il messaggio. Riprova pi&ugrave; tardi.';
	ob_end_clean();
	
	if(count($errors) > 0)
		show_errors();

	echo <<<EOF
<html>
	<head>
		<title>Iscrizione effettuata</title>
	</head>
	<body>
		<h1>Iscrizione effettuata</h1>
		<p>La tua iscrizione al torneo <b>{$challenge}</b> &egrave; stata effettuata con successo.</p>
	</body>
</html>
EOF;
}
else
{
	echo <<<EOF
<html>
	<head>
		<title>Iscrizione</title>
	</head>
	<body>
		<h1>Iscrizione</h1>
		<p>Per effettuare l'iscrizione compila i campi sottostanti.</p>
		<form action="{$_SERVER['PHP_SELF']}" method="post">
			<table 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>Citt&agrave;:</label></td>
					<td><input type="text" name="city" /></td>
				</tr>
				<tr>
					<td><label>Telefono:</label></td>
					<td><input type="text" name="telephone" /></td>
				</tr>
				<tr>
					<td><label>E-mail:</label></td>
					<td><input type="text" name="email" /></td>
				</tr>
				<tr>
					<td><label>Torneo:</label></td>
					<td>
						<select name="challenge">
							<option value="1000">1000</option>
							<option value="1001">1001</option>
							<option value="1002">1002</option>
						</select>
					</td>
				</tr>
				<tr>
					<td><label>Messaggio:</label></td>
					<td><textarea name="message" cols="50" rows="5"></textarea></td>
				</tr>
				<tr>
					<td><input type="submit" name="submit" value="Iscriviti" /></td>
					<td><input type="reset" name="reset" value="Reimposta" /></td>
				</tr>
			</table>
		</form>
	</body>
</html>
EOF;
}
?>
 

Discussioni simili