Invio email

  • Creatore Discussione Creatore Discussione Z0MB13
  • Data di inizio Data di inizio

Z0MB13

Utente Attivo
30 Mar 2013
34
0
0
Salve, vorrei far inviare l'email di conferma ma non saprei come fare.
Mi potreste aiutare voi? Ecco il codice:

PHP:
<?php 

		if(!isset($_GET['passkey'])){
		
			if(!isset($_POST['invia'])){ ?>
			
				<form method="post" action="#" id="formregistrazione">
					
					<ul>
						<li><label for="username">Username</label>
							<input type="text" name="username" id="username" />
						</li>
						<li>
							<label for="password1">Password</label>
							<input type="password" name="password1" id="password1" />
						</li>
						<li>
							<label for="password2">Ripeti Password</label>
							<input type="password" name="password2" id="password2" />
						</li>
						<li>
							<label for="email">Email</label>
							<input type="text" name="email" id="email" />
						</li>
					</ul>
						<input type="submit" name="invia" id="registrati" value="Registrati" />
				</form>
			
	<?php	} else {
				
				// creazione di un codice di conferma
				$codiceconferma = md5(uniqid(rand()));
				
				// Valori del form
				
				$username = mysql_real_escape_string($_POST['username']);
				$password1 = mysql_real_escape_string($_POST['password1']);
				$password2 = mysql_real_escape_string($_POST['password2']);
				$email = mysql_real_escape_string($_POST['email']);
			
				// controllo campi vuoti e password
				
				if($username == "" || $email == ""){
					echo "Devi riempire tutti i campi";
				}elseif($password1 == "" || $password2 == ""){
					echo "Devi riempire tutti i campi";
				}elseif($password2 != $password1){
					echo "Le password devono coincidere";
				}else{
					
					$recuperauseremail = mysql_query("SELECT id FROM utenti WHERE username='$username' OR email='$email'");	
					$contausermail = mysql_num_rows($recuperauseremail);
					
					if($contausermail > 0){
					
						echo "Nome utente o email già disponibili";
					
					} else {
					
						// Invia dati alla tb utenti_temp
						
						$inviautentitemp = mysql_query("INSERT INTO utenti_temp (codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password2', '$email')");
						
						if($inviautentitemp){
							
							$to=$email;
							$subject="Conferma la Registrazione";
							$header="Da: Amministratore";
							$message="Ecco il tuo codice di attivazione \r\n";
							$message.="Clicca sul link per confermare la registrazione \r\n";
							$message.="http://127.0.0.1/sito/register.php?passkey=$codiceconferma";
							
							$sentmail=mail($to,$subject,$message,$header);
						
						}
						
						if($sentmail){
						
							echo "Per completare la registrazione controlla la tua casella di posta elettronica e clicca sul link di attivazione.";
							
						}else{
						
							echo "Errore, link di attivazione non inviato.";
						
						}
					
					}
				}
				
			}
		
		} else {
			
			$passkey = $_GET['passkey'];
			
			$sqlrecuperauser = "SELECT * FROM utenti_temp WHERE codiceconferma = '$passkey'";
			$risultatouser = mysql_query($sqlrecuperauser);
			
			if($risultatouser) {
			
				$contauser = mysql_num_rows($risultatouser);
				
				if($contauser == 1){
				
					$rows = mysql_fetch_array($risultatouser);
					$username = $rows['username'];
					$email = $rows['email'];
					$password = $rows ['password'];
					
					$passwordcript = md5($password);
					
					$sqlconfermauser = mysql_query("INSERT INTO utenti (username, password, email) VALUES ('$username', '$passwordcript', '$email')");
					
					if ($sqlconfermauser) {
					
						echo "Il tuo account è stato attivato con successo";
						$sqleliminadati = mysql_query("DELETE FROM utenti_temp WHERE codiceconferma = '$passkey'");
					
					} else {
					
						echo "Errore!";
					
					}
				
				}
			
			}
			
		}

	?>
 
Potresti aggiungere quel codice del sito nel mio codice? Non vorrei abbandonare tutto...
 
Ciao, va bene così il codice? Ho aggiunto quel pezzo che hai dimenticato all'inizio. Sennò dimmi te dove posizionarlo. ^^

PHP:
<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>Documento senza titolo</title> 
</head> 
<body> 
<?php 
//.... 
        $testo.="$messaggio<hr>$allegato_si_no"; 
    $Emailmessaggio->Body=$testo;//AGGIUNGI QUESTA 
        //preparo l'allegato se c'è o se non l'ho eliminato 
//..... 
?>
<?php 
if(isset($_POST['invia'])){//verifico che sia stato premuto il submit 
    //metto un messaggio di errore a vuoto 
    $ok_ko=""; 
    //leggo i vari input e li verifico 
    $nome=trim(strip_tags($_POST['nome']));//con stip tag tolgo i tag html 
    $cognome=trim(strip_tags($_POST['cognome'])); 
    $mittente=trim(strip_tags($_POST['mittente'])); 
    $oggetto=trim(strip_tags($_POST['oggetto'])); 
    //nel messaggio trasformo gli eventuali \n in br e non li tolgo, gli altri li elimino 
    $messaggio=trim(strip_tags(nl2br($_POST['messaggio']);"<br> <br />")); 
    $allegato_name=$_FILES['allegato']['name']; 
    //inizio i controlli 
    if($nome == ""){ 
        $ok_ko.="il nome &eacute; obbligatorio<br>"; 
    } 
    if($cognome == ""){ 
        $ok_ko.="il cognome &eacute; obbligatorio<br>"; 
    } 
    if(!filter_var($mittente, FILTER_VALIDATE_EMAIL)){ 
        $ok_ko.="l'indirizzo email &eacute; obbligatorio<br>o indirizzo non valido<br>"; 
    } 
    if($messaggio =="" || strlen($messaggio)<10){ 
        $ok_ko.="non hai scritto il messaggio<br>o troppo corto, minimo 10 caratteri<br>"; 
    } 
    $ammessi=array('doc', 'docx', 'pdf', 'txt');//puoi aggiungerne o elimininarne 
    $estensione=pathinfo($allegato_name, PATHINFO_EXTENSION);//ricavo l'estenzione del file 
    if(!in_array($estensione,$ammessi)){//verifico se l'estenzione è tra le ammesse 
        //non c'è quindi vuoto tutto 
        $allegato_name =""; 
        $allegato_si_no="non c'&eacute; allegato"; 
    }else{ 
        //e lo carico (qui se non caricato metto solamente come se fosse vuoto o errato) 
        if(move_uploaded_file($_FILES['allegato']['tmp_name'], $_FILES['allegato']['name'])){ 
            $allegato_si_no="allegato: ".basename($allegato_name); 
        }else{ 
            $allegato_name =""; 
        $allegato_si_no="non c'&eacute; allegato"; 
        } 
    }  
    //a questo punto verifico il messaggio di errore 
    //se è rimasto vuoto non sono stati fatti errori quindi posso iniziare a spedire 
    if($ok_ko==""){ 
        $destinatario="email@email.com"; //qui le tua email 
        require_once "phpmailler/class.phpmailer.php";//richiamo la classe (verifica il percorso) 
        // e comincio ad istanziarla 
        $Emailmessaggio = new PHPmailer(); 
        $Emailmessaggio->SetLanguage('it','language/'); //messo italiano, ma la scelta è vasta 
        $Emailmessaggio->IsHTML(true); // invio l'email in formato HTML 
        $Emailmessaggio->AddAddress($destinatario); 
        $Emailmessaggio->FromName= "mio_sito";//da dove ti arriva il messaggio, cioè dal form del tuo sito 
        $Emailmessaggio->AddReplyTo($mittente,"");//a chi rispondere es. con il rispondi di outlook 
        $Emailmessaggio->Subject=$oggetto;//oggetto dell'email 
        //preparo il testo che ti verrà inviato 
        $testo="<hr>"; 
        $testo.="email inviata da: $nome $cognome<br>"; 
        $testo.= "il ".date("d.m.Y H:i:s")."<hr>"; 
        $testo.="$messaggio<hr>$allegato_si_no"; 
        //preparo l'allegato se c'è o se non l'ho eliminato 
        if($allegato_name !=""){ 
            $Emailmessaggio->AddAttachment($allegato_name); 
        } 
        //ora dovrebbe essere tutto pronto per l'invio 
        if(!$Emailmessaggio->Send()){ //errore di trasmissione 
              $ok_ko="c'&eacute; stato un errore di trasmissione, riprova pi&ugrave; tardi<br>"; 
        }else{ //invio avvenuto 
              $ok_ko="grazie di averci contattato, sarai richiamato al pi&ugrave; presto<br>"; 
        } 
    } 
    //quindi mostro il messaggio di errore o di invio (a te sistemarlo graficamente) 
    echo $ok_ko; 
    //e ritorno, dopo 4 secondi per dare il tempo di leggere il messaggio al form pulito 
    echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
}else{ 
?> 
<form action="<?php htmlspecialchars($_SERVER['PHP_SELF']);?>" method="POST" enctype="multipart/form-data"> 
<table width="51%"  border="0" cellspacing="0" cellpadding="2"> 
  <tr> 
    <td width="14%">nome:</td> 
    <td width="26%"><input type="text" name="nome" /></td> 
    <td width="60%">*</td> 
  </tr> 
  <tr> 
    <td>cognome: </td> 
    <td><input type="text" name="cognome" /></td> 
    <td>*</td> 
  </tr> 
  <tr> 
    <td>email: </td> 
    <td><input type="text" name="mittente" value="" /></td> 
    <td>*</td> 
  </tr> 
  <tr> 
    <td>oggetto: </td> 
    <td><input type="text" name="oggetto" value="" /></td> 
    <td>*</td> 
  </tr> 
  <tr> 
    <td>testo: </td> 
    <td><textarea cols="40" rows="4" name="messaggio"></textarea></td> 
    <td>* minimo 10 caratteri </td> 
  </tr> 
  <tr> 
    <td>allegato</td> 
    <td><input type="file" name="allegato" /></td> 
    <td>file ammessi: .doc, .pdf, .txt</td> 
  </tr> 
  <tr> 
    <td>&nbsp;</td> 
    <td><div align="right">*</div></td> 
    <td>campi obbligatori </td> 
  </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    <td><input type="submit" name ="invia" value="Invia" /></td> 
  </tr> 
</table> 
</form> 
<!--qui ci andrebbe un link per uscire dalla pagina --> 
<?php 
} 
?> 
</body> 
</html>
 
ciao
no, no
va messo tra queste due righe
PHP:
<?php
//..................
        $testo.="$messaggio<hr>$allegato_si_no";
		$Emailmessaggio->Body=$testo;//AGGIUNGI QUESTA  
        //preparo l'allegato se c'è o se non l'ho eliminato 
//...................
?>
comunque a cosa ti serve l'allegato e il teso, non volevi inviare l'email di conferma?
guarda che devi adattarlo alle tue esigenze.
prova poi appena ho un minuto ci do un occhio
 

Discussioni simili