• 10-03-2023, 14:35:24
    #1
    Merhaba 3 adet sorum olacak, yardımcı olacak arkadaşlara şimdiden teşekkür ederim.
    1- php session ile herkese farklı süre oturum imkanı vermem mümkün mü? Yani sen giriş yapıyorsun sisteme ama senin içerde kalma süren 30 dk ise seni o zaman atacak, başka birisini 45 dk hakkı varsa süresi bittiğinde atacak gibi.. Bununla ilgili olarak veritabanında giriş yapan kişinin parolası ve yanında çıkması gereken saat olsa, bu yapılabilir mi?
    2- php session seni otomatik atması için standart süre 24 dk ise o süre zarfında hiç o sayfada işlem yapmamak mı gerekiyor?
    3- Aşağıdaki kodda hata var mı? Çünkü hiçbir şekilde otomatik olarak çıkış yapmıyor. (10 dk için ayarlı ama çıkmıyor)
    <?php
    session_start();
    $_SESSION = array();
    if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 600,
    $params["path"], $params["domain"],
    $params["secure"], $params["httponly"]
    );
    }
    unset($_SESSION['login']);
    session_destroy(); // destroy session
    header("location:index.php");
    ?>
  • 10-03-2023, 14:48:09
    #2
    I - Her sayfaya dâhil edeceğiniz bir kod parçası olsun. Tek bir dosyada bunu yapıp require edebilirsiniz. Bu dosyada veri tabanından kişinin saat verisini çekin ve geçerli saat ile karşılaştırın. Dolmuşsa SESSION'ı sildirin.
    II - Hayır.
    III - login adında bir SESSION tanımlamamışsınız ancak sildiriyorsunuz.
  • 10-03-2023, 15:33:37
    #3
    1. Maddeyi çok anlamadım açıkçası.
    3. Madde için yazıyorum index.php nin en üst kısmında aşağıdaki gibi bir tanımlama var ama alakasız mı bilmiyorum

    <?php
    session_start();
    include('includes/config.php');
    if(isset($_POST['login']))
    {
    $email=$_POST['username'];
    $password=md5($_POST['password']);
    $sql ="SELECT isim,sifre FROM admin WHERE isim=:email and sifre=assword";
    $query= $dbh -> prepare($sql);
    $query-> bindParam(':email', $email, PDO::PARAM_STR);
    $query-> bindParam('assword', $password, PDO::PARAM_STR);
    $query-> execute();
    $results=$query->fetchAll(PDO::FETCH_OBJ);
    if($query->rowCount() > 0)
    {
    $_SESSION['alogin']=$_POST['username'];
    echo "<script type='text/javascript'> document.location = 'dashboard.php'; </script>";
    } else{

    echo "<script>alert('Invalid Details');</script>";

    }

    }

    ?>
  • 11-03-2023, 01:57:47
    #4
    ini_set('session.gc_maxlifetime', 3600); // saniye cinsinden en uzun kalmasi gereken uye tipinin suresi
    //session start include lari es geciyorum kendinize gore duzenlersiniz.
    
    function is_logged_in(){
        if(isset($_SESSION['alogin']) && isset($_SESSION['atime']) && $_SESSION['atime']>time()){
            //session alogin ve atime degeri var ise,
            //atime degeri simdiki zamandan buyukse 
            return true;
        }
        return true;
    }
    
    if(is_logged_in()){
        //zaten login olmus
        header('Location: /dashboard.php');
        exit();
    }else{
        if(isset($_POST['login']) && isset($_POST['username']) && isset($_POST['password'])) {
            $email = trim($_POST['username']);
            $password = md5(trim($_POST['password']));
            $sql = 'SELECT isim,sifre FROM admin WHERE isim=:email and sifre=assword';
            $query = $dbh->prepare($sql);
            $query->bindParam(':email', $email, PDO::PARAM_STR);
            $query->bindParam('assword', $password, PDO::PARAM_STR);
            $query->execute();
            $results = $query->fetchAll(PDO::FETCH_OBJ);
            if($query->rowCount() > 0) {
                $_SESSION['alogin'] = $email;
                $_SESSION['atime'] = time()+(30*60); // simdiki zaman + 30 dakika * 60 saniye
                header('Location: /dashboard.php');
                exit();
            } else{
                header('Location: /login.php');
                exit();
            }
        }
    }
    ayrica php server side bir programlama dilidir. kullanici login olup o sayfada hicbir islem yapmadan bekliyorsa, session suresi dolsa bile otomatik cikis vs olmaz.
    bunun icin javascript ile belirli araliklarla kullanicinin session durumunu server side kontrol etmelisiniz ve login degilse javascript ile kullanici login sayfanıza yonlendirmelisiniz.
    yukarida bir fikir vermesi ufak bir ornek verdim kendinize gore ve az once soylediklerime gore duzenlemezseniz istediğinizi yapmaz.