Girilen Şifrenin Doğru Formatta Olup Olmadığının Kontrolü [PHP - Regex]

Yazar:



PHP'de Regex yani Türkçe ifade edecek olursam "Düzenli İfadeler" konusuna göre PHP'de şifre kontrolü yapmak oldukça basit. Genel olarak bakıldığında düzenli ifadeler konusunun anlaşılması yeni başlayanlar için biraz karmaşık olabilir.

PHP'deki düzenli ifadeler (regex) konusunu daha iyi kavrayabilmeniz açısından sizlere www.phpliveregex.com sitesine benzer siteler üzerinden regex ifadeleri ile ilgili  pratik yapmanızı tavsiye ederim.


Şifre kontrolü, bir siteye kayıt olan kullanıcıların kişisel hesaplarının güvenliği açısından günümüzde büyük siteler tarafından çokça tercih edilen bir yöntemdir. En basitinden bir örnek vermem gerekirse, outlook.com üzerinden hesap açarken kendi kafanıza göre bir şifre belirleyemiyorsunuz. Kayıt olurken belirlediğiniz şifrenin, sistemin belirlediği şifre kurallarına uygun oluncaya kadar kayıt işleminiz tamamlanmıyor. Bu da kişisel olarak kullanıcıların güvenliği için oldukça önemli bir kontroldür aslında.

Bir üyelik sistemi tasarladık ve tasarladığımız bu üyelik sisteminde kullanıcının, kendi şifresini belirlerken şu şartlara uygun bir şifre girmesini isteyelim :

1) Şifre en az 8 karakter olmalı
2) Şifrede en az 1 tane büyük harf bulunmalı

Bu şartlara uyulmadığı takdirde sistem üyelik işlemini gerçekleştirmesin ve şifrenin uygun formatta olmadığına dair kullanıcıya uyarı mesajı verilsin.

Belirlediğimiz formata uygun bir şifrenin kontrolünü ise regex denilen düzenli ifadeler ile sağlayacağız. Bu yazıda elbette ki komple bir üyelik sistemini yapmayacağım. Sadece kayıt formuna şifre girildiği zaman, girilen bu şifrenin kontrolünün nasıl yapıldğını göstereceğim.





$kontrol = "/\S*((?=\S{8,})(?=\S*[A-Z]))\S*/"; 
kodunun açıklaması :


 \S{8,} ifadesine göre şifrenin en az 8 karkaterli olması gerektiğini belirttik. Virgülden sonra ise bir sınırlama koymadık. Yani en 8 karakter şartını sağladığı sürece, kullanıcı şifreyi istediği uzunlukta belirleyebilir.

(?=\S*[A-Z]) ifadesine göre şifre mutlaka bir büyük harf içersin istiyoruz. İşin mantığı ise şudur, karakter olarak klavyeden ne gelirse gelsin hiç önemli değil. Önemli olan yazılan şifre içinde en azından 1 tane büyük harf olmasıdır.

\S ifadesi boşluk dışındaki herhangi bir karakteri bulur. (Boşlukları görmezden gelir.)
\s ifadesi boşluk (space) bulur.
* (yıldız) ifadesi bir karakterin birden çok kez tekrar edebiliceğini belirtiyor.

Normal şartlarda, yakalamak istediklerimiz parantez için yazılır. fakat istediğimiz şifrede "NE GELİRSE GELSİN HİÇ ÖNEMLİ DEĞİL AMA BU İFADE MUTLAKA OLSUN!" diyebileceğimiz karakterler de olabilir. Bu tür ifadeler için soru işareti kullanılır. Örneğin; (?= ... ) gibi.

Bu konuyla ilgili benim anlatacaklarım bu kadar. Şifre kontrolü ile ilgili Blogkafem dışında kapsamlı bir anlatım yapan bir site ile karşılaşmadığım için bunun da anlatımını ben yapayım dedim. Umarım PHP'ye yeni başlayan arkadaşlara faydalı olur. Öneri, istek, görüş ve düşüncelerinizi aşağıdaki yorum formuna yazabilirsiniz. Hepinize hatasız ve tıkır tıkır çalışan kodlamalar dilerim. :)

0 yorum:

Yorum Sayfası :


Yorum formuna konuyla ilgili görüş ve sorularınızı bırakabilirsiniz.

Yorumunuza mümkün olan en kısa sürede dönüş yapılacağından emin olabilirsiniz.


Eklenen yorumlar, moderatör onayından sonra yayınlanmaktadır.

BLOGKAFEM.NET © Copyright 2008-2023
Sitedeki yazıların her hakkı BLOGKAFEM.NET sitesine aittir.
Kopyalanması halinde lütfen kaynak gösteriniz.
DMCA.com Protection Status
Anasayfa | Hakkında | İletişim