problema form senza pagina di risposta

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
ciao a tutti, vado diretto al problema.
Dopo ore ed ore passate davanti al pc per riuscire a sistemare un form come volevo io sono riuscito nell'intento m mi sono fermato sul codice php. Cioè ho scritto in una pagina html del codice php e rinominato la pagina in php ovviamente, ho fatto le prve con easyphp ed il codice è tutto corretto. Il problema viene ne momento in cui compilo il form per verificare il lavoro e invece di apparirmi la frase "Mail inviata" o robe del genere come scritto nel markup la pagina rimane bianca e non fa nulla.
PHP:
<div id="contenuto" style="clear:both">
            <div class="pre_form">
            		<h3>Scrivici</h3>
                    <!-- Form di contatto -->
<?php
$status = @$_GET['status'];
if ($status == 'Fv'){
	echo "<span class='error'>I campi non devono essere vuoti.</span>";
	form();
	} elseif ($status == 'Fm'){
	echo "<span class='error'>L\'Email non è valida!</span>";
	form();
	} elseif ($status == 'F'){
	echo "<span class='error'>Si è verificato un errore nell\'invio. Riprova più tardi.</span>";
	}elseif ($status == 'T'){
	echo "<span class='sendOk'>Grazie, il messaggio è stato inviato. Ti risponderemo al più presto</span>";
	}else{
	form();
	}
	function form() {                    
echo'		<form metod="post" name="form" id="form" action="processor.php">';
echo'		<p>Nome</p><input name="name" type="text" value="" />';
echo'		<p>E-Mail</p><input name="mail" type="text" value="" />';
echo'		<p>Messaggio</p><textarea name="messagge" cols="50" rows="10" type="text" value=""></textarea>';
echo'		<p><input type="submit" name="button" id="fbutton" value="Invia" onclick="return thisform(this.form)"/></p>';
echo'		</form>';
}
?>                  					
                    </div>
            </div>

allego anche il file che processa il form
PHP:
<?php
function mailMsg ($status) {
	header('Location:OBIV_contatti.php?status = .$status');	
	exit;
}

	$error = "C\'è stato un errore riprova!";

	if(isset($_POST['button'])) {
		$name = $_POST['name'];
		$mail = $_POST['mail'];
		$text = $_POST['messagge'];
		
		$name = htmlspecialchars(addslashes ($name));
		$mail = htmlspecialchars(addslashes ($mail));
		$text = htmlspecialchars(addslashes ($text));
		

		$validEmail = "^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$";

		if(!empty($name) && !empty ($email) && ($text)){
			if (!eregi($validEmail, $mail)){ mailMsg(Fm);
				} else {
		$messagge = "Inviata da.\n Nome:".$name."\n E-mail:".$mail."\n Messaggio:".$text.
		"\n".$_SERVER['HTTP_USER_AGENT'];"\n".$_SERVER['REMOTE_ADDR'];"\n".$_SERVER['REQUEST_TIME'];
		$title = "Messaggio spedito dal sito www.solution-pony-express.com";
		$to = "[email protected]";
		$mailheader = "From: $mail";
		$mailheader = "Reply-To: $mail";
		error_reporting(0);
		mail($to, $title, $messagge, $mailheader) or die();
		mailMsg (T);
		header('Location:OBIV_contatti.php');
		}} else {
		mailMsg(Fm);
		}
	}

?>

Sapete aiutarmi?! :D:byebye: Mi manca poco e finalmente consegno il mio primo sito dopo solo 3 mesi di "studio". Prima non conoscevo nulla ne di php ne di html.

Grazie
 
Ciao,
gli apici della funzione mailMsg non sono messi in modo corretto
PHP:
function mailMsg ($status) {
    header('Location:OBIV_contatti.php?status = .$status');    
    exit;
}
sistemala cosi:
PHP:
function mailMsg($status) {
    header('Location:OBIV_contatti.php?status=' . $status);
    exit;
}
 
anche qui c'è un errore di sintassi
PHP:
<form metod="post" ...
la sintassi correttsa è questa
PHP:
<form method="post" ...

di conseguenza ti inviava il modulo in GET e la pagina che processa non riconosceva i dati passati
 
Bè in tanto grazie mille ragazzi, Ho avuto un primo riscontro al form che prima non avevo. Poi che voi sappiate non c'è un modo per testare l'integrità di un file php?
Adesso mi da un errore sulla validità della mail, che però è la mail mia personale. Quindi non capisco se è un errore nel codice o nella funzine regex.
 
per verificare la mail puoi usare filter_var
PHP:
if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
        mailMsg('Fm');
    }
dovrebbe verificarne solo la sintassi, restituisce false se la mail non è scritta in modo corretto
 
deve andare a sostituire questa
PHP:
if (!eregi($validEmail, $mail)) {
            mailMsg(Fm);
        }
 
Ok ho provato a sostituire questa condizione ma il problema non cambia. Nonostante inserisca la mia mail personale e funzionante mi dice sempre email non valida. C'è una soluzione? Cosa potrei fare?
 
prova a ripostare il codice di processor.php aggiornato
 
Questo è il codice processor.php che sto utilizzando adesso. Ho modificato il pattern della funzione eregi e ci sto lavorando.
PHP:
<?php
function mailMsg ($status) {
	header('Location:OBIV_contatti.php?status=' .$status);	
	exit;
}

	$error = "C\'è stato un errore riprova!";

	if(isset($_POST['button'])) {
		$name = $_POST['name'];
		$mail = $_POST['mail'];
		$text = $_POST['messagge'];
		
		$name = htmlspecialchars(addslashes ($name));
		$mail = htmlspecialchars(addslashes ($mail));
		$text = htmlspecialchars(addslashes ($text));
		

		$validEmail = "^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$";

		if(empty($name) && empty($email) && empty($text)){
		mailMsg(Fn);
		} else {
		if (!eregi($validEmail,$mail)){ mailMsg(Fm);
		} else {
		$messagge = "Inviata da.\n Nome:".$name."\n E-mail:".$mail."\n Messaggio:".$text.
		"\n".$_SERVER['HTTP_USER_AGENT'];"\n".$_SERVER['REMOTE_ADDR'];"\n".$_SERVER['REQUEST_TIME'];
		$title = "Messaggio spedito dal sito www.solution-pony-express.com";
		$to = "[email protected]";
		$mailheader = "From: $mail";
		$mailheader = "Reply-To: $mail";
		error_reporting(0);
		mail($to, $title, $messagge, $mailheader) or die();
		mailMsg (T);
		header('Location:OBIV_contatti.php');
		}} 
		} else {
		mailMsg(F);
		}
	

?>
 
Io lo proverei cosi:
PHP:
<?php

function mailMsg($status) {
    header('Location:OBIV_contatti.php?status=' . $status);
    exit;
}

// questa a cosa ti serve?
// $error = "C\'è stato un errore riprova!";

if (isset($_POST['button'])) {
    $name = $_POST['name'];
    $mail = $_POST['mail'];
    $text = $_POST['messagge'];

    $name = htmlspecialchars(addslashes($name));
    $mail = htmlspecialchars(addslashes($mail));
    $text = htmlspecialchars(addslashes($text));

    // qui metti || al posto di &&
    if (empty($name) || empty($email) || empty($text)) {
        mailMsg('Fn');
        die();
    }
    if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
        mailMsg('Fm');
        die();
    }
    $messagge = "Inviata da.\n Nome:" . $name . "\n E-mail:" . $mail . "\n Messaggio:" . $text .
            "\n" . $_SERVER['HTTP_USER_AGENT'];
    "\n" . $_SERVER['REMOTE_ADDR'];
    "\n" . $_SERVER['REQUEST_TIME'];
    $title = "Messaggio spedito dal sito www.solution-pony-express.com";
    $to = "[email protected]";
    $mailheader = "From: $mail";
    $mailheader = "Reply-To: $mail";
    error_reporting(0);
    mail($to, $title, $messagge, $mailheader) or die();

    mailMsg('T');
    // questa non serve rimandi con mailMsg()
    // header('Location:OBIV_contatti.php');
} else {
    mailMsg('F');
}
?>
 
E' un avviso generale nel caso qualcosa non vada a buon fine. Nulla di specifico. Ho modificato la vecchia stringa con questa stringa nella speranza che tutto vada bene. mi dava errore con eregi.
PHP:
if (preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\" . 
		"(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$/i',$mail)){ mailMsg(Fm);
		}
Ho il problema adesso che una volta cliccato su invia la pagina ci mette una vita prima di darmi una risposta. :incazz2: E otengo pagina bianca
 
Problema risolto per l'invio della mail. Avevo dimenticato di aver cambiato la porta dell'smtp. Mail inviata e tutto ok.

Il mi onuovo problemino invece sta ne lconfigurare xampp in quanto non mi parte MySql! :o:o:byebye:
 
Perdonate il post insequenza, ma il problema non è su Mysql ma su apache che nonostante abbia installato da zero già tre volte non riesco a farlo partire. Inutile ogni tentativi di cambiare porta e disabilitare skype sulla porta 80 e 443. Suggerimenti?
 
Scusate ma non potendo modificare il post devo riscrivere un altro post. Problema risolto, ora funzona tutto, ho sistemato skype e reinstallato tutto da zero. Grazie a tutti. :byebye::quote::quote:
 

Discussioni simili