[SORU]Php Üye Girişi İlgili
-
Selamlar
Çalıştığım hosting firmasının sunucusunda session ile ilgili çok sorun yaşadım. Örnek üye girişi yaparken bazen session değerini oluşturmuyordu.
Neyseki şöyle bir alternatif bir yol izledim.Dbye oturumlar diye bir tablo açtım içinde oturum_sahip,oturum_deger vs ip v tarih bilgisini tutan kolonlar açtım.
İzlediğim yol şuydu kullanıcı ilk siteyi ziyaret ettiğinde kontrol diye bir cooike oluşturdum. Bu cooike değeri ister üye olsun olmasın eğer yoksa oluşturuyordu.Bunun amacı tarayıcının cooike desteğini anlamaktı eğer Cooike Oluşturulmadıysa üye girişi yapacagı zaman post ettikten sonra girişi yaptımayıp tarayıcının cooike desteğini olmadıgını kontrol ettiriyorum.
Eğer cooike varsa dbden uye bilgileri sorgulatıp doğru bilgiler verildiğinde benzersiz bir değer oluşturup bu değeri oturumlar tablosundaki oturum değer kısmına atayıp oturumu açtırıyordum.
Şöyleki oturumlar tablosunda bir üyeyew sahip tek satır olması için önceden giriş yapmışsa değeri ve giriş tarihini güncelleyip devam ediyordu.
Şimdi artıları ne oldu1- Sessionlardan kurtuldum ve tmp dizinin şişmesini engelledim (Özellikle share hosting sunucularında sıkıntı yaratıyor)
2- Dbye kaydettiğimden hangi oturum değeri ve hangi iple ve ne zaman kim giriş yapmış adminden kontrol edebiliyorum.
3- Cooike ile daha satil ve daha pratik işlemin kontrolü elimde oluyor.
eksileri
- Giriş yapmışmı yapmamısmı olayını dbden sürekli sorgulumak zorunda kalıyorum. (Simdiye kadar pek bir performans sorunun görmedim)
- Aynı anda multi oturum açılamıyor.
Güvenlik
- İp ve cooikedeki değer dbdeki bilgilerle eşitlenmezse oturumu kapatıyor.
cooike bilgileri çalınsa bile ip eşit olamayacağı için kolay kolay bilgiler bilinmeden giriş yapamazlar.Örnek giriş kontrol dosyam
$cerez = f($_COOKIE["oturumcerezx"]); // /*---------------------------Üye Giriş Kontrolü------------------------------*/ $oturum = $db->get_row("SELECT oturumlar.oturum_sahip, oturumlar.oturum_deger, uyeler.uye_ad, uyeler.uye_soyad FROM oturumlar INNER JOIN uyeler ON uyeler.uye_id = oturumlar.oturum_sahip WHERE oturum_ip='$ip' AND oturum_deger='$cerez'"); if(empty($cerez) || empty($oturum->oturum_deger)){ // çerez varmı $uyeid = 0; $uyead = ''; }elseif(!$oturum){ // oturum gelmişmi $uyeid = 0; $uyead = ''; }else{ $uyeid = (int)$oturum->oturum_sahip; $uyead = strto('ucwords', ss($oturum->uye_ad)).' '.strto('upper', ss($oturum->uye_soyad)); } /*---------------------------Üye Giriş Kontrolü SONNNN------------------------------*/
Misal bir üyenin giriş yapıp yapmadıgı üye üye idye göre yaptırıyorum.
Bunları yazmamın sebebi 2-3 gündür doğru bir yolmu izliyorum diye düşünmem ve size danşmak istedim.
Ters olan bir şeyler varmı veya bunun yerine sunucu değiştirip session ilemi yapmam mantıklıdır ? -
Veritabanini yormak bana göre mantıksız. Yarın siten cok buyudugunde bunun sıkıntılarını yaşarsın. Ayrica olasi ip değişiminde kullanıcı düşecek. Bana göre stabil çalışan bi sunucuya geçmen mantıklı olacaktır.
-
Hocam valla kulağını tutmak için ters elini baya gezdirmek gibi bir durum olmuş.
- db den sürekli sorgu yaptırmak kodların ne kadar temiz olsa da giriş çıkış fazla olduğu zaman sorun çıkaracaktir (session desteğini bile tam veremeyen bir hosting firması nda buna hiç sasirmam )
- Eger giriş denemelerinde captcha vs güvenlik önlemlerin yoksa muhtemel saldırılara açık olacaktır
- cookie bilgilerini neye göre olusturuyorsun onu anlamadım , ve cookie bilgisi üye girişi için bir parametre mi ?
Son olarak session destekleyen bir hosting e geçerdim ben olsam
-
Session'lar neden çalışmıyor peki? Bunun sebebini bulsaydın işin daha kolay olurdu.
-
@Tolgasen
Teşekkür bunu uygulayacağım.
@coder2hocam şimdi oturumcerezx değeri ile dbdeki değer aynı olacak ve oturum başarılı olmuş oluyor değeride rastgele uniqieid ile oluşturuyorum
Bencede hosting firması değiştirmek iyi olacak@NoktaliVirgul
Manuel oalrak denedim hiç bir sonuc çıkmadı misal session ile çalışan captcha uygulamarında sorun cıkartıyordu.
Sessionu kafasına göre bir oluşturuyor bir oluşturmuyordu
Bir sürü ticket açtım adamlar sorun yok diyorlar dene gir diyorum bu sayfada gör diye kodlarında sıkıntı var diyorlar Free hostinglerin birine attım aynı sayfayı gönderdim firmaya bak çalışıyor üstlerine çamur almak istemiyorlar :) -
:D hocam belki şimdi görmemişsindirde bu şekilde çözmen doğru olmamış. sunucun ile görüşüp session sorununu çözmen daha mantıklı
-
Eğer session kullanımında sorun yaşıyorsan Web Token kullanarak oturum yönetimi yapabilirsin.
Burada klasik session girişi ile token in karşılaştırmasını yapmış: https://docs.google.com/drawings/d/1wtiF_UK2e4sZVorvfBUZh2UCaZq9sTCGoaDojSdwp7I/edit
Kullanacağın kütüphane https://github.com/firebase/php-jwt
Bu da detaylı anlatım : http://www.sitepoint.com/php-authorization-jwt-json-web-tokens/
Burda da avantajlarından bahsetmiş: https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/
Buraya da bakabilirsin: https://coderwall.com/p/8wrxfw/goodbye-php-sessions-hello-json-web-tokens
-
Çizik