function suzgec($veri)
{
$veri = addslashes($veri);
$veri = mysql_real_escape_string($veri);
$veri = strip_tags ($veri);
return $veri;
}
$kadi = suzgec($_POST["kadi"]);
$say = mysql_num_rows(mysql_query("select * from uyeler where kadi='".$kadi."'"));
if($say > 0){
echo "kadi var";
}else{
$kadi_kontrol = str_replace( ' ', '', $kadi );
if(strlen($kadi_kontrol)>4){
if(strlen($kadi_kontrol)>20){
echo "kadi uzun";
}else{
echo "kadi ok";
}
}else{
echo "kadi kisa";
}
bu farklı karakter yoğunluklu nick alınmasını nasıl önlerm?
suzgec'in en başına trim($veri); ekle. bu sayede başında sonunda olan boşlukları silersin.
edit: str_replace ile boşluk temizlemişsin ama bu durumda 'ahmet mehmet' şeklindeki kullanıcı adı 'ahmetmehmet' olur buna gerek yok. trim yeterli olur senin için.
php.net
kanka böyle yapıldığında da
' '
şeklinde kullanıcı seçtiğimizde kabul ediyor. acaba nette genel bir fonksiyon var mıdır bu tip ihtimalleri ortadan kaldıran
eğer kullanıcı adı metin ve rakamdan oluşacaksa ctype_alnum da iş görür. aklıma empty fonksiyonu da olur gibi geldi. bir kontrol edeyim ben de.
edit: dediğim gibi ctype_alnum iş görüyor. www.php.net şu linkte de en altta olan örnek güzel.
$sUser = 'my_username01';
$aValid = array('-', '_');
if(!ctype_alnum(str_replace($aValid, '', $sUser))) {
echo 'Your username is not properly formatted.';
}
sen de bu şekilde istediğin gibi gelen veriyi formatlamış olursun.
hacı kabul etmemesi gerekiyor da if elseyi abartmışın sanki.
if(strlen($kadi)>4 && strlen($kadi)<20)){
echo $kadi;
} else {
echo "yok";
}
kanka o önemli değil yav onları falan elden geçireceğim de, kullanıcı adı filtrelemesini tam olarak düzeltmeliyim önce.
yani başında tırnak içi boşluk ve sonunda tırnak olan yapıları kabul ediyor. anlamadım bu işi.
ctype_alnum işe yaradı ama bu sefer o da 2 kelimeli nickleri kabul etmiyor. en olmadı tek kelimeden oluşmasını sağlayacağım nicklerin napalım.
hacı ' ' dan kastını ben boşluk olarak algılıyorum. onların karakter olduğunu daha şimdi söyleyince fark ettim.
Bu durumda regexp ile sadece karakter ve rakam girmelerine izin verebilirsin ^[a-z0-9_-]{4,20}$ işini görür heralde.
$string1 = '%something';
$string2 = 'some%hing';
$string3 ='somethin%';
$string4 ='something else';
if(preg_match('/[^a-z0-9 ]/i', $string4)){
echo 'contains illegal char';
}else{
echo 'only letters spaces or numbers';
}
şu örnek işini görür gibi