[]

Üye kayıt - php

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  (26.05.12 09:29:34 ~ 09:32:31) 
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  (26.05.12 09:37:12) 
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  (26.05.12 09:42:27 ~ 09:49:49) 
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  (26.05.12 09:44:57) 
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  (26.05.12 09:47:51) 
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  (26.05.12 09:57:33) 
$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  (26.05.12 10:03:06) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.