come creare un form di contatto.

migo80

Utente Attivo
25 Apr 2013
243
3
18
Salve sono nuovo del forum, arrivo subito al dunque....!
supponiamo di avere una tabella denominata "annunci" in un db mysql, con i relativi campi: id, nome, size, type, titolo, foto, annuncio, mail.
ora io avrei bisogno che nella pagina dove saranno visualizzati gli annunci, ci sia un pulsante che mi permetta di contattare il venditore di ogni singolo annunci.
spero di avere qualche aiuto!!! grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
potresti fare così
quendo visualizzi l'annuncio immagino che tu prelievi i dati dell'utente tra cui l'id.
quindi poui riinviare ad una pagina (anche in un popup) cfacendo un pulsante del tipo

<a href="contatta.php?vend=<?php echo $id; ?>">contatta venditore</a>

nella pag contatta.php ricevi tramite $_GET['vend'] l'id, lo verifichi, estrai i dati ce ti servono e li metti nella funzione mail() o meglio usi la classe phpmailler.
nella pgina contatta.php costruirai anche l'apposito form in cui l'utente potra scrivere quello che chiede
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
Ti ringrazio per avermi risposto, proverò nel modo da te suggerito...p.s. se dovessi avere difficoltà posso disturbarti ancora...!
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
ciao...dato che sono ancora alle prime armi con il php, ho difficoltà nel creare la pagina contatta.php, potresti farmi un esempio pratico? ringrazio in anticipo.
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
Chiedo scusa ci sono stato quasi tutta la notte con pochi risultati. per quanto riguarda il recupero dell' id del venditore ed estrazione dalla tabella ci sono riuscito in questo modo:codice nel file contatta.php:

PHP:
if(isset($_GET['pag'])&& is_numeric($_GET['pag']))
{
$id = $_GET['pag'];
$cn = new PDO('mysql:host=localhost;dbname=annunci', '****i', '****');
$sql = $cn->prepare ("SELECT id,annuncio,titolo,contatti FROM annuncio WHERE id = :un_id");
$sql->bindParam(':un_id', $id, PDO::PARAM_INT);
$sql->execute();
$result = $sql->fetch(PDO::FETCH_ASSOC);
echo $result['id'] . '<br/>';
echo '<img class="dimensione" src=\'link1.php?id='.$result['id'].'\'width="90" height="67"><br />';
echo $result['titolo'] . '<br/>';
echo $result['annuncio'] . '<br/>';
echo $result['contatti']; 
}
.
Quello di cui ho bisogno ora e' come passare i valori del form alla classe phpmailer ed inviare la mail all' indirizzo recuperato in echo $resul['contatti'].
aspettero' con pazienza :) ciao.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto una cosa:
di questi dati quali devi passare all'email da inviare
$result['titolo']
$result['annuncio']
$result['contatti'](questo è l'indirizzo a cui deve arrivare l'email?)
?
non credo che tu debba passare tutto l'anuncio, secondo me nell'oggetto dell'emai dovresti mettere solo il titolo dell'annuncio ed eventualmente la data.
poi
il form cosa deve contenere: immagino nome indirizzo email e un testo del mittente, giusto?
ancora: quando un utente scrive al titolare dell'annuncio vuoi che arrivi una copia dell'email anche a te (ccn)?
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
ciao
intanto una cosa:
di questi dati quali devi passare all'email da inviare
$result['titolo']
$result['annuncio']
$result['contatti'](questo è l'indirizzo a cui deve arrivare l'email?)
?
non credo che tu debba passare tutto l'anuncio, secondo me nell'oggetto dell'emai dovresti mettere solo il titolo dell'annuncio ed eventualmente la data.
poi
il form cosa deve contenere: immagino nome indirizzo email e un testo del mittente, giusto?
ancora: quando un utente scrive al titolare dell'annuncio vuoi che arrivi una copia dell'email anche a te (ccn)?

Ciao grazie per avermi risposto!
all' email dovrebbero passare il titolo e contatti.
nel form deve avere i campi mail e campo testo del mittente e poi una mail di ritorno a me.
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
scusa avevo dimenticato
si $result['contatti'] e' l indirizzo a cui inviare l' email. :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ecco uno schema di come potresti fare
PHP:
<?php
if(isset($_POST['invia'])){
	$mittente=$_POST['mittente'];
	$testo=trim($_POST['testo']);
	if(!filter_var($mittente, FILTER_VALIDATE_EMAIL)){
		echo "indirizzo email non valido";
		echo "<meta http-equiv='Refresh' content='3; pagina_che_vuoi.php'>";//rimandi a dove vuoi tu
	}
	if($testo ==""){
		echo "il testo non può essere vuoto";
		echo "<meta http-equiv='Refresh' content='3; pagina_che_vuoi.php'>";
	}
	$tua_email="tua_email@tuo_dominio.it";//questa ti serve per ricevere copia
	$destinatario=$_POST['destinatario'];
	$oggetto="richiesta relativa all'annuncio: ".$_POST['titolo'];
	$messaggio ="messaggio inviato da: $mittente <hr>";
	$messaggio .= $testo;
	require "phpmailler/class.phpmailer.php";//richiamo la classe, verifica il percorso
	$Emailmessaggio = new PHPmailer();
	$Emailmessaggio->SetLanguage('it','language/'); //messo italiano, ma la scelta è vasta
	$Emailmessaggio->IsHTML(true); // invio l'email in formato HTML
	$Emailmessaggio->From="tuo sito";
	$Emailmessaggio->AddAddress($destinatario);
	$Emailmessaggio->AddCC($tua_email);//questa per inviare a te copia
	if(!$Emailmessaggio->Send()){ //errore di trasmissione
  		echo "il tuo messaggio è stato inviato";
		echo "<meta http-equiv='Refresh' content='3; pagina_che_vuoi.php'>";
	}else{ //invio avvenuto
  		echo "c'è stato un errore di trasmissione, riprova più tardi";
		echo "<meta http-equiv='Refresh' content='3; pagina_che_vuoi.php'>";
	}//fine if-else invio
}//fine if $_post

if(isset($_GET['pag'])&& is_numeric($_GET['pag'])){
	$id = $_GET['pag'];
	$cn = new PDO('mysql:host=localhost;dbname=annunci', '****i', '****');
	$sql = $cn->prepare ("SELECT id,annuncio,titolo,contatti FROM annuncio WHERE id = :un_id");
	$sql->bindParam(':un_id', $id, PDO::PARAM_INT);
	$sql->execute();
	$result = $sql->fetch(PDO::FETCH_ASSOC);
	echo $result['id'] . '<br/>';
	echo '<img class="dimensione" src=\'link1.php?id='.$result['id'].'\'width="90" height="67"><br />';
	echo $result['titolo'] . '<br/>';
	echo $result['annuncio'] . '<br/>';
	echo $result['contatti'];
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" name="form1">
    <input name="titolo" type="hidden" id="titolo" value="<?php echo $result['titolo']; ?>">
    <input name="destinatario" type="hidden" id="destinatario" value="<?php echo $result['contatti']; ?>">
  <p>tua email 
    <input name="mittente" type="text" id="mittente">
    <br>
    testo 
    <textarea name="testo" id="testo"></textarea>
</p>
  <p>
    <input name="invia" type="submit" id="invia" value="invia">
</p>
</form>
<?php
}//fine if $_get
?>
considera comunque che è uno schema che devi mettere a punto, es al posto dei campi hidden potresti usare le sessioni, analogamente passare in sessione il valore del $_get in modo che non ti dia errore se rimandi al form,
quindi passare il get se vengo da pagina precedente o verificare che esista la sessione se dalla stessa pagina.
il tutto condito con un buon capcha per evitare spam

p.s.
comunque se navighi un po' nel forum trovi altre risposte sull'argomento
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
ciao purtroppo con il codice che mi hai suggerito non mi inviava la mail e l' ho modificato in questo modo:
file contatta.php:
PHP:
if(isset($_GET['pag'])&& is_numeric($_GET['pag']))
{
$id = $_GET['pag'];
$cn = new PDO('mysql:host=localhost;dbname=nome_db', '*******', '********');
$sql = $cn->prepare ("SELECT id,annuncio,titolo,contatti,prezzo,contatti FROM computer WHERE id = :un_id");
$sql->bindParam(':un_id', $id, PDO::PARAM_INT);
$sql->execute();
$result = $sql->fetch(PDO::FETCH_ASSOC);
$id = $result['id'];
$email = $result['contatti'];
?><br />

<table class="tabel"  width="400px"  align="center" cellpadding="2" cellspacing="2" bgcolor="#FFFFCC">
 <tr>
<td class="titolo" ><?php echo $result['titolo'] . '<br/>';?></td></tr>

<tr >
<td class="foto"  width="91px" height="68px"><?php echo '<img  src=\'link1.php?id='.$result['id'].'\'width="90" height="67">'.'<br/>';  ?></td></tr>

<tr><td class="prezzo" ><?php echo "€ ". $result['prezzo'] ;?></td></tr>

<tr >
<td  class="annuncio"><?php echo $result['annuncio'] . '<br/><br/>';?></td></tr>
</table><div align="center">

          <p class="stile11">Per chiedere informazioni su questo annuncio,</p>
	  <p class="stile11">bisogna compilare tutti i campi obbligatori,</p>
	  <p class="stile11">digitare le due parole nel captcha</p>
	  <P class="stile11">e cliccare sul tasto animato SEND MAIL.</P>
	 
<form action="send.php" method="post" name="form1"> 
    <input name="titolo" type="hidden" id="titolo" value="<?php echo $result['titolo']; ?>"> 
    <input name="destinatario" type="hidden" id="destinatario" value="<?php echo $result['contatti']; ?>"> 
   <table class="form" width="450px"  align="center" cellpadding="2" cellspacing="2" bgcolor="#FFFFCC">
    <tr>
    <td><span class="Stile13">Mail</span></td>
    <td><input type="text" name="mittente" id="mittente" size="30" maxlength="100"
    /></td>
    </tr>
    <tr>
    <td><span class="Stile13">Messaggio per l' inserzionista</span></td>
    <td><textarea cols="30" rows="10" name="testo" id="testo"></textarea></td>
    </tr>
	</table><br/>
  <div align="center">

    <?php
require_once('recaptchalib.php');
$publickey = "******************************";
echo recaptcha_get_html($publickey);
?>
   <button name="invia" id="invia" type="submit" class="mySubmitButton"></button><br/>
	</div>
 </form>	
<?php 
}
//fine if $_get 
?>


Questo il file send.php:

PHP:
    if (isset($_POST['invia'])){
   
    require_once('recaptchalib.php');
   $privatekey = "***********************************8";
    $resp = recaptcha_check_answer ($privatekey,
    $_SERVER["REMOTE_ADDR"],
    $_POST["recaptcha_challenge_field"],
    $_POST["recaptcha_response_field"]);
    if (!$resp->is_valid) {
   die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
    "(reCAPTCHA said: " . $resp->error . ")");
    } else {
    
    }
    
$mail="*************";
$destinatario=$_POST['destinatario'];
$mittente=$_POST['mittente'];
$oggetto=$_POST['titolo'];
$annuncio=$_POST['testo'];
$to = $destinatario; 
 $subject = $oggetto;
 
$body = "\n\n"; 
$body .= "RICHIESTA RELATIVA AL TUO ANNUNCIO:\n" .$oggetto . "\n\n"; 
$body .= "MESSAGGIO INVIATO DA:\n" .$mittente  . "\n\n"; 
$body .= "MESSAGGIO:\n" .$annuncio  . "\n\n"; 

$headers = "From:" . $mail; 

// INVIO DELLA MAIL 
if(mail($to, $subject, $body, $headers)) {

header("Refresh: 1; URL=http://www.miosito.it");
echo "<p>Mail inviata con successo!</p>";
}else{
echo "<p>Errore!</p>";
} 
}


in questo modo tutto funziona correttamente!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
avevo scritto
$destinatario=$_POST['destinatario'];
al posto di
$destinatario=$_POST['contatti'];

non usare la funzione mail() su alcuni server di posta viene bloccata )es [email protected] e altri)
poi ti era scaricata la classe class.phpmailer.php?
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
non lo avevo notato, pero' nel mio codice funziona dichiarando le due variabili $destinatario=$_POST['destinatario']; $to=$destinatario;.
La classe phpmailer c' era.
Comunque oltre a non inviare entrambe le mail, mi visualizzava in testa al form il messaggio di corretto invio della mail senza che io avessi inviato nulla, anche con il mio di codice.
mentere dividendolo in due file il messaggio viene stampato a video nel momento giusto.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non lo avevo notato, pero' nel mio codice funziona dichiarando le due variabili $destinatario=$_POST['destinatario']; $to=$destinatario;.
hai ragione, mi ero confuso con $result['contatti'] il campo di input hidden si chiama destinatario.
comunque ci do un occhio non capisco perchè non funzi è quello che uso io, verifico di non aver fatto degli errori di copy/paste
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
ciao....il testo e' alla fine dello script :)

PHP:
if(isset($_POST['invia'])){ 
    $mittente=$_POST['mittente']; 
    $testo=trim($_POST['testo']); 
    if(!filter_var($mittente, FILTER_VALIDATE_EMAIL)){ 
        echo "indirizzo email non valido"; 
        echo "<meta http-equiv='Refresh' content='3; pagina_che_vuoi.php'>";//rimandi a dove vuoi tu 
    } 
    if($testo ==""){ 
        echo "il testo non può essere vuoto"; 
        echo "<meta http-equiv='Refresh' content='3; pagina_che_vuoi.php'>"; 
    } 
    $tua_email="tua_email@tuo_dominio.it";//questa ti serve per ricevere copia 
    $destinatario=$_POST['destinatario']; 
	$mit=trim($_POST['mittente']);
	 $text=trim($_POST['testo']); 
    $oggetto="richiesta relativa all'annuncio: ".$_POST['titolo']; 
	$ogg=$_POST['titolo'];
    $messaggio ="messaggio inviato da: $mittente <hr>"; 
    $messaggio .= $testo; 
    require "class.phpmailer.php";//richiamo la classe, verifica il percorso 
	
    $Emailmessaggio = new PHPmailer(); 
    $Emailmessaggio->SetLanguage('it','language/'); //messo italiano, ma la scelta è vasta 
  
    
//settiamo su true il metodo che indica alla classe 
//il formato HTML
   $Emailmessaggio->IsHTML(true);
    

    $Emailmessaggio->From="mio sito"; 
    $Emailmessaggio->AddAddress($destinatario); 
    $Emailmessaggio->AddCC($tua_email);//questa per inviare a te copia 
	$Emailmessaggio->Subject=$ogg;

	//corpo del mex

$Emailmessaggio->Body .= $mittente ;
$Emailmessaggio->Body .=  $oggetto  ;
$Emailmessaggio->Body .= $text  ;
	
	
    if(!$Emailmessaggio->Send()){ //errore di trasmissione 
          echo "c'è stato un errore di trasmissione, riprova più tardi";
        echo "<meta http-equiv='Refresh' content='3; pagina_che_vuoi.php'>"; 
    }else{ //invio avvenuto 
          echo "il tuo messaggio è stato inviato";  
        echo "<meta http-equiv='Refresh' content='3; pagina_che_vuoi.php'>"; 
    }//fine if-else invio 
}//fine if $_post

ho modificato lo script in questo modo e funge per modo di dire....ti spiego....l mail che arriva e' un pasticcio cioe' le 3 variabili del corpo sono stampate in qeusto modo es : [email protected] richiesta relativa all'annuncio:titolo dell'annuncio messaggio: bla bla.http//www.quello che esce su hotmail per segnalare se la mail e' uno spam pero' con caratteri esadecimali.
non riesco a mandare a capo alla fine delle stampa di ogni variabile.
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
scusa avevo dimenticato di dire che all' arrivo della mail nella parte dove dovrebbe essere scritto da quale sito e' stata mandata per esmpio "Mr. Webmaster Forum" mi esce scritto "root user" perche'......
 

migo80

Utente Attivo
25 Apr 2013
243
3
18
ciao......continuo su questa discussione per un nuovo problema.
come eliminare un record in base alla data vecchi di due settimane? grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
L creare oggetti da una classe tramite un form Javascript 0
B [PHP] Creare PDF dopo inserimento dati form PHP 4
D [PHP] Consigli su come creare form PHP 1
T [PHP] Creare Honeypot per form contatti PHP 10
sandropochi [PHP] Form per creare filtro di ricerca su DB PHP 8
S Concatenare due campi di un form per creare un indirizzo web valido Javascript 7
A Creare da form un PDF da inviare come allegato. PHP 1
P Creare form e inviare via mail HTML e CSS 2
E creare un form Presentati al Forum 3
M creare form in un popup HTML e CSS 1
L creare pagine php in modo automatico attraverso form PHP 1
J Creare form registriazione PHP 2
C Creare una form con pulsanti di scelta macro Visual Basic 1
Jam1 Errore nel creare miniature da immagini caricate su un mio form PHP 0
D Come creare validazione form istantanea?? Javascript 1
M Creare un form HTML e CSS 3
ypsilon86 Da un FORM creare una Tabella dinamica PHP 7
M liberia fpdf creare form che al premere al bottone di sumit mi crei il pdf PHP 0
P Creare un form in un sito wordpress WordPress 12
B Creare form contatti con php PHP 4
J Creare file html da un form in area riservata PHP 9
N creare form a fasi PHP 3
M come creare un form con dreamweaver da zero PHP 29
A creare form mail PHP PHP 153
S Creare un form mail PHP 9
G Aiuto per creare un form di invio file Classic ASP 3
H Creare una pagina che si collega a keepvid. come impostare il form? HTML e CSS 3
P creare un form di invio dati PHP 2
I Creare un form di registrazione PHP 7
V AIUTO: creare file php x form PHP 2
E Creare un testo trasparente dietro un div HTML e CSS 5
M Creare traccia di download file sul server HTML e CSS 2
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
L Creare ancore interne alla pagina PHP 1
I Creare un banner temporaneo JavaScript Javascript 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
simgia Cordova errore quando cerco di emulare o creare la app Sviluppo app per Android 2
U PHP creare un file excel dopo ricerca nel DB PHP 0
A Creare un cronometro PHP 5
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
F Creare elementi html con javascript Javascript 3
Shyson Modificare codice e creare link PHP 0
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Creare una forma geometrica Photoshop 1
M [Cerco] aiutanti per creare sito Offerte e Richieste di Lavoro e/o Collaborazione 8
S Libreria PHP per creare file dwg o dxf PHP 0
R Come creare sistema Add to homescreen PHP 3
L Creare un countdown con giorno specifico della settimana PHP 3

Discussioni simili