HTML ve noktalama karışımı ile kullanıcı girişi işlemek nasıl?

2 Cevap php

I HTML ve metnin bir karışımını içeren bir form alanı vardır. I want users to be able to use basic HTML ve noktalama.

Şu anda mysql_real_escape_string kullanıyorum ve preg_replace verileri dezenfekte ve veritabanına eklemek için. Benim anlayış preg_replace izin karakterlerin beyaz listesinde olmayan ve mysql_real_escape_string SQL enjeksiyon koruyan herhangi bir karakter şerit için en iyi yol olduğunu.

//How I collect and sanitise the data...
$var=mysql_real_escape_string(
 preg_replace("/[^A-Za-z0-9-?!$#@()\"'.:;\\@,_ =\/<> ]/",'',$_POST['var'])
);

Ancak, bu karma karakter kullanıldığı zaman kırma tutar.

Benim sorular şunlardır:

1) bunu yapmak için daha etkili bir yolu var mı?

Bu en iyi yolu ise 2), ben yanlış ne yapıyorum?

Bütün alfanümerik karakterler ve: ben izin vermek gerekir karakterler:

? ! @ # $ % & ( ) - . , : ; ' " < > / + =

Teşekkürler!

2 Cevap

Olmayan birçok alfanümerik karakterleri regex özel anlamlara sahip olduğundan, hepsi kaçmak gerekir. Bu yüzden

preg_replace("/[^A-Za-z0-9-?!$#@()\"'.:;\\@,_ =\/<> ]/",'',$_POST['var']) 

olur (muhtemelen orada kaçan gerekmez birkaç vardır, ama ona zarar vermez)

preg_replace("/[^A-Za-z0-9-\?\!\$\#\@\(\)\"\'\.\:\;\\@\,\_ \=\/\<\> ]/",'',$_POST['var']) 

Neden sadece strip_tags () kullanın ve ihtiyacınız etiketleri ile sınırlamak değil?

strip_tags ($str,"<br>")

Daha sonra oldukça invaziv olmayan diğer "sanitasyon" yapabilirdi.