PHP hatası

yone1108

Decapat
Katılım
21 Nisan 2021
Mesajlar
709
Makaleler
1
Çözümler
2
Merhaba, PHP ile üyelik sisteminde sorun var. Bir türlü anlamadım mesela kayıt oluyorum veriyi veritabanına ekliyor giriş yaptığım zaman veritabanındaki en son kullanıcının hesabına giriş yapıyor. Hangi epostayı yazarsam yazayım veritabanında en sondaki hesaba giriş yapıyor.

kayıt formu
PHP:
<?php
require_once "system/baglan.php";
require_once "system/config.php";


if(isset($_POST["kayitformu"]))
{
    $kullaniciadi = $_POST['kullaniciadi'];
    $email = $_POST['email'];
    $sifre = md5($_POST['sifre']);
    $cinsiyet = $_POST['cinsiyet'];

    if($kullaniciadi!="" && $email!="" && $sifre!="" && $cinsiyet!="")
    {
        if(filter_var($email, FILTER_VALIDATE_EMAIL))
        {
            $sorgu = $db->prepare("insert into uyelik set kullaniciadi=?, email=?, sifre=?, cinsiyet=?, kayit_tarihi=?");
            $ekle = $sorgu->execute([$kullaniciadi, $email, $sifre, $cinsiyet, date("Y-m-d")]);
            if($ekle)
            {
                $hatamesaji = "Hesabınız oluşturuldu.";
                header("Refresh: 2; url=index.php");
            }
            else
            {
                $khatamesaji = "Hesabınız oluşturulamadı.";
            }
        }
        else
        {
            $khatamesaji = "Geçerli bir e-posta formatı giriniz.";
        }
    }
    else
    {
        $khatamesaji = "tüm alanları doldurunuz!";
    }
}
?>

giriş formu
PHP:
<?php
ob_start();
require_once "system/baglan.php";
require_once "system/config.php";



if(isset($_POST["girisformu"]))
{
    $email = $_POST['email'];
    $sifre = md5($_POST['sifre']);

    if($email!="" && $sifre!="")
    {
        $sorgu = $db->prepare("SELECT * FROM uyelik WHERE email=? and sifre=?");
        $sorgu->execute([$email, $sifre]);
        $sayisi = $sorgu->rowCount();

        if($sayisi > 0)
        {
            $_SESSION['email'] = $email;
            $lhatamesaji = "Giriş Başarılı...";
            header("Refresh: 2; url=profil.php");
        }
        else
        {
            $lhatamesaji = "Giriş Başarısız!";
        }
    }
    else
    {
        $lhatamesaji = "tüm alanları doldurunuz!";
    }
}
?>
 
"cikisyap.php" diye bir sayfa oluşturun ve yeni bir hesaba girmeden önce o sayfaya gidin:


PHP:
<?php

unset($email);
session_destroy();
echo "Oturum sonlandırıldı";

?>

1660771096952.png


session_start(); ekleyerek çözdüm hemen deneyeyim.

Sorun hala devam ediyor. Başka eposta ile giriyorum ama gidip veritabanındaki en son kişi kimse onun hesaba giriyor
 
giriş formunu nereye post ediyorsun ? Email'i session 'a eklemeden önce session'ı start ediyor musun ? Çıkış yaparken mutlaka destroy etmen gerekiyor.

$email değişkenini veritabanına göndermeden önce echo ile basabilir misin?
profil sayfasına yönlendirmeyi kapatıp session'a attığın email adresini de echo ile sayfaya basabilir misin? Session'da doğru verinin tutulup tutulmadığına emin olmak için.

Son olarak da sayfanda cache kullanıyor musun ? Yanlış cache kullanımı nedeni ile session doğru gözükse bile yanlış bilgi gönderiliyor olabilir.
 
giriş formunu nereye post ediyorsun ? Email'i session 'a eklemeden önce session'ı start ediyor musun ? Çıkış yaparken mutlaka destroy etmen gerekiyor.

$email değişkenini veritabanına göndermeden önce echo ile basabilir misin?
profil sayfasına yönlendirmeyi kapatıp session'a attığın email adresini de echo ile sayfaya basabilir misin? Session'da doğru verinin tutulup tutulmadığına emin olmak için.

Son olarak da sayfanda cache kullanıyor musun ? Yanlış cache kullanımı nedeni ile session doğru gözükse bile yanlış bilgi gönderiliyor olabilir.

Session kısmında bir hata yapmışım onu düzelttim şuan bir sorun yok :)
 

Yeni konular

Geri
Yukarı