Form per offerte di lavoro

  • Creatore Discussione Creatore Discussione temino
  • Data di inizio Data di inizio

temino

Utente Attivo
22 Gen 2011
47
0
0
Salve a tutti, devo realizzare un form in php che permetta l'inserimento dei campi:
Azienda/Datore di lavoro
Luogo di Lavoro
Telefono
Email
Descrizione

Pensavo di adattarci il form relativo all'invio delle email visto che dopo l'inserimento il tutto mi dovrà venire inoltrato tramite email per una verifica pre-inserimento.

Per quanto riguarda il form ho provveduto a realizzarlo così:
<div>
<form method='post' action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>'>
<p> Azienda/Datore di Lavoro</p>
<input type=text name="realname">
<p> Luogo di Lavoro</p>
<input type=text name="luogo">
<p> Telefono</p>
<input type=text name="telefono">
<p>Email:</p>
<input type=text name="email">
<p>Messaggio:</p>
<textarea name="messaggio" cols="50" rows="5"></textarea>
<br/>
<br/>
<input type="Submit" value="Invia" name="invio">

</form>
</div>

Ora però dovrei adattare il codice php in modo da avere, oltre ai controlli già presenti, dei nuovi controlli sia sul luogo di lavoro (il campo non deve essere vuoto) e sul numero di telefono (solo valori numerici o spazi) e il tutto deve venire inviato tramite email.
Allego qui sotto il codice funzionante per il form contatti, ovvero il codice che dovrà essere adattato a questa nuova esigenza.

<?php

function valida_email($em){
$em=filter_var($em, FILTER_SANITIZE_EMAIL);
if(!filter_var($em, FILTER_VALIDATE_EMAIL)){
return "*#*";
}else{
return $em;
}
}
function valida_nome($no){
$no=trim($no);
$no=strip_tags($no);
if($no==""){
return "*#*";
}else{
return $no;
}
}
function valida_testo($tx){
$tx=trim($tx);
$tx=strip_tags($tx, "<br> <p>");
if($tx==""){
return "*#*";
}else{
return $tx;
}
}
if(isset($_POST['invio'])){
$ok_ko.="";
$nome=$_POST['realname'];
$email=$_POST['email'];
$messaggio=$_POST['messaggio'];
$nome=valida_nome($nome);
if($nome=="*#*"){
$ok_ko.="<br>NON hai inserito il tuo nome e cognome<br/><br/>";
}
$email=valida_email($email);
if($email=="*#*"){
$ok_ko.="<br>NON hai inserito l'indirizzo email o errato<br/><br/>";
}
$messaggio=valida_testo($messaggio);
if($messaggio=="*#*"){
$ok_ko.="<br>NON hai inserito il testo<br/><br/>";
}
if($ok_ko==""){

$destinatiario="mic-flo@hotmail.it";
$inviata_il="email inviata il ".date("")."<br>";
$inviata_da="email da: ".$nome."<hr>";
$oggetto = "Nuova Oferta di Lavoro - INFORMAGIOVANI UMBERTIDE";
$testo=$inviata_il.$inviata_da.nl2br($messaggio);
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: $nome <$email>" . "\r\n";
if(mail($destinatiario,$oggetto,$testo,$headers)){
$ok_ko.="<center><br>Grazie per averci contattato<br>riceverai una risposta al piu' presto <br/><br/><center>";
}else{
$ok_ko.="<center><br>c'&eacute; stato un errore di trasmissione: riprova pi&ugrave; tardi <br/><br/></center>";
}

}
echo $ok_ko;
echo "<meta http-equiv='Refresh' content='30; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
?>

Spero che qualcuno mi sappia dare una mano, visto che di php non ne capisco molto!

grazie in anticipo
 
ciao
potresti aggiungere tra le funzioni quella che valida il numero di telefono.
(forse esiste di meglio)

PHP:
<?php
//.......
function valida_tel($te){ 
	$te=trim($te); 
	//$te=strip_tags($te);//non serve perchè verifico carattere per carattere
	$te=str_replace(" ","",$te);//tolgo tutti gli spazi tanto non servono
	$l=strlen($te);
	//considero che un numero di telefono debba essere lungo minimo 7 massimo 15 caratteri numerici
	//valori comunque da verificare
	if($l < 7 || $l > 15{//troppo corto o troppo lungo
		$te="";
	}else{
		for($k=0;$k < $l;$k++){//analizzo i caratteri uno per uno
			if($te[$k] < "0" || $te[$k] > "9"){//se incontro un carattere non ammesso
				$te="";
				break;//vuoto ed esco dal ciclo
			}
		}
	}
	if($te==""){ 
		return "*#*";
	}else{ 
		return $te;
	} 
}
//....
?>
poi dove fai i controlli aggiungi.
per verificare il luogo puoi usare la funzione esistente valida_nome
PHP:
<?php
//....
$telefono=$_POST['telefono'];
$telefono=valida_tel($telefono); 
if($telefono=="*#*"){
$ok_ko.="<br>NON hai inserito un numero di telefono valido"; 
} 
//mentre per validare la località potresti usare la funzione esistente valida_nome
$luogo=$_POST['luogo'];
$luogo=valida_nome($luogo);
if($luogo=="*#*"){
$ok_ko.="<br>NON hai inserito una località"; 
} 
?>
poi nella sezione in cui prepari il messaggio ti convire modificare queste rige
PHP:
<?php
//....
$inviata_il="email inviata il ".date("")."<br>";
$inviata_da="email da: ".$nome."<hr>"; 
$oggetto = "Nuova Oferta di Lavoro - INFORMAGIOVANI UMBERTIDE";
$testo=$inviata_il.$inviata_da.nl2br($messaggio); 
//...
?>
così
PHP:
<?php
//...
$inviata="email inviata il ".date("")."<br>";
$inviata.="email da: ".$nome."<br>";
$inviata.="telefono: ".$telefono."<br>";
$inviata.="luogo: ".$luogo."<hr>";
$oggetto = "Nuova Oferta di Lavoro - INFORMAGIOVANI UMBERTIDE";
$testo=$inviata.nl2br($messaggio);
//...
?>
inoltre due osservazioni, hai messo content='30; non ti semprano troppi 30 secondi di attesa?
e vicino all'input del numero scrivi che sono ammessi solo numeri e non es. 0521/333333 o (02)444444

p.s.
verifica comunque che abbia scritto i nomi delle varie variabili come servono a te
 
Ciao, grazie per la risposta... ho fatto come mi hai detto, ma mi esce un errore... sembrerebbe che ci voglia una parentesi graffa in più ... non è che potresti ricontrollamri il codice??? ti ringrazio in anticipo!
HTML:
<?php 


function valida_tel($te){  
	$te=trim($te);  
	//$te=strip_tags($te);//non serve perchè verifico carattere per carattere 
	$te=str_replace(" ","",$te);//tolgo tutti gli spazi tanto non servono 
	$l=strlen($te); 
	//considero che un numero di telefono debba essere lungo minimo 7 massimo 15 caratteri numerici 
	//valori comunque da verificare 
	if($l < 7 || $l > 15{//troppo corto o troppo lungo 
		$te=""; 
	}else{ 
		for($k=0;$k < $l;$k++){//analizzo i caratteri uno per uno 
			if($te[$k] < "0" || $te[$k] > "9"){//se incontro un carattere non ammesso 
				$te=""; 
				break;//vuoto ed esco dal ciclo 
			} 
		} 
	} 
	if($te==""){  
		return "*#*"; 
	}else{  
		return $te; 
	}  
} 


function valida_email($em){
	$em=filter_var($em, FILTER_SANITIZE_EMAIL); 
	if(!filter_var($em, FILTER_VALIDATE_EMAIL)){ 
		return "*#*";
	}else{ 
		return $em; 
	} 
} 
function valida_nome($no){ 														
	$no=trim($no); 
	$no=strip_tags($no);
	if($no==""){ 
		return "*#*";
	}else{ 
		return $no;
	} 
} 
function valida_testo($tx){ 
	$tx=trim($tx); 
	$tx=strip_tags($tx, "<br> <p>"); 																
	if($tx==""){ 
		return "*#*";
	}else{ 
		return $tx;
	} 
	
	$telefono=$_POST['telefono']; 

} 															
if(isset($_POST['invio'])){
	$ok_ko.=""; 
	$nome=$_POST['realname']; 
	$email=$_POST['email']; 
	$messaggio=$_POST['messaggio']; 																 
	$nome=valida_nome($nome); 
	if($nome=="*#*"){ 
		$ok_ko.="<br>NON hai inserito il tuo nome e cognome<br/><br/>"; 
	} 
	$email=valida_email($email); 
	if($email=="*#*"){
		$ok_ko.="<br>NON hai inserito l'indirizzo email o errato<br/><br/>"; 
	} 
	$messaggio=valida_testo($messaggio); 
	if($messaggio=="*#*"){
		$ok_ko.="<br>NON hai inserito il testo<br/><br/>"; 
	} 
	
	$telefono=$_POST['telefono']; 
	$telefono=valida_tel($telefono);  
	if($telefono=="*#*"){ 
	$ok_ko.="<br>NON hai inserito un numero di telefono valido";  
	}  
	//mentre per validare la località potresti usare la funzione esistente valida_nome 
	$luogo=$_POST['luogo']; 
	$luogo=valida_nome($luogo); 
	if($luogo=="*#*"){ 
	$ok_ko.="<br>NON hai inserito una località";  
	}  


	
	if($ok_ko==""){ 
																			
		$destinatiario="mic-flo@hotmail.it";
		$inviata="email inviata il ".date("")."<br>"; 
		$inviata.="email da: ".$nome."<br>"; 
		$inviata.="telefono: ".$telefono."<br>"; 
		$inviata.="luogo: ".$luogo."<hr>"; 
		$oggetto = "Nuova Oferta di Lavoro - INFORMAGIOVANI UMBERTIDE"; 
		$testo=$inviata.nl2br($messaggio);   
		$headers  = "MIME-Version: 1.0" . "\r\n"; 
		$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n"; 
		$headers .= "From: $nome <$email>" . "\r\n"; 
		if(mail($destinatiario,$oggetto,$testo,$headers)){ 
			$ok_ko.="<center><br>Grazie per averci contattato<br>riceverai una risposta al piu' presto <br/><br/><center>"; 
		}else{ 
			$ok_ko.="<center><br>c'&eacute; stato un errore di trasmissione: riprova pi&ugrave; tardi <br/><br/></center>"; 
		}  
		 
	} 
	echo $ok_ko; 																 
	echo "<meta http-equiv='Refresh' content='30; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
																} 
?>


<!-- parte riservata al form  -->
<div>
<form method='post' action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>'>
<p> Nome e Cognome:</p>
<input type=text name="realname">
<p>Email:</p>
<input type=text name="email">
<p>Messaggio:</p>
<textarea name="messaggio" cols="50" rows="5"></textarea>
<br/>
<br/>
<input type="Submit" value="Invia" name="invio">
<br/><br/><br/><br/><br/><br/><br/><br/><br/>
</form>
</div>
 
Ultima modifica:
ciao
sto cercando do spulciare:
l'unica cosa che per ora vedo è che hai messo
$telefono=$_POST['telefono'];
all'interno della function valida_testo
toglilo
non vedo graffe che mancano,
fai un lavoretto di pazienza: conta le graffe (aperte e chiuse) una prima indicazione per sapere se sono giuste è che il loro numero deve essere un numero pari

poi domani guardo meglio e ti so dire (spero), anche se la nuova function valida_tel() è giusta analogamente i due if per la verifica del telefono e luogo, quindi se funzianava prima non capisco perchè dia errore adesso
 
Allora... le graffe sono 25 aperte e 25 chiuse...

quella riga di codice l'ho tolta... l'errore che mi da è:
Parse error: syntax error, unexpected '{' in /membri/micflo/lavoro-offro.php on line 237

e la riga 237 a cui fa riferimento il codice è

inserita nel contesto

function valida_tel($te){
$te=trim($te);
//$te=strip_tags($te);//non serve perchè verifico carattere per carattere
$te=str_replace(" ","",$te);//tolgo tutti gli spazi tanto non servono
$l=strlen($te);
//considero che un numero di telefono debba essere lungo minimo 7 massimo 15 caratteri numerici
//valori comunque da verificare
if($l < 7 || $l > 15{//troppo corto o troppo lungo
$te="";
}else{
for($k=0;$k < $l;$k++){//analizzo i caratteri uno per uno
if($te[$k] < "0" || $te[$k] > "9"){//se incontro un carattere non ammesso
$te="";
break;//vuoto ed esco dal ciclo
}
}
}
if($te==""){
return "*#*";
}else{
return $te;
}
}

(è la riga sotto la prima if)

spero che le info che ti ho dato siano utili a trovare l'errore! intanto ricontrollo il codice!

Se ne vengo a capo ti faccio sapere!


-ore 23.57 - Trovato l'errore!!! manca la parentesi chiusa nella condizione della prima if. Provo il tutto e ti faccio sapere!
 
Ultima modifica:
funzionaaaaaa!!!!! posto quì di seguito il codice FUNZIONANTE del form per offerte di lavoro, magari potrà essere utile a qualcuno in futuro! - Grazie 1000 per l'aiuto!! alla prossima :mavieni:
HTML:
<?php 


function valida_tel($te){  
	$te=trim($te);   
	$te=str_replace(" ","",$te); 
	$l=strlen($te);
	if($l < 7 || $l > 15){ 
		$te=""; 
	}else{ 
		for($k=0;$k < $l;$k++){
			if($te[$k] < "0" || $te[$k] > "9"){
				$te=""; 
				break;
			} 
		} 
	} 
	if($te==""){  
		return "*#*"; 
	}else{  
		return $te; 
	}  
} 


function valida_email($em){
	$em=filter_var($em, FILTER_SANITIZE_EMAIL); 
	if(!filter_var($em, FILTER_VALIDATE_EMAIL)){ 
		return "*#*";
	}else{ 
		return $em; 
	} 
} 
function valida_nome($no){ 														
	$no=trim($no); 
	$no=strip_tags($no);
	if($no==""){ 
		return "*#*";
	}else{ 
		return $no;
	} 
} 
function valida_testo($tx){ 
	$tx=trim($tx); 
	$tx=strip_tags($tx, "<br> <p>"); 																
	if($tx==""){ 
		return "*#*";
	}else{ 
		return $tx;
	} 
	
	 

} 															
if(isset($_POST['invio'])){
	$ok_ko.=""; 
	$nome=$_POST['realname']; 
	$email=$_POST['email']; 
	$messaggio=$_POST['messaggio']; 																 
	$nome=valida_nome($nome); 
	if($nome=="*#*"){ 
		$ok_ko.="<br>NON hai inserito il tuo nome e cognome<br/><br/>"; 
	} 
	$email=valida_email($email); 
	if($email=="*#*"){
		$ok_ko.="<br>NON hai inserito l'indirizzo email o errato<br/><br/>"; 
	} 
	$messaggio=valida_testo($messaggio); 
	if($messaggio=="*#*"){
		$ok_ko.="<br>NON hai inserito il testo<br/><br/>"; 
	} 
	
	$telefono=$_POST['telefono']; 
	$telefono=valida_tel($telefono);  
	if($telefono=="*#*"){ 
	$ok_ko.="<br>NON hai inserito un numero di telefono valido";  
	}  
	
	$luogo=$_POST['luogo']; 
	$luogo=valida_nome($luogo); 
	if($luogo=="*#*"){ 
	$ok_ko.="<br>NON hai inserito una località";  
	}  


	
	if($ok_ko==""){ 
																			
		$destinatiario="TUOINDIRIZZOEMAIL@DOMINIO.IT";  //INSERISCI IL TUO INDIRIZZO EMAIL
		$inviata="email inviata il ".date("")."<br>"; 
		$inviata.="email da: ".$nome."<br>"; 
		$inviata.="telefono: ".$telefono."<br>"; 
		$inviata.="luogo: ".$luogo."<hr>"; 
		$oggetto = "TITOLO DEL MESSAGGIO DI POSTA";   //INSERISCI IL TITOLO DEL MESSAGGIO 
		$testo=$inviata.nl2br($messaggio);   
		$headers  = "MIME-Version: 1.0" . "\r\n"; 
		$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n"; 
		$headers .= "From: $nome <$email>" . "\r\n"; 
		if(mail($destinatiario,$oggetto,$testo,$headers)){ 
			$ok_ko.="<center><br>Grazie per averci contattato<br>riceverai una risposta al piu' presto <br/><br/><center>"; 
		}else{ 
			$ok_ko.="<center><br>c'&eacute; stato un errore di trasmissione: riprova pi&ugrave; tardi <br/><br/></center>"; 
		}  
		 
	} 
	echo $ok_ko; 																 
	echo "<meta http-equiv='Refresh' content='30; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
																} 
?>


<!-- parte riservata al form  -->
<div>
	<form method='post' action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>'>
		<p> Azienda/Datore di Lavoro</p>
		<input type=text name="realname">
		<p> Luogo di Lavoro</p>
		<input type=text name="luogo">
		<p> Telefono</p>
		<input type=text name="telefono">
		<p>Email:</p>
		<input type=text name="email">
		<p>Messaggio:</p>
		<textarea name="messaggio" cols="50" rows="5"></textarea>
		<br/>
		<br/>
		<input type="Submit" value="Invia" name="invio">
	</form>
</div>
 

Discussioni simili