RISOLTO Form email con php

Stallone94

Nuovo Utente
7
0
Ciao raga, sto riscontrando un problema con un form creato per l'invio email. Praticamente l'email arriva ma i campi sono vuoti.
Questo è quello che mi ritrovo nell'email:
Nome:
Email:
Oggetto:
Messaggio:

Credo di sbagliare qualcosa, questo è il mio file html
Codice:
<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
                <div class="row  wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
                  <div class="col-sm-6">
                    <div class="form-group">
                      <input type="text" name="name"  class="form-control" placeholder="Name" required="required">
                    </div>
                  </div>
                  <div class="col-sm-6">
                    <div class="form-group">
                      <input type="email" name="email"   class="form-control" placeholder="Email Address" required="required">
                    </div>
                  </div>
                </div>
                <div class="form-group">
                  <input type="text" name="subject"  class="form-control" placeholder="Subject" required="required">
                </div>
                <div class="form-group">
                  <textarea name="message" id="message" class="form-control" rows="4" placeholder="Enter your message" required="required"></textarea>
                </div>                        
                <div class="form-group">
                  <button type="submit" class="btn-submit">Send Now</button>
                </div>
              </form>
questo è il file php:
PHP:
<?php 

$to = "info@prova.com"; 

$subject = "Oggetto"; 

$body = "Contenuto del modulo:\n\n"; 
$body .= "Nome: " . trim(stripslashes($_POST['Nome'])) . "\n"; 
$body .= "email: " . trim(stripslashes($_POST['email'])) . "\n"; 
$body .= "Oggetto: " . trim(stripslashes($_POST['subject'])) . "\n"; 
$body .= "Messaggio: " . trim(stripslashes($_POST['message'])) . "\n"; 

$headers = "MIME-Version: 1.0";
$headers = "Content-type: text/plain; charset=iso-8859-1";
$headers = "From: {$name} <{$from}>";
$headers = "Reply-To: <{$from}>";
$headers = "Subject: {$subject}";
$headers = "X-Mailer: PHP/".phpversion();

mail($to, $subject, $body, $headers) 

?>

Grazie a tutti!
 
Ultima modifica da un moderatore:

Geca89

Utente Attivo
292
35
CPU
I7 5820K
Scheda Madre
X99-A Plus
HDD
SSD 500GB
RAM
DDR4 32 GB
GPU
Nvidia Geforce GTX 950
Audio
Sound Blaster Z
Monitor
Benq 22''
PSU
750W Semi Modulare
Case
ITEK Case BI-TURBO
Periferiche
WIFI B,G,N AC
OS
Windows
Ci sono un sacco di errori nel codice.
Lo script ti invia la mail vuota perchè non c'è un controllo in php che dice di eseguire la parte del codice php solo se viene premuto il tasto invia email, quindi ad esecuzione lato server della pagina che contiene campi vuoti, ti invia dati vuoti.

Gli errori erano :

Action del form : rimanda ad una pagina che non esiste.
Name input : E' sbagliato, nell'input lo chiami name, nel php lo chiami Nome.
Funzione Mail : Mancava il punto e virgola di fine istruzione.
Manca controllo :Ho inserito la funzione ISSET
ecc.. ecc..

Il codice corretto e funzionante è questo
Codice:
<form id="main-contact-form" name="contact-form" method="POST" action="<?php $_SERVER['PHP_SELF'];?>">
<div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
<div class="col-sm-6">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Name" required="required">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email Address" required="required">
</div>
</div>
</div>
<div class="form-group">
<input type="text" name="subject" class="form-control" placeholder="Subject" required="required">
</div>
<div class="form-group">
<textarea name="message" id="message" class="form-control" rows="4" placeholder="Enter your message" required="required"></textarea>
</div> 
<div class="form-group">
<input type="submit" class="btn-submit" name="invia_mail" value="Send Now">
</div>
</form>

PHP:
<?php 
//SE IL TASTO INVIA EMAIL E' STATO CLICCATO....
if(isset($_POST['invia_mail']))
{
    $to = "[COLOR=#333333]info@prova.com[/COLOR]";  
    $subject = "Oggetto";  
    
    $body = "Contenuto del modulo:\n\n"; 
    $body .= "Nome: " . trim(stripslashes($_POST['name'])) . "\n"; 
    $body .= "email: " . trim(stripslashes($_POST['email'])) . "\n"; 
    $body .= "Oggetto: " . trim(stripslashes($_POST['subject'])) . "\n"; 
    $body .= "Messaggio: " . trim(stripslashes($_POST['message'])) . "\n"; 

    $headers = "MIME-Version: 1.0";
    $headers .= "Content-type: text/plain; charset=iso-8859-1";
    $headers .= "From: {$name} <{$from}>";
    $headers .= "Reply-To: <{$from}>";
    $headers .= "Subject: {$subject}";
    $headers .= "X-Mailer: PHP/".phpversion();

    mail($to, $subject, $body, $headers); 
    Print "<h1> Email inviata correttamente a $to </h1>";
}
?>
P.s. non dimenticare di modificare info@prova.com con il tuo indirizzo email
 
Ultima modifica da un moderatore:

Stallone94

Nuovo Utente
7
0
Ci sono un sacco di errori nel codice.
Lo script ti invia la mail vuota perchè non c'è un controllo in php che dice di eseguire la parte del codice php solo se viene premuto il tasto invia email, quindi ad esecuzione lato server della pagina che contiene campi vuoti, ti invia dati vuoti.

Gli errori erano :

Action del form : rimanda ad una pagina che non esiste.
Name input : E' sbagliato, nell'input lo chiami name, nel php lo chiami Nome.
Funzione Mail : Mancava il punto e virgola di fine istruzione.
Manca controllo :Ho inserito la funzione ISSET
ecc.. ecc..

Il codice corretto e funzionante è questo
(...)
P.s. non dimenticare di modificare info@prova.com con il tuo indirizzo email


Grazie Geca, prima che mi rispondessi ho modificato il codice php del file sendemail in questa maniera.
PHP:
$to   		= 'infor@prova.com';//r
$subject = 'Messaggio ';

$name       =   [MENTION=145791]TRiM[/MENTION](stripslashes($_POST['name'])); 
$from       =   [MENTION=145791]TRiM[/MENTION](stripslashes($_POST['email'])); 
$oggetto    =   [MENTION=145791]TRiM[/MENTION](stripslashes($_POST['subject'])); 
$testo   =   [MENTION=145791]TRiM[/MENTION](stripslashes($_POST['message'])); 

$message .= "Nome: $name \n";
$message .= "Email: $from \n";
$message .= "Oggetto: $oggetto \n";
$message .= "Messaggio: $testo \n";

$headers = "MIME-Version: 1.0";
$headers = "Content-type: text/plain; charset=iso-8859-1";
$headers = "From: {$name} <{$from}>";
$headers = "Reply-To: <{$from}>";
$headers = "Subject: {$subject}";
$headers = "X-Mailer: PHP/".phpversion();

mail($to, $subject, $message, $headers);

die;
ora mi sembra più pulito però il risultato è uguale. Ho notato che ho un file js che interagisce con l'invio dell'email. Questo è il codice:
Codice:
// Contact form
	var form = $('#main-contact-form');
	form.submit(function(event){
		event.preventDefault();
		var form_status = $('<div class="form_status"></div>');
		$.ajax({
			url: $(this).attr('action'),
			beforeSend: function(){
				form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
			}
		}).done(function(data){
			form_status.html('<p class="text-success">Thank you for contact us. As early as possible  we will contact you</p>').delay(3000).fadeOut();
		});
	});
Se cancello questo file, quando clicco su invia mi compare una pagina bianca mentre nell'email ho tutti i campi compilati. Quindi l'email mi arriva per bene ma ho questa pagina bianca che fa riferimento al file sendemail.php. Riesci a dirmi cosa devo modificare nel file js? Grazie ancora...
 
Ultima modifica da un moderatore:

Geca89

Utente Attivo
292
35
CPU
I7 5820K
Scheda Madre
X99-A Plus
HDD
SSD 500GB
RAM
DDR4 32 GB
GPU
Nvidia Geforce GTX 950
Audio
Sound Blaster Z
Monitor
Benq 22''
PSU
750W Semi Modulare
Case
ITEK Case BI-TURBO
Periferiche
WIFI B,G,N AC
OS
Windows
Allora nel codice che hai postato all'inizio non c'era alcun codice javascript che veniva richiamato.
Nel codice che hai modificato continuano ad esserci errori, nell'$headers non ci metti la concatenazione (il punto .) come è fatto per $message .

La pagina bianca che ti rimanda dopo aver cliccato su invia, devi controllare l'action del form html .
Se nell'action è scritto pippo.php vuol dire che devi inserire il codice php nel file pippo.php e dopo l'esecuzione dell'invio email ci fai un redirect... boh alla home o ad una pagina...

In ogni caso, troppo casino, se crei un nuovo file chiamato email.php e ci incolli tutto il codice che ti ho postato, vedi che funziona senza javascript e ti dice anche che la mail è stata inviata.
 

Stallone94

Nuovo Utente
7
0
Allora nel codice che hai postato all'inizio non c'era alcun codice javascript che veniva richiamato.
Nel codice che hai modificato continuano ad esserci errori, nell'$headers non ci metti la concatenazione (il punto .) come è fatto per $message .

La pagina bianca che ti rimanda dopo aver cliccato su invia, devi controllare l'action del form html .
Se nell'action è scritto pippo.php vuol dire che devi inserire il codice php nel file pippo.php e dopo l'esecuzione dell'invio email ci fai un redirect... boh alla home o ad una pagina...

In ogni caso, troppo casino, se crei un nuovo file chiamato email.php e ci incolli tutto il codice che ti ho postato, vedi che funziona senza javascript e ti dice anche che la mail è stata inviata.

Geca ho messo il codice che mi hai postato all'inizio. In effetti funziona, ma solo se rimuovo quel codice javascript. Altrimenti l'email non mi arriva. Inoltre quando clicco su invia mi si ricarica la pagina, può anche andare bene...
 

Geca89

Utente Attivo
292
35
CPU
I7 5820K
Scheda Madre
X99-A Plus
HDD
SSD 500GB
RAM
DDR4 32 GB
GPU
Nvidia Geforce GTX 950
Audio
Sound Blaster Z
Monitor
Benq 22''
PSU
750W Semi Modulare
Case
ITEK Case BI-TURBO
Periferiche
WIFI B,G,N AC
OS
Windows
Stallone94 scusami se insisto, ma sbagli qualcosa, nel codice che ti ho postato se lo inserisci in un nuovo file non richiama e non c'è alcun javascript.
Nel file che lo incolli molto probabilmente richiama il codice javascript da qualche parte.
 

Stallone94

Nuovo Utente
7
0
Stallone94 scusami se insisto, ma sbagli qualcosa, nel codice che ti ho postato se lo inserisci in un nuovo file non richiama e non c'è alcun javascript.
Nel file che lo incolli molto probabilmente richiama il codice javascript da qualche parte.

Scusami Geca, allora il pezzo di codice che ti ho incollato all'inizio è solo una parte del file index.html. Infatti il file index richiama il file main.js in cui all'interno ha anche il codice che ti ho postato prima. In questa riga : <form id="main-contact-form" name="contact-form" method="post" action="sendemail.php"> richiama il file php che ho modificato con il tuo. Ma per funzionare ho dovuto rimuovere il codice all'interno del file main.js
Ho provato anche in questa maniera
<form id="main-contact-form" name="contact-form" method="POST" action="<?php $_SERVER['PHP_SELF'];?>">
incollando poi dopo la chiusura del form il codice php che mi hai dato. Ma ripeto funziona, ma solo se rimuovo il codice all'interno del file main.js
Quindi credo che il problema sia all'interno del file javascript?
 

Geca89

Utente Attivo
292
35
CPU
I7 5820K
Scheda Madre
X99-A Plus
HDD
SSD 500GB
RAM
DDR4 32 GB
GPU
Nvidia Geforce GTX 950
Audio
Sound Blaster Z
Monitor
Benq 22''
PSU
750W Semi Modulare
Case
ITEK Case BI-TURBO
Periferiche
WIFI B,G,N AC
OS
Windows
Certo perchè se incluso il file javascript viene richiamato qui <form id="main-contact-form" ... e così su ogni input...
Ciaoo
 
M

Mursey

Ospite
Come segnalato ci sono problemi sui tag PHP, pero' dividendo come ho fatto io piu' o meno funziona.
Per favore usate i tag CODE e PHP, grazie.
 

Geca89

Utente Attivo
292
35
CPU
I7 5820K
Scheda Madre
X99-A Plus
HDD
SSD 500GB
RAM
DDR4 32 GB
GPU
Nvidia Geforce GTX 950
Audio
Sound Blaster Z
Monitor
Benq 22''
PSU
750W Semi Modulare
Case
ITEK Case BI-TURBO
Periferiche
WIFI B,G,N AC
OS
Windows
Come segnalato ci sono problemi sui tag PHP, pero' dividendo come ho fatto io piu' o meno funziona.
Per favore usate i tag CODE e PHP, grazie.
Ho scritto nel supporto ticket che i tag php su questo sito danno problemi.
 

Stallone94

Nuovo Utente
7
0
Ho scritto nel supporto ticket che i tag php su questo sito danno problemi.

ciao geca, comunque volevo ringraziarti per ieri. Forse poi sono stato poco chiaro. Comunque poi ho risolto aggiungendo queste righe al file javascript

Codice:
type: "POST",
data: $(this).serialize(),
 

Geca89

Utente Attivo
292
35
CPU
I7 5820K
Scheda Madre
X99-A Plus
HDD
SSD 500GB
RAM
DDR4 32 GB
GPU
Nvidia Geforce GTX 950
Audio
Sound Blaster Z
Monitor
Benq 22''
PSU
750W Semi Modulare
Case
ITEK Case BI-TURBO
Periferiche
WIFI B,G,N AC
OS
Windows
ciao geca, comunque volevo ringraziarti per ieri. Forse poi sono stato poco chiaro. Comunque poi ho risolto aggiungendo queste righe al file javascript

Codice:
type: "POST",
data: $(this).serialize(),
Ok, l'importante è aver risolto il problema.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili