Filtraggio dati input post in unica soluzione

  • Creatore Discussione Creatore Discussione Marco_88
  • Data di inizio Data di inizio

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
Ciao a tutti (di nuovo) secondo voi come posso "compattare" questo controllo?

PHP:
 //controllo sui dati inviati

	if ($_POST['registrazione'] == "Submit")  {


		$namesurname = trim(filter_var($_POST['nomecognome'], FILTER_SANITIZE_STRING));
		$email= trim(filter_var($_POST['email'], FILTER_SANITIZE_EMAIL));
		$username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));


		//verifico che i campi non siano vuoti se non lo sono procedo

		if ( (!isset($_POST['email'])) || ($_POST['email'] =='')  && (!isset($_POST['nomecognome'])) || ($_POST['nomecognome']) =='')  && (!isset($_POST['username'])) || ($_POST['username'] =='') {


			echo 'I campi sono tutti obbligatori';
				
		}


L'idea è di creare un'oggetto unico da inserire nel controllo if/else evitando così tutta quella complessità di codice, che peraltro neanche funziona.
All'inizio pensavo ad un array ma poi mi è sorto un dubbio: la variabile $_POST non è già un' array? al suo interno contiene già una chiave e un valore oppure lo si da nel momento che invii l'input post?
 
forse pensi a qualcosa di simile ?
PHP:
if ( empty($_POST['email'])
or   empty($_POST['nomecognome'])
or   empty($_POST['username']) ) { 
  echo 'I campi sono tutti obbligatori';
}
 
Ho un' altra domanda, leggendo sul W3C la vulnerabilità più diffusa sul web è l' SQL injection. Tra le righe si legge anche che è sconsigliabile vietare l'inserimento di alcune parole o caratteri come DROP o ''. Facendo un test banale usando gli esempi del sito ho notato che un comando tipo
Codice:
 SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers
viene registrato sul database ma poiché il campo che ho impostato può contenere solo 25 caratteri, tale comando viene "memorizzato" parzialmente.
Può essere sufficiente un'impostazione del genere per impedire di iniettare del codice malevolo?
 
scusa il ritardo ma febbre da virus influenzale e molto conFuso,

no perché il codice è inserito in formato esadecimale (per non essere riconosciuto) ed in questo caso non filtri proprio nulla
nel manuale del db che usi, verifica le istruzioni "bindparam", "bindvalue" et similia che sono il modo per evitare che codice non voluto venga esequito nella query
ciao
Marino
 

Discussioni simili