sürekli açık session
Merhaba ben üyelik sistemi yazıyorum. üyelik sisteminde tarayıcı kapandıgında session bitiyor.
bunu cerez kullanmadan nasıl yapabilirim. yani session sürekli açık kalacak
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (11)
Merhaba PHP tarafından sunulan bir özellik yok, ancak bir kullanıcının tarayıcısı kapandığında otomatik olarak biten bir PHP session'ını sürekli açık tutmak için aşağıdaki yöntemlerden birini kullanabilirsiniz:
Oturum verilerini veritabanında saklamak: Her bir kullanıcı için bir veritabanı kaydı oluşturun ve oturum verilerini bu kayıtlar içinde saklayın. Tarayıcı kapandığında bile veritabanı kaydı var olduğu sürece oturum açık kalır.
Oturum verilerini çerez olarak saklamak: Oturum verilerini çerez olarak saklayarak oturumun bitmesini engelleyebilirsiniz. Ancak, bu veriler güvenliği açısından riskli olabilir, çünkü çerezler tarayıcı tarafından okunabilir.
PHP çalışma süresini uzatmak: PHP tarafından belirlenen varsayılan oturum çalışma süresini uzatmak, oturumun tarayıcı kapandığında bitmemesini sağlar. Bunun için "session.gc_maxlifetime" parametresini düzenleyebilirsiniz.
şöyle diyimö ajax ile login yaptırıp setcookie ayarladıgım da dahi sistem düzgün çalışmıyor
abdullah bey ajax ile yapmayı denediniz mi hiç ? ben beceremedim bir türlğ
ufukart cok dogru diyorsun ajax ile de cookie sorunu oluyor onun önüne nasıl geçicez
Hocam session süresi normalde 24 dakika bunu php ini üzerinden değiştirebilirim ama tarayıcı kapattıgında session kapanır.Bunu önüne geçebilmem lazım cookie ye güvenmiyorum açıkcası
ChatGPT ile uğraştık biraz oturumun süresini 7 güne ayarlayıp isteğimi gerçekleştirdi.
<?php
ini_set('session.gc_maxlifetime', 60 * 60 * 24 * 7);
ini_set('session.cache_expire', 60 * 60 * 24 * 7);
session_start();
if (isset($_SESSION['kullanici']['id'])) {
$dsn = "mysql:host=localhost;dbname=db_name";
$pdo = new PDO($dsn, "root", "");
// Check if session is valid
$stmt = $pdo->prepare("SELECT * FROM user WHERE id = :user_id");
$stmt->bindParam(":user_id", $_SESSION['kullanici']['id']);
$stmt->execute();
$user = $stmt->fetch();
if ($user) {
echo "Giriş Yapıldı";
} else {
session_destroy();
}
} else {
echo '
<form action="" method="POST">
<input type="text" name="email">
<input type="text" name="sifre">
<button type="submit" name="login">Gönder</button>
</form>
';
if (isset($_POST['login'])) {
$dsn = "mysql:host=localhost;dbname=db_name";
$pdo = new PDO($dsn, "root", "");
$stmt = $pdo->prepare("SELECT * FROM user WHERE email = :email AND sifre = :sifre");
$stmt->bindParam(":email", $_POST['email']);
$stmt->bindParam(":sifre", $_POST['sifre']);
$stmt->execute();
$user = $stmt->fetch();
if ($user) {
$_SESSION['kullanici']['id'] = $user['id'];
echo "Giriş Yapıldı";
} else {
echo "E-posta veya şifre yanlış";
}
}
}