problemi preg_match

  • Creatore Discussione Creatore Discussione lewis
  • Data di inizio Data di inizio

lewis

Nuovo Utente
10 Ott 2012
2
0
0
Salve, vorrei bloccare tutti i testi che contengono caratteri(come html ecc) esempio: <script>alert("XSS Code")</script>

Ho provato a fare cosi:

PHP:
if(!preg_match('/^[a-z0-9]+$/i', $testo))
{
die("The text contains invalid characters");
}


però non funziona, vorrei bloccare i caratteri come <> '' "" ecc però non voglio bloccare caratteri come ? ! ... o la punteggiatura ecc.
Potete gentilmente aiutarmi? grazie
 
Ultima modifica di un moderatore:
Ciao,
puoi usare strip_tags()
esempio:
PHP:
$testo = "<p><script>Ciao</p></script>";
echo strip_tags($testo);
 
ciao
prova qualcosa del genere
PHP:
<?php
function cerca($str){
	$non_ammessi=array("<script>", "<a"); //qui elenchi quelli che vuoi
	foreach($non_ammessi as $val){
		if(strpos($str,$val) === 0 || strpos($str,$val)> 0){//ha trovato qualcosa, attenzione non usare == , ma === per anche tipo
			return FALSE;
		}
	}
	return TRUE;
}
//test
$stringa="<script> nel mezzo di camin di nostra vita";
if(cerca($stringa)){
	echo "non contiene caratteri proibiti<br>";
}else{
	echo "con caratteri non consentiti<br>";
}
$stringa="nel mezzo di <a href='#'>camin</a> di nostra vita";
if(cerca($stringa)){
	echo "non contiene caratteri proibiti<br>";
}else{
	echo "con caratteri non consentiti<br>";
}
$stringa="nel mezzo di camin di nostra vita";
if(cerca($stringa)){
	echo "non contiene caratteri proibiti<br>";
}else{
	echo "con caratteri non consentiti<br>";
}
?>
 

Discussioni simili