Verifica form solo con php senza javascript

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ho un form sul quale sto facendo alcuni controlli, senza però javascript. Anche se oramai tutti lo usano vorrei che ci fosse la possibilità di fare gli stessi controlli ma solo con php.
Questo è il modulo per verificare il form, mi sapete dire se è tutto ok? Perchè quando clicco s invia senza compilare il form mi appare un errore.
PHP:
if(isset($_POST['invia'])){
	if($_SERVER['REQUEST_METHOD'] == 'POST'){
		//Filtro dati con MYSQLI
		$nome	 	= 		$mysqli->real_escape_string(trim($_POST['nome']));
		$cognome	= 		$mysqli->real_escape_string(trim($_POST['cognome']));
		$eta 		= 		$mysqli->real_escape_string(trim($_POST['eta']));
		$email 		= 		$mysqli->real_escape_string(trim($_POST['email']));
		$messaggio 	= 		$mysqli->real_escape_string(trim($_POST['messaggio']));

		//Funzione di controllo dell'inserimento dati corretti.
		function ver_testo($testo,$min,$max){
			//	$pattern="/^(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,15}){".$min.",".$max."}$/"; //Controllo lunghezza username tra 6 e 15 caratteri compresi i jolly
			$pattern="/^[a-zA-Z0-9]{".$min.",".$max."}$/";//non prende direttamente il min e il max
			if(preg_match($pattern, $testo)){
				//testo ok
				return TRUE;
			}else{
				return FALSE;
			}
		} //Chiudo funzione verifica lunghezza dati inseriti

		//preparo un messaggio a vuoto per gli errori
		$ok_ko="";
		$visibilità = "hidden";

		if(!ver_testo($nome,3,15)){
			$ok_ko.="Sei sicuro di aver inserito il nome correttamente? <br />";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if(!ver_testo($cognome,3,15)){
			$ok_ko.="Sei sicuro di aver inserito il cognome correttamente? <br />";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if(!isset($_POST['eta']) or (empty($_POST['eta']))){
			$ok_ko.="Ricordati di selezionare la tua età.<br />";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
			$ok_ko.="L'indirizzo email è assente o non è valido <br />";}
		if(!ver_testo($messaggio,3,500)){
			$ok_ko.="Hai dimenticato di scriverci dicosa hai bisogno.<br />";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}

se poi la variabile ok_ko è vuota allora procedo con l'invio della mail, il problema è che l'errore che mi da è
HTML:
 Notice: Undefined index: eta in contatti.php on line 72

che si riferisce a questa riga
PHP:
		$eta 		= 		$mysqli->real_escape_string(trim($_POST['eta']));

Mi sapreste dire dove sbaglio?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ho parzialmente sistemato, al momento hocorretto ogni singola riga mettendo la funzone isset davanti così:
PHP:
	if(!isset($_POST['nome']) && (!ver_testo($nome,3,15))){
			$ok_ko.="Sei sicuro di aver inserito il nome correttamente? <br />";
			echo "$ok_ko";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if(!isset($_POST['cognome']) && (!ver_testo($cognome,3,15))){
			$ok_ko.="Sei sicuro di aver inserito il cognome correttamente? <br />";
			echo "$ok_ko";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if(!isset($_POST['eta']) && (empty($_POST['eta']))){
			$ok_ko.="Ricordati di selezionare la tua età.<br />";
			echo "$ok_ko";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if(!isset($_POST['email']) && (!filter_var($email, FILTER_VALIDATE_EMAIL))){
			$ok_ko.="L'indirizzo email è assente o non è valido <br />";
			echo "$ok_ko";}
		if(!isset($_POST['messaggio']) && (!ver_testo($messaggio,3,500))){
			$ok_ko.="Hai dimenticato di scriverci dicosa hai bisogno.<br />";
			echo "$ok_ko";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}

il problema viene adesso perchè finalmente mi appaiono gli errori, ma mi appare solo l'errore della mail e non gli altri, sapete dirmi perchè?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Nessuno sa darmi una dritta. L'errore che mi da adesso è che nonostante tutti i controlli siano corretti l'unico avviso che mi da è quello relativo alla età, quindi lasciando il form vuoto e cliccando su invia l'errore che rileva è solo l'età mancante, e se la seleziono cerca di inviare la mail ma non manda nulla. Dove ho sbagliato?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ciao, purtroppo anche facendo come dici tu mi restituisce solo l'eta come errore mentre gli altri campi non me li considera proprio. Non so cosa fare. Navigo nel buio.

Questo è il codice
PHP:
	$email 		= 		$mysqli->real_escape_string(trim($_POST['email']));
		$messaggio 	= 		$mysqli->real_escape_string(trim($_POST['messaggio']));
		$nome	 	= 		$mysqli->real_escape_string(trim($_POST['nome']));
		$cognome	= 		$mysqli->real_escape_string(trim($_POST['cognome']));
		$eta 		= 		$_POST['eta'];

		
		if($nome=""){
			$ok_ko.="Sei sicuro di aver inserito il nome correttamente? <br />";
			echo "$ok_ko";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if($cognome=""){
			$ok_ko.="Sei sicuro di aver inserito il cognome correttamente? <br />";
			echo "$ok_ko";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if($messaggio=""){
			$ok_ko.="Sei sicuro di aver inserito il merx correttamente? <br />";
			echo "$ok_ko";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if($email=""){
			$ok_ko.="Sei sicuro di aver inserito il mail correttamente? <br />";
			echo "$ok_ko";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if(empty($eta)){
			$ok_ko.="Sei sicuro di aver inserito il eta correttamente? <br />";
			echo "$ok_ko";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
 

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.054
6
38
53
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
Fai questa prova...
PHP:
$email= $_POST['email'];
$messaggio=$_POST['messaggio'];
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$eta=$_POST['eta'];

        
        if($nome=""){
            echo "Sei sicuro di aver inserito il nome correttamente?";
        }
        if($cognome=""){
            echo "Sei sicuro di aver inserito il cognome correttamente?";
            }
        if($messaggio=""){
            echo "Sei sicuro di aver inserito il merx correttamente?";
            }
        if($email=""){
            echo "Sei sicuro di aver inserito il mail correttamente?";
           }
        if($eta=""){
            echo "Sei sicuro di aver inserito  l\'eta correttamente?";
            }
I controlli li affini quando non hai errori...
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Altro consiglietto non richiesto :D
Quando ricevi i dati con GET o POST fai sempre una verifica dei dati spuri, come ad esempio i caratteri di spazio all'inizio e alla fine delle stringhe.
Ecco:
PHP:
/**
*	Effettua il trimming dei dati passati alla funzione
*/
function trimValue(&$value) {
	if (!is_array($value)) $value = trim($value);
}	//	trimValue()

array_filter($_POST, 'trimValue');
In questo modo i dati non saranno mai spuri e un campo con solo un carattere di spazio non verrà validato come tale.
Poi venendo al tuo problema, io non farei l'escaping con msqli prima di verificare se un campo è vuoto o pieno, perché msqli realescape potrebbe aggiungere dei caratteri ( ti bastava fare una prova chiedendo il dump delle variabili dopo l'escaping ).
Altra cosa usa i filtri per l'escaping sono più sicuri, dato che l'ascaping non fa altro che aggiungere dei caratteri alle stringhe di caratteri "impuri" mentre i filtri ti permettono di controllare in modo più fine i dati in ingresso.
http://it2.php.net/manual/en/book.filter.php

PS perché odi tanto il javascript?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ragazzi intanto grazie. Appena rientro da lavoro provo.
Quanto a javascript non lo odio anzi, solo che mi piacerebbe avere le risposte degli errori anche senza js. Quindi testo sia con js sia senza.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
E' che con il javascript preventivamente dai la possibilità al client di avere un feddback immediato sui campi vuoti o scritti male, poi una volta inviati i dati fai anche il controllo lato server, in questo modo velocizzi l'uso del form da parte di un utente e anche lo script perché si trova i dati genericamente già puliti dai dati spuri.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Capito, solo che php lo capisco meglio e ci la v oro meglio, js mi è più ostico. E al momento lo.uso solo come interfaccia grafica. Diciamo che gli errori in php con js non li vedo. Almeno con le mie competenze.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Be non è difficile, ad esempio una routine che preveda il controllo dei campi vuoti in un form in puro JS può essere:
Codice:
function verifica(id) {
 var v = document.getElementById(id).value;
 if ( v == '' ) return false;
return true;
}

HTML:
<input type="text" id="pippo" name="pippo" value="" onblur="if ( !verifica( this.id )) this.focus();">
Non l'ho provata ma in pratica se non ho scritto castronerie :D appena tenti di lasciare il campo pippo senza scriverci nulla dentro, il js ti riporta dentro pippo, insomma non puoi più abbandonarlo :D

In Javascript non puoi vedere gli errori del PHP e viceversa.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Be non è difficile, ad esempio una routine che preveda il controllo dei campi vuoti in un form in puro JS può essere:
Codice:
function verifica(id) {
 var v = document.getElementById(id).value;
 if ( v == '' ) return false;
return true;
}

HTML:
<input type="text" id="pippo" name="pippo" value="" onblur="if ( !verifica( this.id )) this.focus();">
Non l'ho provata ma in pratica se non ho scritto castronerie :D appena tenti di lasciare il campo pippo senza scriverci nulla dentro, il js ti riporta dentro pippo, insomma non puoi più abbandonarlo :D

In Javascript non puoi vedere gli errori del PHP e viceversa.
Il codice che hai scritto è abbastanza chiaro e semplice, solamente che ho approcciato js più tardi di php quindi ho più dimestichezza, ovviamente sono due linguaggio diversi uno server side l'altro client side. Leggerò delle guide su js e jquery per capirlo meglio, hai per caso consigli?
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Il codice che hai scritto è abbastanza chiaro e semplice, solamente che ho approcciato js più tardi di php quindi ho più dimestichezza, ovviamente sono due linguaggio diversi uno server side l'altro client side. Leggerò delle guide su js e jquery per capirlo meglio, hai per caso consigli?
Non sono linguaggi diversi perché client o server side, dopotutto sono solo due linguaggi di scripting.
Il javascript è un linguaggio puramente oop, lo è anche quando cerchi di usarlo in modo procedurale, tu non lo sai ma lui trasforma tutto in un unico oggetto in cui le tue procedure sono i suoi metodi.
PHP cerca solo di farlo ma è un linguaggio procedurale con la possibilità di avere delle classi e quindi poter costruire oggetti, ma è ancora lontano dall'essere un linguaggio oop. Non che cambi molto la sostanza del discorso però, ovvero tutti e due servono a programmare una macchina :)
Se vuoi approcciarti seriamente ad un linguaggio come il javascript ti consiglio di studiare l'oop partendo da una buona guida: http://www.html.it/guide/guida-programmazione-orientata-agli-oggetti/ poi magari passerai ai libri, intanto puoi leggerti anche una guida sul javascript.
Se sai l'inglese parti alla grande, se sai solo l'italiano parti zoppo, perché noi italiani traduciamo poco e male, è più facile trovare una buona guida in devengari piuttosto che in italiano e forse è per questo che gli indiani programmano tanto e bene :)
Oggi javascript a livello professionale è molto usato anche per scrivere interfacce ( vedi ad esempio gli ambienti a finestre per gnu/linux ) ma anche e sopratutto per gestire sui server il bilanciamento di carichi elevati di traffico ( vedi Node.js ) che è scritto in javascript ( versione v8 lo stesso di Chrome ) ma non solo, vedi l'editor di programmazione Brackets tutto scritto in javascript usando Node.js tanto per citare :)
Certo se si usa javascript solo per controllare i dati in ingresso in un form può sembrare riduttivo vista la sua potenza di calcolo, ma non è certo tutto qui.
Se ti interessa ti do anche il consiglio di andare su MDN e vedere le nuove api per il dom, se sai manipolare quello, diventa tutto più semplice.
A questo punto PHP sembra solo un piccolo linguaggio di scripting nemmeno tanto efficiente, ma amabile però :D
 

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.054
6
38
53
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
Non sono linguaggi diversi perché client o server side, dopotutto sono solo due linguaggi di scripting.
Il javascript è un linguaggio puramente oop, lo è anche quando cerchi di usarlo in modo procedurale, tu non lo sai ma lui trasforma tutto in un unico oggetto in cui le tue procedure sono i suoi metodi.
PHP cerca solo di farlo ma è un linguaggio procedurale con la possibilità di avere delle classi e quindi poter costruire oggetti, ma è ancora lontano dall'essere un linguaggio oop. Non che cambi molto la sostanza del discorso però, ovvero tutti e due servono a programmare una macchina :)
Se vuoi approcciarti seriamente ad un linguaggio come il javascript ti consiglio di studiare l'oop partendo da una buona guida: http://www.html.it/guide/guida-programmazione-orientata-agli-oggetti/ poi magari passerai ai libri, intanto puoi leggerti anche una guida sul javascript.
Se sai l'inglese parti alla grande, se sai solo l'italiano parti zoppo, perché noi italiani traduciamo poco e male, è più facile trovare una buona guida in devengari piuttosto che in italiano e forse è per questo che gli indiani programmano tanto e bene :)
Oggi javascript a livello professionale è molto usato anche per scrivere interfacce ( vedi ad esempio gli ambienti a finestre per gnu/linux ) ma anche e sopratutto per gestire sui server il bilanciamento di carichi elevati di traffico ( vedi Node.js ) che è scritto in javascript ( versione v8 lo stesso di Chrome ) ma non solo, vedi l'editor di programmazione Brackets tutto scritto in javascript usando Node.js tanto per citare :)
Certo se si usa javascript solo per controllare i dati in ingresso in un form può sembrare riduttivo vista la sua potenza di calcolo, ma non è certo tutto qui.
Se ti interessa ti do anche il consiglio di andare su MDN e vedere le nuove api per il dom, se sai manipolare quello, diventa tutto più semplice.
A questo punto PHP sembra solo un piccolo linguaggio di scripting nemmeno tanto efficiente, ma amabile però :D

Definire php "piccolo linguaggio" mi sembra un pò riduttivo... (comunque ognuno ha le sue idee).
 
Discussioni simili
Autore Titolo Forum Risposte Data
MarcoGrazia Verifica di una stringa o di un nome proveniente da form Snippet PHP 0
S [PHP] Verifica dati tramite form e annullamento codice inserito PHP 7
MarcoGrazia Verifica della data inserita in un form ( utilizzando bootstrap ) Javascript 7
D Verifica inserimento dati form PHP 12
V verifica form jQuery 5
Virginia86 [risolto] Problema select e verifica form PHP 38
P Verifica form misto php e JS Javascript 2
P Verifica correttezza form PHP 8
Eugene Verifica campi form (select) tramite js Javascript 1
E Verifica dell'Età Javascript 0
G Problema verifica palindromo e verifica pari e dispari javascript Javascript 0
D verifica codice fiscale persona fisica /aziendale stesso campo HTML e CSS 1
F [PHP] Verifica utente presente nel DB PHP 13
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
Samuele Ronzani [PHP] Verifica se un dato esiste già PHP 1
S [Javascript] Verifica separatore decimale sistema operativo Javascript 2
felino EXCEL: verifica dati mancanti tra due sheet Windows e Software 2
A Verifica validità data in Java Java 2
kikki882 verifica account - dati personali Social Media Marketing 0
L Wordpress: consiglio plugin per "verifica disponibilità" WordPress 0
MarcoGrazia Verifica di un indirizzo email Snippet PHP 0
MarcoGrazia [PHP] Verifica dell'input utente tramite funzione generica. PHP 0
francesco87 [Vendo] Verifica pagina (bollino grigio) Annunci servizi di Social Media Marketing 0
M [PHP] Verifica formato data in tempo reale PHP 2
WebDr [Javascript] verifica input Javascript 8
R [WordPress] Accesso al db e verifica credenziali (password criptata) WordPress 1
A VENDO ACCOUNT DI DIVERSE PIATTAFORME E VERIFICA FACEBOOK ACCOUNT(PHOTO TAG VERIFICATION,VERIFICA TEL Annunci servizi di Social Media Marketing 2
P verifica caratteri per email e password PHP 17
S Verifica Esistenza Codice Fiscale PHP 5
C verifica e invio ordine php PHP 19
G verifica caricamento foto originali su social network o sito di hosting immagini Discussioni Varie 3
A Strumenti "ufficiali" per la verifica dei Cookie HTML e CSS 2
A verifica di proprietà bing webmaster tool Google Search Console 0
P verifica utente in db PHP 6
L [MySQL] Verifica disponibilità camera MySQL 32
L vendo account facebook femmina 5.000 amici con verifica cell e tag superati Annunci servizi di Social Media Marketing 0
filippino Verifica email per attribuzione dei contenuti SEO e Posizionamento 0
N Verifica email di registrazione PHP 0
D Verifica plug-in aggiornati di Firefox non vede gli aggiornamenti effettivi Windows e Software 0
il_bauscia Verifica segnale operatore 5ghz Reti LAN e Wireless 2
G php asincrono con ajax 2 campi di verifica PHP 1
P Problema ocon verifica campo in javascript Javascript 7
M Cosa ne pensate del mio primo file PHP (verifica disponibilità stanze)? PHP 0
M adsmanager e messaggio di verifica email Joomla 0
L verifica mail in db con jquery e ajax. Aiuto jQuery 9
asevenx modulo registrazione utenti, cicli if di verifica PHP 9
A Espressione Regolare per verifica stringa PHP 14
A verifica codice PHP 7
M Verifica HTTP o HTTPS PHP 1

Discussioni simili