Inviare mail da form php anche al mittente

Ho risolto quel problema ma ora ne ho un altro. Utilizzando la funzone phpmailer non riesco ad inviare il corpo del messaggio che scrivo nella textarea. Metto il codice che ho usato.
PHP:
		//Includo la classe phpmailer
		include ("class.phpmailer.php");
		include ("class.smtp.php");
		//Instanzo la classe
		$mail = new PHPmailer();
		$mail->IsSMTP();
		$mail->SMTPDebug = true;
		
		$mail->Host = "smtp.sito.it";
		$mail->Port = 25;
		
		
		$header = "Content-type: text/plain; charset=UTF-8\n";	//Codifica caratteri accentati
		$header .= "Content-Transfer-Encoding: 8bit\n";
		
		$address = "[email protected]";
		
		
		$mail->AddAddress ($address, "Alessio");
		$mail->From = ($address);
		$mail->SetFrom ($nome,$azienda,$email_mittente);
		$mail->AddBCC ($email_mittente);
		$mail->Subject = ("Richiesta Informazioni");
		$mail->Body = ($header); 
		$mail->Body = ($testo);
		$mail->Body = ($time);
		$mail->Body = ($time2);
		$mail->Body = ($IP);
		$mail->Body = ($Browser);


		}	if (!$mail->Send()){
			echo (mailMsg (F));//	Messaggio di errore invio mail
			} else {
			echo mailMsg(T); //Messaggio invio riuscito
			}}
ob_end_flush();

Nonostante tutto non ricevo il testo che inserisco mentre ricevi IP browser, data time. Ricevo le mail come ROOT USER senza un nome specifico, ma le ricevo sia come destinatari sia come mittente quindi direi che qualcosa funziona.

Mentre la seconda domanda è: è possibile inviare a me tutti i dati mentre al mittente solo alcuni? Cioè, Ip browser, data, posso inviarli solo a me?

Grazie:cool::cool:
 
ciao
per il testo sostituisci
PHP:
 $mail->Body = ($header); 
 $mail->Body = ($testo);
 $mail->Body = ($time);
 $mail->Body = ($time2);
 $mail->Body = ($IP);
 $mail->Body = ($Browser);
con (prima devi preparare il testo)es:
PHP:
//con gli opprtuni separatori tra o dati es <br> e/o indicazioni
$testo =$header.$testo.$time.$time2.$IP.$Browser;
$mail->Body = $testo;

opure concatenare direttamente
PHP:
 $mail->Body = $header; 
 $mail->Body .= $testo;
 $mail->Body .= $time;
 $mail->Body .= $time2;
 $mail->Body .= $IP;
 $mail->Body .= $Browser;

poi per avvere due email diverse devi impostare due istanze diverse

PHP:
$mail_utente = new PHPmailer();
$mail_a_me = new PHPmailer();
//preparare i due testi diversi e indirizzi e inviarle
 
Ciao

Ciao Borgo,

Mi puoi dare una mano per le sessioni ???? Ho aperto una discussione apposita. Ma non trovo l'inghippo. Ho questo codice fornitomi da terzi e modificato per le mie esigenze, ma non funziona:

Login.php

PHP:
<?php
session_start();
include 'connetti.php';
if(!isset($_POST['log'])){
	?>

 <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Modulo d'iscrizone</title>

	<form action='' method='POST'>
        <center>
UserName: <input type="text" name="nome"  maxlength="30" size ="32"> <br> <br>
Password: <input type="password" name="password"  maxlength="8" size ="10"> <br> <br>

<input type="submit" name="log" value="Loggati" />
		</form> </center>
<?php
}
else{
	if(EMPTY($_POST['username']) || EMPTY($_POST['password']))
	{
		echo "Uno dei campi è vuoto! Ricompilare il form!";
		exit;
	}
$username = mysql_real_escape_string(trim($_POST['username']));
$pass = mysql_real_escape_string(md5(trim($_POST['password'])));
	
	$query = mysql_query("SELECT * FROM utenti WHERE username='$username' AND pass='$password'");
	$controllo_db = mysql_num_rows($query);
	if($controllo_db ==  0)
	{
		echo "I dati inseriti sono errati.";
	}
	else
	{
		$trova_id = mysql_fetch_assoc($query);
		$id = $trova_id['id'];
		$_SESSION['id'] = $id;
	}
}
?>
 </html>
        </head>
        </meta>

Considera che nel form d'isscrizione.php ho la seguente riga di criptazione password con metodo md5:

PHP:
//crittografa la passowrod

 $pass = mysql_real_escape_string(md5(trim($_POST['password'])));

e nell'insert viene inserita in questa maniera:

PHP:
$query="INSERT INTO utenti(nome, cognome, username, email, password)  VALUES('$nome','$cognome','$username','$email','$pass')";

Nel db, viene visualizzato in tale maniera la criptazione, credo e spero che sia corretta:

PHP:
2 	xxx 	fabio 	zoccola 	[email protected] 	0c88028bf3aa6a6a143ed846f2be1ea4 (questa dovrebbe essere la password) Lo 0, è per decidere se accettare o meno l'utente.

Un ultima cosa, considera, che mi dovrebbe apparire benvenuto pinco pallino, e benvenuto paperinik4, nel caso in cui si riferisce al sito di mio nipote. Se ritieni opportuno, di spostare tale conversazione nell'apposita discussione, fallo pure. Te ne sarei anzi grato. Spero di ricevere consigli da parte tua. Grazie.
 
Mille grazie, mi sei stato veramente d'aiuto!!!! Ho risolto molti problemi dopo le tua spiegazioni. La domanda che ti chiedo ora è: Se io volessi inviare le due mail con due Nomi diversi utilizzando la funzione
PHP:
$mail2->FromName = ('Sito');
dovrei solamente cambiare la voce $mail2?

Inoltre non ricevo queste voci
PHP:
$mail2->Body .= $data . "\n";
		$mail2->Body .= $time . "\n";
		$mail2->Body .= $IP . "\n";
		$mail2->Body .= $Browser . "\n";
mi sai dire se sbaglio qualcosa? Qua le dichiaro
PHP:
$time = date("H:i:s"); //Orario
		$data = strftime("%A, %d %B %Y"); //Data
		$IP = ($_SERVER['REMOTE_ADDR']);
		$Browser = ($_SERVER['HTTP_USER_AGENT']);

e qui il testo

PHP:
$mail2->From = ($email_mittente);
		$mail2->FromName = ('Sito');
//		$mail2->SetFrom ($nome . "\n" . $email_mittente . "\n" . $azienda);
		$mail2->Subject = ("Richiesta Informazioni dal sito ");
		$mail2->Body = $nome . "\n\r";
		$mail2->Body .= $email_mittente . "\n\r";
		$mail2->Body .= $azienda . "\n\r";
		$mail2->Body .= $testo . "\n\r";
		$mail2->Body .= $data . "\n";
		$mail2->Body .= $time . "\n";
		$mail2->Body .= $IP . "\n";
		$mail2->Body .= $Browser . "\n";

Ti confermo che se le voci le inserisco come $mail arrivano correttamente.

Grazie
 
Ultima modifica:
Ragazzi ho risolto l'annoso problema per me, eccovi il codice semi-definitivo.
PHP:
<?php
	ob_start();
	function mailMsg ($status) {
	header('Location:contatti2.php?status=' .$status);
	header ('Content-type: text/plain; charset=UTF-8');	//Codifica caratteri accentati
	header ('Content-Transfer-Encoding: 8bit');	
	

	exit;
}
		setlocale(LC_TIME, 'ita', 'it_IT.utf8');

		if(isset($_POST['button'])) {
				$nome = $_POST['name'];
				$email_mittente = $_POST['email_mittente'];
				$testo = $_POST['messagge'];
				$azienda = $_POST['azienda'];
		
				
		$nome = htmlspecialchars(addslashes ($nome));
		$email_mittente = htmlspecialchars(addslashes ($email_mittente));
		$testo = htmlspecialchars(addslashes ($testo));
		$azienda = htmlspecialchars(addslashes ($azienda));
		
		$time = date("H:i:s"); //Orario
		$data = strftime("%A, %d %B %Y"); //Data
		$IP = ($_SERVER['REMOTE_ADDR']);
		$Browser = ($_SERVER['HTTP_USER_AGENT']);
		

		if (empty($nome)){
		mailMsg(Fo);
		} else if (empty($email_mittente)){
		mailMsg(Fn);
		} elseif (empty($testo)){
		mailMsg(Ft);
		} if (!filter_var($email_mittente,FILTER_VALIDATE_EMAIL)){ mailMsg(Fm);
		} else {
		
		//Includo la classe phpmailer
		include ("class.phpmailer.php");
		include ("class.smtp.php");
		//Instanzo la classe
		$mail = new PHPmailer();
		$mail2 = new PHPMailer();
		$mail->IsSMTP();
		$mail->SMTPDebug = true;
		
		$mail->Host = "smtp.mio.it";
		$mail->Port = 25;
		
		$mail->SMTPAuth = true;
		$mail->Username = "[email protected]";
		$mail->Password = "psw";
		

		$address = "[email protected]"; //Inserire la mail di Nicola
		
		$mail->AddAddress ($email_mittente,$nome,$address); //Mail che riceverà il mittente per conoscenza
		$mail->From = ($address); //Inserire al posto della mia mail quella di 
		$mail->FromName = "pippo"; // Nome che apparirà come Mittente al cliente
		$mail->AddReplyTo($address , 'pippa');
		$mail->AddBCC ($email_mittente);
		$mail->Subject = ("Richiesta Informazioni dal sito xxx.com");
		$mail->Body = 'Nome:' . "\n" . $nome . "\n";
		$mail->Body .= 'Azienda:' . "\n" .  $azienda . "\n\r";
		$mail->Body .= 'Messaggio:' . "\n" .  $testo . "\n\r";


//Impostazioni x la Mail Inviata a Me
		$mail2->From = ($email_mittente);	// Mail del cliente
		$mail2->FromName = ($nome);	// Nome che apparirà a pippo quando riceverà la mail dal sito
		$mail2->AddAddress($address); //Mail che riceverà pippo
		$mail2->Subject = ("Richiesta Informazioni dal sito xxx.com");
		$mail2->Body = 'Nome:' . "\n" . $nome . "\n\r";
		$mail2->Body .= 'E-mail:' . "\n" . $email_mittente . "\n\r";
		$mail2->Body .= 'Azienda:' . "\n"  . $azienda . "\n\r";
		$mail2->Body .= 'Richiesta:' . "\n"  . $testo . "\n\r";
		$mail2->Body .= $data . "\n";
		$mail2->Body .= $time . "\n";
		$mail2->Body .= $IP . "\n";
		$mail2->Body .= $Browser . "\n";

		}	if (!$mail->Send()){
			echo (mailMsg (F));			//	Messaggio di errore invio mail
			} else if (!$mail2->Send()) {
			echo $mail2->ErrorInfo;
			} else {			
			echo (mailMsg (T)); 			//Messaggio invio riuscito
			}
			}
ob_end_flush();
?>

mi manca capire come impostare i caratteri accentati in html. Se il nome del cliente è accentato la mail che ricevo ha caratteri "strani", quindi come posso impostarlo, visto che ho gia dichiarato il content type nell'header?
 
ciao
prova a mettere

PHP:
//.....
$mail->IsHTML(true); // invio l'email in formato HTML
//.....
$mail2->IsHTML(true);
//....

un paio di cose
include ("class.smtp.php"); non dovrebbe servire (se serve è la phpmailer che se la richiama, rischi di uìincluderla due volte)

a che ti serve l'ambaradan dell header?
eventualmente al posto di charset=UTF-8 metti charset=iso-8859-1 (io uso questo e non ho problemi con le accentate)

p.s.
postami il limk al post delle password
 
Ciao

Ciao Borgo,

Mi sto ammattendo, mi puoi dare la stringa giusta per criptare in md5 per favore, ho visto che non è quella che adopero. Quella che adoperavo io è la seguente:

PHP:
//crittografa la passowrod

 $pass = mysql_real_escape_string(md5(trim($_POST['password'])));

E nell'insert ho messo così:

PHP:
$query="INSERT INTO utenti(nome, cognome, username, email, password)  VALUES('$nome','$cognome','$username','$email','$pass')";

Ti prego dammi un cenno se ci sei che mi sto ammattendo. L'errore è quello sicuramente. Grazie. Aspetto tue notizie.
 
ciao
io non metterei il real in quanto in una stringa criptata non dovrebbero essere escape

PHP:
 $pass = md5(trim($_POST['password']));

poi la riga di insert è sintatticamente giusta (se i nomi dei campi sono giusti questo dovresti saperlo tu), unica cosa che mi viene in mente è:

come hai settato il campo password?
una stringa mdcinquata diventa lunga quindi se non hai settato il campo varchar(50) può essere che te la tagli (io metto 50 ma potresti mettere 32)
 
Ciao

Ciao,

Grazie per la risposta. Allora l'errore potrebbe essere nl'escape. Comunque, la lunghezza della password c'ero cascato na vorta, e ormai la metto fissa a 255 per essere sicuri che la prende. Ma limito il camo a 8 o 12 dipende daq come mi gira. I campi sono corretti come stanno nell'insert. Ti posto la tabella così magari gli dai un'occhiata. Quattro occhi vedono meglio di due.

PHP:
create table utenti (

id 		INT UNSIGNED NOT NULL AUTO_INCREMENT,
nome 		VARCHAR(30) NOT NULL,
cognome 	VARCHAR(30) NOT NULL,
username 	VARCHAR(30) NOT NULL,
email           VARCHAR(40) NOT NULL,
password        VARCHAR(255) NOT NULL,
autorizzato 	ENUM('0', '1') DEFAULT '0',
PRIMARY KEY (id)
);

Questa è la tabella utenti. Una cosa, con cosa deve iniziare la criptazione in md5 ??? Tanto per regolarmi per vedere se la fa giusta o meno. Purtroppo la memoria mia fa schifo. Grazie. Quindi, il codice di criptazione è giusto togliendo escape.
 
Ciao

Ciao,

E' giusta la criptazione ???? Che inizi così:

0c88028bf3aa6a6a143ed846f2be1ea4

Ti posto il codice di prova che ho fatto, se per favore me lo puoi verificare e correggere gli eventuali errori, grazie:

PHP:
<?php

require_once("connetti.php");


if (!isset($_POST['regpass'])) {

?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Prova Passwowrd di criptazione in md5</title>
    </head>
    
   <form action='' method='POST'>
    
       <center>
    <h1> PROVA CRIPTAZIONE PASSWORD IN MD5 </h1>
    
UserName:   <input type="text" name="username"  maxlength="30" size ="32"> <br> <br>
Password:   <input type="password" name="password"  maxlength="10" size ="12"> <br> <br>

<input type="submit" name="regpass" value="Registra Password" />
		</form> </center>
<body>
        <?php
      } else {
 
 $username = mysql_real_escape_string(strtolower(trim ($_POST['username'])));
 $password = $_POST['password'];
 //$passw = mysql_real_escape_string(trim ($_POST['passw']));


//crittografa la passowrod

 $pass = md5(trim($_POST['password']));
 
// verifico la presenza dei campi obbligatori
    
$ok_ko ="";

 //controllo campi compilati


if($username ==""){$ok_ko .=  "Attenzione: il campo username deve essere compilato. <br> <br>";}

// if($password != $passw){$ok_ko .=  "Attenzione: le due password non coincidono. <br> <br>";}
 
// Controllo se lo username è presente nel db

$checkusername=mysql_query("SELECT username FROM password WHERE username='$username'");
$vuota=mysql_num_rows($checkusername);
if($vuota > 0){
	echo "<br> <br> <h1> Attenzione: lo username: ".$username." è già presente nell'archivio. Si prega di cambiare email. Grazie !!! </h1>";
echo "<meta http-equiv='Refresh' content=4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();

}
  

if($ok_ko !=""){
		echo "<h1>$ok_ko</h1>";
		echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();
}else{
 
 $query="INSERT INTO password(username,  password)  VALUES('$username','$pass')";
//var_dump($query);//qui dovresti vedere se la query si forma come dovrebbe
$q_i=mysql_query($query);//qui se registra, se bool false errore, se resuorce... è a posto
var_dump($q_i);
   
echo "<h1> <br>Controllare se è stato criptato bene la password su phpmysql. Grazie !!!</h1>";//e torno al form
header("Refresh: 2;URL=paginaris.php");     
//header("Refresh: 2;URL=login.php");          
}
}
        ?>
    </body>
</html>

Qui ti metto anche la tabella password:

PHP:
create table password (

id 		 INT UNSIGNED NOT NULL AUTO_INCREMENT,
username          VARCHAR(40) NOT NULL,
password           VARCHAR(255) NOT NULL,
autorizzato 	ENUM('0', '1') DEFAULT '0',
PRIMARY KEY (id)
);

Grazie, spero di ricevere il tuo aiuto come al solito.
 
ciao
visto così ad una prima occhiata sembrerebbe di sì.

la stringa criptata può iniziare anche così

dimenticavo: ti conviene verificare che anche $_POST['password'] non sia vuoto e lungo quanto dovrebbe essere
 
Ultima modifica:
Ciao

Ciao,

C'è un metodo sicuro che mi garantisca che cripta bene ??? Sennò il problema poi compare ovviamente nell'accesso alle pagine riservate. Perchè io ricordavo che iniziasse con un altro valore, ma posso sbagliare. Ho questo script che mi hai fatto tu una volta. Te lo posto:

PHP:
<?php

require_once("connetti.php");
?>
<html>
        <head>
        </b></em></hr>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
$mia_pass="pinco pallo";//metti la tua effettiva al posto di pinco pallo
$mia_pas_cod=md5($mia_pass);
echo "la mia password in chiaro è $mia_pass<br>";
echo "la mia password codificata md5 è $mia_pas_cod<br>";//dentro in tabella

?>
Mi puoi dire per favore se è sempre utile. Grazie. Quando vai in ferie ????
 
ciao
md5 cripta secondo un suo agoritmo, quindi cripta.
ci sono evidentemente dei sistemi migliori sha1 es è migliore.
però qualsiasi metodo di criptatura può essere decriptato. tutto sta a vedere quanto tempo ci vuole.
non mi ricordo esattamente ma per decriptare un md5 con un programma questo deve girare per alcune ore prima di riuscire a decriptare.
comunque la facilità di passare fraudolentemente da una pass non dipende solo dalla criptaura (es se la pass è 123456 è la prima che viene provata, quindi potrebbe essere criptata nel migliore dei modi, ma viene subito acherata
 
Ciao

ciao
visto così ad una prima occhiata sembrerebbe di sì.

la stringa criptata può iniziare anche così

dimenticavo: ti conviene verificare che anche $_POST['password'] non sia vuoto e lungo quanto dovrebbe essere


Ciao,

Ti riferisci a questa ????

PHP:
Password: <input type="password" name="password"  maxlength="12" size ="14"> <br> <br>

Anche maxlength="12" deve essere di 255. Oppure solo nel dbdeve essere di 255 ??? nel db c'è. Se così non fosse non capisco allora a cosa ti riferisci quando mi dici: "ti conviene verificare che anche $_POST['password']". Se per favore me lo spieghi. Grazie.
 
ciao
ecco
PHP:
<?php
//....
$password = trim($_POST['password']); 
if (strlen($password) < 6 || strlen($password) > 12){$ok_ko .=  "Attenzione: password troppo corta o troppo lunga. <br> <br>";}
//.....
?>
 
Ciao

Ciao,

Sono appena ritornato da fuori. Allora, senti ti volevo chiedere una cosa. Come faccio a fare il login con lo username e la pass ???' Ossia come fa trovarlo nel db ??? con una query, e questo lo so, però non riesco a fare il confronto inserendo il tutto. Mi spiego meglio. Gli esempi che ho visto, mettono già username e password e non che li devi digitare te. Invece a me serve il contrario. ossia io devo digitare username e password in modo tale che poi entro nell'ìarea riservata. Mi manca questa prate qua. Mi puoi dare una mano ???? Nei vecchi esempi purtroppo gli ho persi :(
 

Discussioni simili