errore form di contatto

Cereal_killer

Nuovo Utente
10 Dic 2012
8
0
0
Ciao a tutti ragazzi :D

avrei bisogno il vostro prezioso aiuto. Ho cercato nel forum ma non ho trovato una soluzione e quindi mi affido alle vostre abili menti....premetto che per voi sarà una passeggiata risolvere il problema.

Ho un form php, ma quando ricevo l'e-mail il campo "city" non viene visualizzato e lasciato bianco....sapete dirmi dove ho sbagliato? mi sucso in anticipo per ignoranza e abnormità del post... cazziate permesse :fonzie:
HTML:
<div class="contact"> 
             <div id="message"></div>
                                
            <form method="post" action="contact.php" name="contactform" id="contactform">
            
            <fieldset>
        
            <label for=name accesskey=U><span class="required">*</span>Nome</label>
            <input name="name" type="text" id="name" size="30" value="" /> 
        
            <br />
            <label for=email accesskey=E><span class="required">*</span> E-mail</label>
            <input name="email" type="text" id="email" size="30" value="" />
        
            <br />
            <label for=phone accesskey=P><span class="required">*</span>N° Telefono</label>
            <input name="phone" type="text" id="phone" size="30" value="" />
         <br />
            <label for=city accesskey="L"><span class="required">*</span>Località</label>
            <input name="city" type="text" id="city" size="30" value="" />
        
           <br />
            <label for=subject accesskey=S>Categoria</label>
            <select name="subject" id="subject">
            <option value="Nessuna categoria">Selziona la categoria</option>
              <option value="Abiti sa sposa">Abiti da sposa / Cerimonia</option>
              <option value="Agenzia Immobiliare">Agenzia Immobiliare</option>
               <option value="Altro">Altro</option>
      
              
            </select>
               
            <br />
          <label for=comments accesskey=C><span class="required">*</span>Descrizione dettagliata</label>
            <textarea name="comments" cols="40" rows="3"  id="comments" style="width: 350px;"></textarea>
                            
            <p><span class="required">*</span> Sei un'umano?</p>
                    
            <label for=verify accesskey=V>&nbsp;&nbsp;&nbsp;3 + 1 =</label>
            <input name="verify" type="text" id="verify" size="4" value="" style="width: 30px;" /><br /><br />
        
            <input type="submit" class="submit" id="submit" value="Invia" />
            
            </fieldset>
        
            </form>
PHP:
<?php

if(!$_POST) exit;

// Email address verification, do not edit.
function isEmail($email) { 
	return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));		
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$name     = $_POST['name'];
$email    = $_POST['email'];
$phone   = $_POST['phone'];
$city  = $_POST['city'];
$subject  = $_POST['subject'];
$comments = $_POST['comments'];
$verify   = $_POST['verify'];


if(trim($name) == '') {
	echo '<div class="error_message">INSERIRE IL NOME</div>';
	exit();
} else if(trim($email) == '') {
	echo '<div class="error_message">INSERIRE UN INDIRIZZO E-MAIL VALIDO</div>';
	exit();
} else if(trim($phone) == '') {
	echo '<div class="error_message">INSERIRE UN NUMERO DI TELEFONO VALIDO</div>';
	exit();
} else if(!is_numeric($phone)) {
	echo '<div class="error_message">IL NUMERO DI TELEFONO PUO CONTENERE SOLO NUMERI</div>';
	exit();
} else if(!isEmail($email)) {
	echo '<div class="error_message">INSERIRE UN INDIRIZZO E-MAIL VALIDO</div>';
	exit();
}

if(trim($subject) == '') {
	echo '<div class="error_message">INSERIRE UNA CATEGORIA</div>';
	exit();
} else if(trim($comments) == '') {
	echo '<div class="error_message">INSERIRE LA DESCRIZIONE DEL MESSAGGIO</div>';
	exit();
} else if(!isset($verify) || trim($verify) == '') {
	echo '<div class="error_message">INSERISCI IL CODICE DI VERIFICA</div>';
	exit();
} else if(trim($verify) != '4') {
	echo '<div class="error_message">IL NUMERO DI VERIFICA &eGRAVE SBAGLIATO</div>';
	exit();  
}

if(get_magic_quotes_gpc()) {
	$comments = stripslashes($comments);
}


// Configuration option.
// Enter the email address that you want to emails to be sent to.
// Example $address = "joe.doe@yourdomain.com";

//$address = "example@themeforest.net";
$address = "info@preventivionline.ch";


// Configuration option.
// i.e. The standard subject will appear as, "You've been contacted by John Doe."

// Example, $e_subject = '$name . ' has contacted you via Your Website.';

$e_subject = 'PREVENTIVI ONLINE - sei stato contattato da ' . $name . '.';


// Configuration option.
// You can change this if you feel that you need to.
// Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.
		
$e_body = "Sei stato contattato da: $name, residente a: $city. \r\n Per una richiesta di preventivo relaiva alla categoria: $subject. \r\n Nel messaggio sottostante troverai la descrizione della richiesta" . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "Puoi contattare $name via email, $email o al numero: $phone";
		
$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );

$headers = "From: $email" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

if(mail($address, $e_subject, $msg, $headers)) {

	// Email has sent successfully, echo a success page.
	
	echo "<fieldset>";			
	echo "<div id='success_page'>";
	echo "<h1>E-MAIL INVIATA CON SUCCESSO!</h1>";
	echo "<p>Grazie <strong>$name</strong> &nbsp; Il tuo messaggio verr&agrave; preso in cosiderazione al pi&ugrave; presto</p>";
	echo "</div>";
	echo "</fieldset>";
		 
} else {

	echo 'ERROR!';

}
 
Ultima modifica di un moderatore:
ciao
così ad una prima occhiata non ne vedo il motivo, semprerebbe corretto
prova a mettereun var_dump intanto per vedere se il valore viene trasmesso dal form, se non viene trasmesso l'errore è a monte
PHP:
<?php
//...........
$name     = $_POST['name'];
$email    = $_POST['email'];
$phone   = $_POST['phone'];
var_dump($_POST['city'];//poi lo togli
$city  = $_POST['city'];
$subject  = $_POST['subject'];
$comments = $_POST['comments'];
$verify   = $_POST['verify'];
//...........
?>
se viene trasmesso cerchiamo l'errore a valle
posta cosa restituisce il var_dump
 
Innanzi tutto ti ringrazio per la risposta :)

anche a mé sembra stranissimo che nella mail non me lo riporta...ci ho perso un sacco di ore...

inserento il codice che mi hai passato nel file php mi dice questo all'invio del form:

Parse error: syntax error, unexpected ';' in /homez.604/preventie/www/contact.php on line 15

non sò se ho fatto quello che intendevi tu...
 
Innanzi tutto ti ringrazio per la risposta :)

anche a mé sembra stranissimo che nella mail non me lo riporta...ci ho perso un sacco di ore...

inserento il codice che mi hai passato nel file php mi dice questo all'invio del form:

Parse error: syntax error, unexpected ';' in /homez.604/preventie/www/contact.php on line 15

non sò se ho fatto quello che intendevi tu...

rettifico, il form non da nessun errore..la mail arriva senza problemi, ma il campo city rimane vuoto
 
ciao
Parse error: syntax error, unexpected ';' in /homez.604/preventie/www/contact.php on line 15
no non c'entra col var_dump quello vuol dire che php trova un ; mal messo (per cause precedenti probabilmente)
dovresi indicare rispetto a quello che hai postato quale è la riga 15.

comunque il var_dump (dato che sembra cu la variabile sia vuota) serve soprattutto per cercare dove è l'errore
se il var_dump ti restituisc NULL l'errore viene prima se ti restituisce string(XY) "città che hai scritto" l'errore è dopo, saputo questo uno cerca prima o dopo il perche la variabile è vuota
 
ciao
perche fai tutto quell'ambaradn con il preg_match per verificare l'indirizzo email quando ti basterebbe
PHP:
//....
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo '<div class="error_message">INSERIRE UN INDIRIZZO E-MAIL VALIDO</div>';
//....

edit ecco perche l'errore alla 15
mi ero dimenticato una parentesi chiusa nel var_dump
var_dump($_POST['city']);//poi lo togli
 
Ultima modifica:
ciao
perche fai tutto quell'ambaradn con il preg_match per verificare l'indirizzo email quando ti basterebbe
PHP:
//....
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo '<div class="error_message">INSERIRE UN INDIRIZZO E-MAIL VALIDO</div>';
//....

edit ecco perche l'errore alla 15
mi ero dimenticato una parentesi chiusa nel var_dump
var_dump($_POST['city']);//poi lo togli

avevo notato la dimenticanza e l'ho corretta, inviando il contatto da form mi indica il valore NULL.... l'ambaradan é dovuto al inesperienza :P ... aggiorno e ottimizzo con il tuo codice :)
 
ciao
borgo italia ha scritto:
var_dump($_POST['city'];//poi lo togli
manca una parentesi )
da qui è l'errore Parse error:
edit:
non avevo visto la correzione pardon
 
ciao
se ti da null vuol dire che la variabile non viene trasmessa, l'errore puo essere nel form o nel $_POST
verifica: ha scritto perfettamente uguale il nome del campo di input con la chiave del post (comprese minuscole/maiuscole. anche se mi sembra di si)?
prova a togliere quel value="" (anche agli altri se non scrivi nulla è comunque vuoto).
edit
vedo una differenza, ma non so se può essere quella
<label for=phone accesskey=P><span class="required">*</span>N° Telefono</label>
<input name="phone" type="text" id="phone" size="30" value="" />
<br />
<label for=city accesskey="L">
su tutti metti accesskey senza gli apici su city li metti
 
Ultima modifica:
ciao
mi sono accorto di una cosa (verificando su http://www.w3schools.com/tags/tag_input.asp )
acccesskey non fa parte degli attributi del tag input ne html4 ne html5

ok :)

ho rimosso tutto i tag accesskey, provato a compilare il form. La mail che mi arriva é la seguente (non riesco veramente a capire) ... :
________________________________________________________________________________
Sei stato contattato da: Davide Mabellini, residente a: .
Per una richiesta di preventivo relaiva alla categoria: Carrozzeria.

Nel messaggio sottostante troverai la descrizione della richiesta

"prova prova"

Puoi contattare Davide Mabellini via email, mabellini.prova@gmail.com
o al numero: 556549879789

_______________________________________________________________________
 
io l'ho provato e funziona
questo il var_dump() di $msg
Codice:
string 'Sei stato contattato da: criric, residente a: Trento. 

 Per una richiesta di preventivo relaiva alla categoria: Agenzia
Immobiliare. 

 Nel messaggio sottostante troverai la descrizione della richiesta



"azz"



Puoi contattare criric via email, a@a.it o al numero: 33344335544' (length=280)
ti conviene ricontrollare benen il codice perche quello che hai postato funziona
 
Proprio non me ne capacito.... ho fatto copia incolla del contact.php e del form nella index..... se mi dici che a te funziona non so proprio che fare..... :confused:
 
ciao
criric mi ha preceduto e devo confermare quello che ha detto lui, anche se io per verifica ho aggiunto dei var dump
PHP:
var_dump($address);
var_dump($e_subject);
var_dump($msg);

string(24) "info@preventivionline.ch"
string(50) "PREVENTIVI ONLINE - sei stato contattato da borgo."
string(275) "Sei stato contattato da: borgo, residente a: Parma. Per una richiesta di preventivo relaiva alla categoria: Altro. Nel messaggio sottostante troverai la descrizione della richiesta
"prova di invio"
Puoi contattare borgo via email, aa@aaaa.it o al numero: 33325897"

e il tutto funzia (misteri dell'informatica)
 
Ringrazio tutti per le risposte...e mi scuso per il post.

Non capisco dove sia il problema sul sito...potrebbe essere qualcosa relativo al hosting?
 
ciao
...potrebbe essere qualcosa relativo al hosting?
penso di no, mi sembrerebbe assurdo che facesse "sparire" una variabile.
prova a cambiargli nome da city a citta d'appertutto non si sa mai che city gli sia antipatico (con gli anglofili questo e altro:moira:)
 

Discussioni simili