Aiuto per formmail.php

Rikardinho90

Utente Attivo
16 Mar 2009
50
0
0
Salve, qualcuno potrebbe crearmi la pagina formmail.php che invia i dati e l'allegato inseriti nel form al mio indirizzo email?

Il codice del form è questo:

<form action="formmail.php" method="post" enctype="multipart/form-data">
<input name="destinatario" value="indirizzoemailalqualearrivanoidati" type="hidden">

Link
<input name="Link" value="" type="text"><br>
Email:
<input name="Email" value="" type="text"><br>
<br>
Pagamento:
<select name="Pagamento">
<option>paypal</option>
<option>accredito su postepay</option>
</select>

<br>
<br>
Periodo:

<select name="Periodo">
<option>1 mese </option>
<option>2 mesi </option>
<option>3 mesi </option>
<option>4 mesi </option>
<option>5 mesi </option>
<option>6 mesi </option>
<optgroup label="">
</optgroup>
</select>

<br>
<br>
Allega file:
<input name="attachment" type="file"><br>
</div>
<br>


<input value="Invia" type="submit"></div>


</form>



Grazie!
 
posta anche la pagina formmail.php, perchè l'errore sta lì...
 
Ultima modifica:
ciao
una piccola osservazione, se non capisco male qui inserirai l'indirizzo e-amail del destinatario

HTML:
<input name="destinatario" value="indirizzoemailalqualearrivanoidati" type="hidden">

non ti conviene in quanto l'indirizzo è facilmente leggibile e quindi spam.
l'indirizzo del destinatario conviene metterlo nella parte php
 
sisi il form è quello ke ho postato, se puoi invece di mettere l'indirizzo email della mia casella di posta nella pagina del form (<input name="destinatario" value="indirizzoemailalqualearrivanoidati" type="hidden">) mettilo in quella formmail.php come mi hai suggerito tu. Cmq grazie, molto gentile, aspetto ;)
 
ciao
se hai pazienza te la butto giù
il form esatto è quello che hai postato?

per la tua generosità c'è da farti santo subito:mavieni:, tieni conto però che che lo spirito del forum è quello di fornire strumenti per imparare, non quello di lavorare aggratisss.
Per questo però non ti banno, la generosità va premiata.
 
ciao
per eliox (non più bannatore folle...rinsavito?)
non è solo generosità, ma da circa due mesi non ho un CaZ2O (formula chimica dello zorato di calcio) da fare:dipser:
 
ciao
ecco lo script
a te l'arduo compito poi di sistemerlo con i css (il form è un po' bruttino) e di provarlo (non posso giurare che funzi).
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>form email</title>
</head>

<body>
<?php
/*
fatta pagina unica: form + invio
se fai due pagine questa parte, da <?php a ?>, devi copiarla
nella pagina di invio
*********************************************************************************
comunque leggi anche questo articolo di max bossi
https://www.mrw.it/php/articoli/inviare-email-allegati-usando-php_497.html
da cui ho ricavato lo script per l'invio dell'allegato
*********************************************************************************
*/
if(isset($_POST['invia']) && $_POST['invia']=="invia"){//ho dato il subimt
	$destinatario="mia_email@mio_dominio.com";//indirizzo da sostituire con quello che ti interessa
	/* ***********************************************************************
	recupero i dati testuali dal form e li pulisco da eventuale codice malevolo
	qui dovresti inserire anche le verifiche sulla correttezza dei dati
	e quali dati obbligatori
	?non hai inserito un campo di testo per eventuali commenti?
	?non hai inserito un campo per l'oggetto?
	*************************************************************************** */
	$link=strip_tags(trim($_POST['link']));
	$email=strip_tags(trim($_POST['email']));
	$pagamento=$_POST['pagamento'];
	//riporto il pagamento alla descrizione
	switch($pagamento){
		case "payp":
			$pagamento= "a mezzo paypal";
		break;
		case "payp":
			$pagamento= "con accredito su postepay";
		break;
		default://non è stato selezionato la modalità di pagamento
			$pagamento= "da definire";
		break;
	}//fine switch pagamento
	$periodo=$_POST['periodo'];
	//riporto il periodo alla descrizione
	if($periodo !=""){
		$periodo=str_replace("_"," ",$periodo);//tolgo l'undescore e rimetto lo spazio
	}else{//non è stato selezionato il periodo
		$periodo= "da definire";
	}//fine sistemazione periodo
	$oggetto="richiesta";//se inserisci il campo sostituire con $oggetto=strip_tags(trim($_POST['oggetto']));
	$commenti="";//se inserisci il campo sostituire con $commenti=strip_tags(trim($_POST['commenti']));
	//imposto i dati di testo
	$messaggio="link: ".$link."\n";
	$messaggio.="tipo di pagamento: ".$pagamento."\n";
	$messaggio.="periodo: ".$periodo."\n";
	$messaggio.=$commenti."\n";
	// recupero le variabili relative all'allegato
	$allegato = $_FILES['attachment']['tmp_name'];
	$allegato_type = $_FILES['attachment']['type'];
	$allegato_name = $_FILES['attachment']['name'];
	/*
	qui dovresti inserire la verifica del tipo di allegato e la sua grandezza
	es.: sarebbe opportuno indicare che non sono ammessi file con estenzione .exe
	*/
	//creo 2 variabili che riempirò più avanti...
	$headers = "From: " . $email;
	$msg = "";
	// verifico se il file è stato caricato correttamente via HTTP
	// in caso affermativo proseguo nel lavoro...
	if (is_uploaded_file($allegato)){
  		// apro e leggo il file allegato
		$file = fopen($allegato,'rb');
		$data = fread($file, filesize($allegato));
		fclose($file);
		// adatto il file al formato MIME base64 usando base64_encode
		$data = chunk_split(base64_encode($data));
		// genero il "separatore"
		// serve per dividere, appunto, le varie parti del messaggio.
		// nel nostro caso separerà la parte testuale dall'allegato
		$semi_rand = md5(time());
		$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
		// aggiungo le intestazioni necessarie per l'allegato
		$headers .= "\nMIME-Version: 1.0\n";
		$headers .= "Content-Type: multipart/mixed;\n";
		$headers .= " boundary=\"{$mime_boundary}\"";
		// definisco il tipo di messaggio (MIME/multi-part)
		$msg .= "This is a multi-part message in MIME format.\n\n";
		// metto il separatore
		$msg .= "--{$mime_boundary}\n";
		// questa è la parte "testuale" del messaggio
		$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
		$msg .= "Content-Transfer-Encoding: 7bit\n\n";
		$msg .= $messaggio . "\n\n";
		// metto il separatore
		$msg .= "--{$mime_boundary}\n";
		// aggiungo l'allegato al messaggio
		$msg .= "Content-Disposition: attachment;\n";
		$msg .= " filename=\"{$allegato_name}\"\n";
		$msg .= "Content-Transfer-Encoding: base64\n\n";
		$msg .= $data . "\n\n";
		// chiudo con il separatore
		$msg .= "--{$mime_boundary}--\n";
	}else{//non ho allegato
		$msg = $messaggio;
	}//fine if else allegato
	// invio la mail
	/*
	al posto della funzione mail() puoi utilizzare la classe phpmailer, vedi articolo di claudio
	https://www.mrw.it/php/articoli/inviare-email-classe-phpmailer_631.html
	*/
	if (mail($destinatario, $oggetto, $msg, $headers)){
		echo "<p>Mail inviata con successo!</p>";
	}else{
		echo "<p>Errore ! riprova pi&ugrave; tardi</p>";
	}//fine if else invio
}//fine if submit
?>
<!--
fatta pagina unica, se vuoi fare due pagine al posto di
$_SERVER[] metti il nome della pagina a cui inviare i dati del form
e con cut/paste porta sulla nuova pagina la parte php
-->
<form method="post" enctype="multipart/form-data" action="<?php $_SEVER['PHP_SELF'] ?>">
<!--
tolto campo hidden, l'indirizzo del destinatario lo trovi nella parte php
-->
Link:
<input name="link" value="" type="text"><br>
Email:
<input name="email" value="" type="text"><br>
<br>
<!--
nelle selct devi mettere il valore da trasmettere alla selezione
-->
Pagamento:
<select name="pagamento">
  <option value="payp">paypal</option>
  <option value="acpp">accredito su postepay</option>
</select>
<br><br>
Periodo:
<select name="periodo">
  <option value="1_mese">1 mese</option>
  <option value="2_mesi">2 mesi</option>
  <option value="3_mesi">3 mesi</option>
  <option value="4_mesi">4 mesi</option>
  <option value="5_mesi">5 mesi</option>
  <option value="6_mesi">6 mesi</option>
</select>
<br><br>
Allega file:
<input name="attachment" type="file"><br>
<br>
<!--
sull pulsante submit ci vuole il nome
aggiungi il pulsante di reset, è comodo
-->
<input name="invia" type="submit" value="invia"></div>
</form>
</body>
</html>

credo di aver messo abbastanza commenti perchè tu possa eventualmente modificarlo


p.s.
di più non posso fare se no eliox mi banna:D
 

Discussioni simili