arkadaşlar filtreleme yapıyorum kayıt alırken. ancak bir sorun var: ' ' şeklinde bir üye kaydı kabul edilebiliyor. ya da ' a ' şeklinde. böyle kayıtlar yapılamamasını istiyorum. Yani iki kelimeden oluşan bir kullanıcı alabilsin, sorun yok. Ancak çoğu boşluktan, acaip harflerden oluşan bir şey alamasın. Şuan şöyle bir filtreleme yapıyorum:
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

bir kac yazar once

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

tchuck

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.

raif_efendi

hacı kabul etmemesi gerekiyor da if elseyi abartmışın sanki.

if(strlen($kadi)>4 && strlen($kadi)<20)){
echo $kadi;
} else {
echo "yok";
}

bir kac yazar once

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.

tchuck

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.

bir kac yazar once

$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

raif_efendi
1

mobil görünümden çık