v2.5.2
Giriş yap

sürekli açık session

zehrabilkin
558 defa görüntülendi ve 2 kişi tarafından değerlendirildi

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

Cevap yaz
Cevaplar (11)
aykhan
685 gün önce

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.

qplot
687 gün önce

sunucudan ayarlamadan cozume ulasamazsın ben cookie ile kontrol ettırıp tekrardan otomatık gırıs yaptırıyorum lakın sunucu uzerınden sessıon zamanını 0 yaptırmadan sorunun sureklı olacaktır

zehrabilkin
688 gün önce

şöyle diyimö ajax ile login yaptırıp setcookie ayarladıgım da dahi sistem düzgün çalışmıyor

abdullahx
689 gün önce

Ajax dan kastınız tam olarak nedir acaba, tarayıcı açık olduğu sürece ajax çalıştırıp session un kapanmasını önlemek mi yoksa tarayıcı yeniden açıldığında eski session değerini geri getirmek mi

zehrabilkin
689 gün önce

abdullah bey ajax ile yapmayı denediniz mi hiç ? ben beceremedim bir türlğ

abdullahx
689 gün önce

Cookie ye kayıt edeceksin ama şifrelenmiş bir şekilde, tarayıcı yeniden açılınca özel şifreleme algoritması ile şifrelediğin session değerini çözüp yeniden etkin yapın.

zehrabilkin
689 gün önce

ufukart cok dogru diyorsun ajax ile de cookie sorunu oluyor onun önüne nasıl geçicez

ufukart
689 gün önce

Session time 7 güne çıkarmak kesinlikle hatalı bir yaklaşımdır. Sunucunun temp klasöründe yüzbinlerce session dosyası oluşacak.
Tek bir klasörde yüzbinlerce session dosyası. Sunucu bakımından bununla baş etmek çok zordur.

zehrabilkin
689 gün önce

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ı

app
689 gün önce

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ış";
        }
    }
}

app
689 gün önce

+takip