merhaba, php de session süresini sınırsız yapmak için uğraştım ancak yapamadım sonrasında session süresi uzatmaya çalıştım ancak o da çalışmadı.
Yani, herhangi bir sayfadayken 5 dakikada bir ajax ile arkaplanda bir sayfaya post ettim, post ettiğim o sayfada da aşağıdaki kodu kullanıp session süresini 5 dakikadan uzun kurdum yani amaç örneğin session süresi 10 dakikayken 5 dakikada bir session süresini yeniden kurup sınırsız oturum süresi elde etmekti ancak çalışmadı bilgisi olan var mı session süresini nasıl sonsuz yapabilirim ya da aşağıdaki kodu nasıl çalışır hale getiririm:
<?php
require_once("../connect.php");
ini_set('session.gc_maxlifetime', 3600);
session_set_cookie_params(3600);
session_start();
?>
şuanda kodu aşağıdaki ile güncelledim ama denemesi uzun sürdüğü için sormak istedim,
<?php
require_once("../connect.php");
ini_set('session.gc_maxlifetime', 86400);
session_set_cookie_params(86400, "/");
session_start();
?>
php session süresi uzatma
8
●496
- 11-10-2022, 09:30:47
- 11-10-2022, 09:48:32Bu işi en iyi COOKIE ile çözebilirsin.
En basit yöntemi anlatayım. Sen buna göre geliştirebilirsin.
1. İlk giriş yapan kullanıcı giriş yaptığında benzersiz random bir token kodu oluştur.
2. Bunu DB'ye login olunan kullanıcı adı için kaydet.
3. Daha sonra 2 adet COOKIE oluştur. Biri giriş yapanın kullanıcı adı diğeri ise oluşturulan token kodu.
Örnek:
localStorage.setItem("username", $username); localStorage.setItem("login_token", $token_code);4. Daha sonra sayfanın başına kural koy.
Eğer SESSION yoksa COOKIE kontrol etsin var mı diye.
Eğer username ve token olan COOKIE var ise DB ile kontrol et.
<?php if(!isset($_SESSION['logged_user']) && (isset($_COOKIE['username'], $_COOKIE['login_token']))){ // Eğer SESSION yoksa COOKIE kontrol et // Aynı kullanıcı adına sahip token var mı diye kontrol et. $check_user = $db->users()->where(['username'=>$_COOKIE['username'], 'token'=>$_COOKIE['login_token'] ])->fetch(); // Eğer DB true dönerse hemen yeni bir SESSION oluşturup oturumu başlat. if(isset($check_user['id']])){ $_SESSION['logged_user '] = $check_user; } } ?>Not: DB sorgusunu ben kendi kullandığım framewok'e göre hızlıca yazdım. Siz nasıl DB sorgulaması yapıyorsanız öyle sorgulama yapmanız gerekmekte. - 11-10-2022, 09:54:53session ile çözebiliyosak öyle yapmayı tercih ederim yani süresi sınırsız yapılamıyo ama sürekli sıfırlayıp 5 dakikada bir süresini 10 dakika yapıcaksa yine mantıken sınırsız olmuş olucak, ama en kötü böyle yapıcam teşekkürlerbatuhan_polat adlı üyeden alıntı: mesajı görüntüle
- 11-10-2022, 09:58:40Session ile dediğin gibi sürekli AJAX ile istek atıp kontrol ettirebilirsin.Aeknasd145 adlı üyeden alıntı: mesajı görüntüle
Ama kullanıcı tarayıcıyı kapatıp açtığı anda SESSION sıfırlanıyor ve siliniyor.
O yüzden bu anlattığım şekilde kullanıcı bilgisayarını kapatıp açsa bile oturum sürekli açık kalacaktır. - 11-10-2022, 10:01:15peki cookie ye direkt id değil token kaydetme sebebimiz ney, cookie ye erişim kolay diye okumuştum o yüzden mi yani direkt id ye 5 yazıp session ı 5 e atayamasın, benzersiz random token olsun onun kontrolüyle erişim sağlansın diye mi yani token + username yerine token + id de yapmam bir şeyi değiştirmez ama sadece id yapmam güvenlik için kötü olur o zaman demibatuhan_polat adlı üyeden alıntı: mesajı görüntüle
- 11-10-2022, 10:03:13çok denedim hocam öyle olmuyo, giriyolar sisteme, ben de denedim hatta, sonra içeriği yazıyolar yazıyolar kaydet dendiğinde giriş yapa atıyo ama süre kısaysa kaydediyo oturumdan atmıyo, sayfa yenilerkende öyle bekleyip yenileyince atıyo oturumdan, session değil cookie sınırsız diye biliyorumeypoffcl adlı üyeden alıntı: mesajı görüntüle
- 11-10-2022, 10:08:58Token amacı güvenlik zaafiyeti olmaması açısından.Aeknasd145 adlı üyeden alıntı: mesajı görüntüle
Ben yöntemi sana anlatırken en basit haliyle anlattım.
Mesela token kodu kontrol ederken arada bir token kodu değiştirmen/yenilemen gerekir.
Direk ID yazarsan kötü niyetli kullanıcı web sitende açıkları daha rahat bulabilir veya bulduğu DB açıklarında işi çok daha kolay olur.
Ama benzersiz bir random token oluşturup bunu kendinize göre belirlediğiniz kurala göre belirli aralıklarla değiştirirsen daha iyi olacaktır.
Mesela buna kendin ekstra olarak ta güvenlik kontrolleri ekleyebilirsin.
Mesela token'ın yanında kullanıcının tarayıcı bilgilerini de alabilirsin.
COOKIE check edip üyeyi bulduktan sonra tarayıcı kontrolü de yapabilirsin.
Kullanıcı Chrome'dan girmiştir ama kötü niyetli kullanıcı token kodunu bulup Edge'den girmiştir. Bunu engelleyebilirsin.
IP kontrolü yapabilirsin. 10 dakika önce 111.111.xxx.xx IP si ile giren kullanıcı şimdi alakasız bir 222.222.xxx.xxx ile girmişse güvenlik amaçlı sadece en hızlı şekilde şifre girmesini isteyebilirsin.
Bunun gibi yapabileceğin bir sürü güvenlik protokolü vardır. - 11-10-2022, 10:12:11tamamdır teşekkürler hocambatuhan_polat adlı üyeden alıntı: mesajı görüntüle