• 07-05-2018, 20:15:22
    #1
    Merhaba arkadaşlar,

    Ben üyelik açma şifre resetleme gibi yerlerde süreli session belirleyip o süre dolmadan yeni form gönderememesini sağlamak istiyorum. Kodları yazıyorum fakat bir türlü doğru sonucu vermiyor.

    if (!isset($_SESSION['oturum']) ){ 
    $_SESSION['oturum'] = time() + 1; 
    echo "hoşgeldin"; 
    } 
    if ( time() > $_SESSION['oturum'] ){ 
    burada 1 dakikadan küçükse hata mesajı veriyorum.
    }else{ 
    burada eğer 1 dakikadan fazla olmuşsa kodları çalıştırtıyorum..
    }
    Bu kodu yazıyorum fakat sürekli 1 dakika daha olmamış gibi hata mesajı veriyor. 5 dakika bekledim neden yapabilir bunu ?
  • 07-05-2018, 20:18:02
    #2
    time fonksiyonu dakika değil saniye üzerinden çalışır işlemlerinizi ona göre yapın.
  • 07-05-2018, 20:47:35
    #3
    Merhaba session değerinin dolu olduğunu kontrol ediyorsunuz ancak sayfanın başında "session_start();" yoksa o session sayfanın sonuna kadar sürer. Her sayfa yenilendiğinde tekrar atama yapar. Ayrıca time() fonksiyonu saniye cinsinden zamanı verir. 5 dakika için 300 yazmanız lazım. Kodları düzenledim. Buyrun;

    <?php
    session_start();
    if (empty($_SESSION['oturum']) ){
    $_SESSION['oturum'] = time() + 300; //60*5=300
    echo "İlk Giriş. 5 Dakika Eklendi";
    }
    if ( time() < $_SESSION['oturum'] ){ ?>
     Daha 5 Dakika Olmadı
    <?
    }else{ ?>
     5 Dakikayı Geçti
    <?
    }
    ?>
  • 07-05-2018, 21:12:49
    #4
    Scorpion2763 adlı üyeden alıntı: mesajı görüntüle
    Merhaba session değerinin dolu olduğunu kontrol ediyorsunuz ancak sayfanın başında "session_start();" yoksa o session sayfanın sonuna kadar sürer. Her sayfa yenilendiğinde tekrar atama yapar. Ayrıca time() fonksiyonu saniye cinsinden zamanı verir. 5 dakika için 300 yazmanız lazım. Kodları düzenledim. Buyrun;

    <?php
    session_start();
    if (empty($_SESSION['oturum']) ){
    $_SESSION['oturum'] = time() + 300; //60*5=300
    echo "İlk Giriş. 5 Dakika Eklendi";
    }
    if ( time() < $_SESSION['oturum'] ){ ?>
     Daha 5 Dakika Olmadı
    <?
    }else{ ?>
     5 Dakikayı Geçti
    <?
    }
    ?>
    Hocam session_start(); fonksiyonunu sayfanın en başında kullanıyorum onda sıkıntı yok. Benim ordaki 1 yazmamın sebebi 1 saniye sonra sıfırlansın ve tekrar komut çalışsın. Ama sizin verdiğiniz kodu da yapıştırdım düzenledim yine aynı şekilde 30 saniyeye ayarladım 30 saniye dolmasına rağmen "daha dolmadı" komutu çalışıyor..
  • 07-05-2018, 21:19:08
    #5
    Yöntem yanlış ! Profesyonel şekilde işin mantığı yazıyorum.
    - Session değerleri için bir veritabanı oluşturun ve süre değerini istediğiniz formatta oraya kaydettirin.
    - İşlem yaptıracağınız süre değerini veritabanından kontrol edin eğer zaman dolmuş ise işlem yaptırın.
    - Artık işiniz bittiğinde ilgili tablodan değerleri silin.
  • 07-05-2018, 21:52:12
    #6
    @Scorpion2763; hocam tarafından sorun çözülmüştür. Çok teşekkür ediyorum emeğine sağlık hocam.
  • 07-05-2018, 21:53:01
    #7
    CLeon adlı üyeden alıntı: mesajı görüntüle
    @Scorpion2763; hocam tarafından sorun çözülmüştür. Çok teşekkür ediyorum emeğine sağlık hocam.
    Rica ederim , iyi çalışmalar.