Form per offerte di lavoro

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="[email protected]";
$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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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
 

temino

Utente Attivo
22 Gen 2011
47
0
0
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="[email protected]";
		$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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
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
 

temino

Utente Attivo
22 Gen 2011
47
0
0
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:

temino

Utente Attivo
22 Gen 2011
47
0
0
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="[email protected]";  //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
Autore Titolo Forum Risposte Data
L form immagini per il database PHP 0
U PHP bottone per invio mail o ritorno al form PHP 15
T [PHP] Creare Honeypot per form contatti PHP 10
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
I Guida/Tutorial configurare PHPMailer per inviare mails tramite contact form? PHP 2
M [PHP] Framework per form complessi (configuratore prodotto) PHP 6
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
Z [MySQL] Campi corretti per form... MySQL 2
sandropochi [PHP] Form per creare filtro di ricerca su DB PHP 8
K [WordPress] Plugin per inserire un form per la ricerca in un database.. come si fa? WordPress 1
U [PHP] form per ricerca multipla: Unknown column 'undefined' in 'where clause' PHP 2
S Concatenare due campi di un form per creare un indirizzo web valido Javascript 7
xone Form completo Testi + multiple image per inserimento Annunci PHP 0
C Come posso integrare il bottone "paga adesso" di paypal e un form php per invio dati? PHP 1
A Form per modifica record database PHP 9
F aiuto per funzionamento sito responsive e form contatti HTML e CSS 29
elpirata Idee per personalizzare form HTML e CSS 9
L errore mysql per form di registrazione PHP 3
E Correzione per form PHP/HTML PHP 3
B Problema form mail per invio doppio allegato PHP 1
P Recupero dati per select form PHP 9
A Problema orario invio mail per form PHP 4
A consiglio uso jquery php per mostrare parte di un form PHP 6
A consiglio uso jquery per mostrare parte di un form jQuery 0
A Aiuto per Select form dinamica PHP 0
L come passare il campo allegato dal file html al fiel php per spedirlo con un form PHP 12
S Form per mandare la mail HTML e CSS 2
M [risolto] Script ajax per form e mappe Ajax 6
B aiuto per Form di eliminazione record PHP 21
asevenx form per formattare testo e inserirlo in databse PHP 1
U form mail per inviare tracciabilità corriere PHP 0
L Aiuto per ultimazione form invio email PHP 3
F Controlli form per Registrazione utenti PHP 9
A Pulsante per compilare una form php in automatico con dati presi da un db PHP 6
F Crear un form Contatti, per un Bed&Breakfast, dinamico, con Wordpress WordPress 3
A form in php o html per raccolta mail PHP 4
A da dove incominciare per fare vari form PHP 2
M Problema con form per accesso area riservata ai soci PHP 2
P Form per ricerca multipla in MYsql PHP 2
A problema con un semplice form per un loggin in php PHP 2
M Sicurezza dati form per insert e select in database PHP 11
C Aiuto per form PHP 5
A Aiuto per form email con allegato PHP 4
YellowMan Form mail per WordPress in italiano WordPress 2
P Mercatino Form annunci per regione Classic ASP 8
A Un input di tipo button deve per forza essere contenuto in un Form ?? HTML e CSS 6
R Altri controlii per windows form .NET Framework 2
asevenx problema con funzione per far apparire e scomparire un form di commenti PHP 1
G Inserire un campo mysql in un select per form PHP 3
L Problema e consiglio per form contatti particolare Classic ASP 2

Discussioni simili