Giriş Yap / Kayıt Ol

WM Aracı'na üyelikler tekrar açıldı! Kayıt olmak için TIKLAYIN!


Cevap Yaz Favorilerime Ekle
Seçenekler Stil
Geri Git   Forum > > PHP

374x90

Bu Alana Reklam Ver

Üye güncelleme ve Session güncelleme

  #1  
Okunmamış 29 Nisan 2021, 03:08
netman Adlı Üyenin Avatarı
netman
 
Üyelik Tarihi: 30 Ocak 2017
Yaş / Cinsiyet: 32 / Erkek
Meslek: Danışman
Ad, Soyad: Ke... İn...
Mesajlar: 611
Beğeniler: 166 / 110
Ticaret: 4, 100%
Merhaba, takıldığım bir nokta da bilgi almak istiyorum.

Mail adresi ve şifreyle giriş yapan kullanıcılara ait hesabım sayfası var ve bu sayfa da üye adı soyadı mail adresi gibi bilgilerini güncelleyebiliyor.

Güncelleme kısmında hiç bir sorun yok yeni değerler veritabanına da kaydediliyor. Fakat güncellenen değerler o an ki session oturumunda görünmüyor. Çıkış yaparak tekrar giriş yaparsa kullanıcı yaptığı değişiklikler o zaman görünüyor.

Kullanıcı çıkış yapmadan profilinde ki bu alanları veya herhangi bir alanı düzenleyip kaydettiğinde görüntüleyebilmesi için ne yapmam gerekiyor ?

PHP- Kodu:
if($_GET['uyelik'] == 'uye_guncelle'){ 
if(
$_POST){
    if(isset(
$_POST['uye_id']) and isset($_POST['uye_adi']) and isset($_POST['uye_soyadi']) and isset($_POST['uye_kadi'])) {
        
$uye_id mysqli_real_escape_string($db,$_POST['uye_id']);
        
$uye_adi mysqli_real_escape_string($db,$_POST['uye_adi']);
        
$uye_soyadi mysqli_real_escape_string($db,$_POST['uye_soyadi']);
        
$uye_kadi mysqli_real_escape_string($db,$_POST['uye_kadi']);
    
$bilgi_query "UPDATE uye SET `uye_adi` = '$uye_adi', `uye_soyadi` = '$uye_soyadi', `uye_kadi` = '$uye_kadi' WHERE `uye`.`uye_id` = '$uye_id'";

    
$uye_guncelle mysqli_query($db,$bilgi_query);
        if(
$uye_guncelle){
        
$_SESSION["uye"] = mysqli_fetch_array($uye_guncelle);
        
$return = array('uye_guncelle'=>1);
        echo 
json_encode($returntrue);
    }
    else{
        
$return = array('uye_guncelle'=>2);
        echo 
json_encode($returntrue);
    }
 
    }
    
}

374x90

Bu Alana Reklam Ver

  #2  
Okunmamış 29 Nisan 2021, 03:41
Avatar Seçilmemiş
WM Aracı
 
Üyelik Tarihi: 09 Eylül 2018
Yaş / Cinsiyet: 23 / Erkek
Meslek: patron:)
Konum: Van
Ad, Soyad: Os... Ka...
Mesajlar: 148
Beğeniler: 19 / 44
Ticaret: 0, 0%
üyeye ait hangi bilgileri session da tutuyorsunki gözükmüyor ?
  #3  
Okunmamış 29 Nisan 2021, 12:52
netman Adlı Üyenin Avatarı
netman
 
Üyelik Tarihi: 30 Ocak 2017
Yaş / Cinsiyet: 32 / Erkek
Meslek: Danışman
Ad, Soyad: Ke... İn...
Mesajlar: 611
Beğeniler: 166 / 110
Ticaret: 4, 100%
Şu kısımda üye tablosundan gelen verileri alıyorum.
PHP- Kodu:
 $_SESSION["uye"] = mysqli_fetch_array($uye_guncelle); 
Çekerken de bu şekilde çekiyorum hocam?
PHP- Kodu:
 $_SESSION["uye"]["uye_id"]; 
  #4  
Okunmamış 29 Nisan 2021, 14:32
Avatar Seçilmemiş
MW Aracı
 
Üyelik Tarihi: 03 Nisan 2019
Yaş / Cinsiyet: 26 / Erkek
Meslek: .
Konum: Trabzon
Ad, Soyad: Ab... Ka...
Mesajlar: 859
Beğeniler: 358 / 253
Ticaret: 2, 100%
mysqli uzun zamandır kullanmıyorum ama içeriğinde update olan query yi session a atıyorsunuz direkt. Öncelikle içeriğinde ne olduğunu bir kontrol edin bakalım ne çıktı veriyor.

PHP- Kodu:
if($uye_guncelle){
print_r(mysqli_fetch_array($uye_guncelle));
exit();
        
$_SESSION["uye"] = mysqli_fetch_array($uye_guncelle); 
  #5  
Okunmamış 29 Nisan 2021, 14:35
Avatar Seçilmemiş
WM Aracı
 
Üyelik Tarihi: 22 Eylül 2020
Yaş / Cinsiyet: 18 / Erkek
Meslek: Öğrenci
Konum: Bursa
Ad, Soyad: Öm... De...
Mesajlar: 38
Beğeniler: 6 / 3
Ticaret: 1, 100%
unset ile sıfırlayın sonra tekrardan başlatın hocam sessionu birde güvenlik açıkları için tedbir almalısınız.
  #6  
Okunmamış 29 Nisan 2021, 15:17
netman Adlı Üyenin Avatarı
netman
 
Üyelik Tarihi: 30 Ocak 2017
Yaş / Cinsiyet: 32 / Erkek
Meslek: Danışman
Ad, Soyad: Ke... İn...
Mesajlar: 611
Beğeniler: 166 / 110
Ticaret: 4, 100%
Alıntı:
Abdullahx Adlı Üyeden Alıntı
mysqli uzun zamandır kullanmıyorum ama içeriğinde update olan query yi session a atıyorsunuz direkt. Öncelikle içeriğinde ne olduğunu bir kontrol edin bakalım ne çıktı veriyor.

PHP- Kodu:
if($uye_guncelle){
print_r(mysqli_fetch_array($uye_guncelle));
exit();
        
$_SESSION["uye"] = mysqli_fetch_array($uye_guncelle); 
SELECT veya INSERT yaparken sorun yaşamadım hocam UPDATE de farklı mı oluyor?
HTML Kodu:
Warning:  mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in <b>/theme/ajax.php</b> on line <b>145</b><br />
Bilginiz varsa aydınlatır mısınız bu konuda?
  #7  
Okunmamış 29 Nisan 2021, 15:35
Avatar Seçilmemiş
MW Aracı
 
Üyelik Tarihi: 03 Nisan 2019
Yaş / Cinsiyet: 26 / Erkek
Meslek: .
Konum: Trabzon
Ad, Soyad: Ab... Ka...
Mesajlar: 859
Beğeniler: 358 / 253
Ticaret: 2, 100%
Aslında tamamen emin değilim, veri tabanındaki değeri güncelleyen query kodunu direkt alıp o şekilde kullanabilir muyuz bilmiyorum, dediğim gibi mysqli uzun zamandır kullanmıyorum, bir tahminde bulundum.

Ama php dokümanlarını okuyunca tam da dediğiniz gibi olduğunu görebilirsiniz. "Returns false on failure. For successful queries which produce a result set, such as SELECT, SHOW, DESCRIBE or EXPLAIN, mysqli_query() will return a mysqli_result object. For other successful queries, mysqli_query() will return true."
https://www.php.net/manual/tr/mysqli...y-returnvalues

Aldığınız hatada da sorun ortaya çıktı. mysqli_query nin döndürdüğü yanıt boolean oluyor UPDATE yapıldığında. Oysaki mysqli_fetch_array fonksiyonu yordamsal kullanımda mysqli_result değeri gerektirir. https://www.php.net/manual/tr/mysqli...etch-array.php

Yani diyeceğim o ki, güncelleme yaptıktan sonra yeniden bir vt sorgusu yapıp oradan dönen değerleri session a atamanız gerekiyor. edit => veya direkt elle de girebilirsiniz session değerlerini
PHP- Kodu:
$_SESSION["uye"]["uye_id"] = $uye_id;
$_SESSION["uye"]["uye_adi"] = $uye_adi;
...
... 
Konu Abdullahx tarafından (29 Nisan 2021, 15:39 ) değiştirilmiştir.
  #8  
Okunmamış 29 Nisan 2021, 15:55
netman Adlı Üyenin Avatarı
netman
 
Üyelik Tarihi: 30 Ocak 2017
Yaş / Cinsiyet: 32 / Erkek
Meslek: Danışman
Ad, Soyad: Ke... İn...
Mesajlar: 611
Beğeniler: 166 / 110
Ticaret: 4, 100%
Alıntı:
Abdullahx Adlı Üyeden Alıntı
Aslında tamamen emin değilim, veri tabanındaki değeri güncelleyen query kodunu direkt alıp o şekilde kullanabilir muyuz bilmiyorum, dediğim gibi mysqli uzun zamandır kullanmıyorum, bir tahminde bulundum.

Ama php dokümanlarını okuyunca tam da dediğiniz gibi olduğunu görebilirsiniz. "Returns false on failure. For successful queries which produce a result set, such as SELECT, SHOW, DESCRIBE or EXPLAIN, mysqli_query() will return a mysqli_result object. For other successful queries, mysqli_query() will return true."
https://www.php.net/manual/tr/mysqli...y-returnvalues

Aldığınız hatada da sorun ortaya çıktı. mysqli_query nin döndürdüğü yanıt boolean oluyor UPDATE yapıldığında. Oysaki mysqli_fetch_array fonksiyonu yordamsal kullanımda mysqli_result değeri gerektirir. https://www.php.net/manual/tr/mysqli...etch-array.php

Yani diyeceğim o ki, güncelleme yaptıktan sonra yeniden bir vt sorgusu yapıp oradan dönen değerleri session a atamanız gerekiyor. edit => veya direkt elle de girebilirsiniz session değerlerini
PHP- Kodu:
$_SESSION["uye"]["uye_id"] = $uye_id;
$_SESSION["uye"]["uye_adi"] = $uye_adi;
...
... 
İngilizce kaynaklardan da çok araştırdım bazı yöntemler denedim ama çalışmadı, ben tek sorgu da halledemiyor muyuz diye çok baktım ama fazla da artık kafa yormayayım. Dediğiniz gibi ikinci bir sorgu yapıp değerleri o şekilde alayım. Teşekkür ederim.

Sorgu kısmını bu şekilde halletmiş oldum.

PHP- Kodu:
if($_GET['uyelik'] == 'uye_guncelle'){ 
if(
$_POST){
    if(isset(
$_POST['uye_id']) and isset($_POST['uye_adi']) and isset($_POST['uye_soyadi']) and isset($_POST['uye_kadi'])) {
        
$uye_id mysqli_real_escape_string($db,$_POST['uye_id']);
        
$uye_adi mysqli_real_escape_string($db,$_POST['uye_adi']);
        
$uye_soyadi mysqli_real_escape_string($db,$_POST['uye_soyadi']);
        
$uye_kadi mysqli_real_escape_string($db,$_POST['uye_kadi']);
        
$bilgi_query "UPDATE uye SET `uye_adi` = '$uye_adi', `uye_soyadi` = '$uye_soyadi', `uye_kadi` = '$uye_kadi' WHERE `uye`.`uye_id` = '$uye_id'";

        
$uye_guncelle mysqli_query($db,$bilgi_query);
        if(
$uye_guncelle){
        
$yeni_kayit_cek "SELECT * FROM uye WHERE uye_id='".$uye_id."'";
        
$yeni_session mysqli_query($db,$yeni_kayit_cek);
        
session_start();
        
$_SESSION["uye"] = mysqli_fetch_array($yeni_session); 
        
$return = array('uye_guncelle'=>1);
        echo 
json_encode($returntrue);
    }
    else{
        
$return = array('uye_guncelle'=>2);
        echo 
json_encode($returntrue);
    }
 
    }
    
}

Konu netman tarafından (29 Nisan 2021, 16:02 ) değiştirilmiştir.
  #9  
Okunmamış 29 Nisan 2021, 16:03
netman Adlı Üyenin Avatarı
netman
 
Üyelik Tarihi: 30 Ocak 2017
Yaş / Cinsiyet: 32 / Erkek
Meslek: Danışman
Ad, Soyad: Ke... İn...
Mesajlar: 611
Beğeniler: 166 / 110
Ticaret: 4, 100%
Alıntı:
JamesMoriarty Adlı Üyeden Alıntı
unset ile sıfırlayın sonra tekrardan başlatın hocam sessionu birde güvenlik açıkları için tedbir almalısınız.
unset ile session bilgilerini boşaltıp yeniden giriş ekranına atıyor.
  #10  
Okunmamış 30 Nisan 2021, 16:00
Okan_IŞIK Adlı Üyenin Avatarı
Vip Tema Web Tasarım A.Ş.
 
Üyelik Tarihi: 29 Haziran 2011
Yaş / Cinsiyet: 34 / Erkek
Konum: Tekirdağ
Ad, Soyad: Öz... Iş...
Mesajlar: 1.357
Beğeniler: 656 / 502
Ticaret: 21, 100%
Aslında sessionda üye id'si dışında kullanıcı adına bilgi tutmanıza gerek yok. Kodlarınızın session kurgusunda bir mantık hatası var. Şöyle ki üyeyi ne kadar güncellerseniz güncelleyin değişmeyecek olaan tek bilgi veri tabanındaki benzersiz id'sidir. Dolayısıyla sessionda sadece id tutmanız yeterli olur. Ekrana bastığın diğer bilgileri minnak bir select sorgusu ile id şuna eşitse bilgilerini bas diyebilirsin böylelikle sen ne bilgisini değişirsen değiş, id değişmediği için ve geri kalan bilgileri direk hep vtden çekeceği için anlık bir değişim olur. Umarım anlatabilmişimdir.
netman bunu beğendi.
Vip Tema Web Tasarım A.Ş.
Cevap Yaz Favorilerime Ekle

1113x90

Bu Alana Reklam Ver



Konuyu toplam 1 kişi okuyor. (0 üye ve 1 Ziyaretçi)
 
Seçenekler
Stil
Normal Normal

Geri Git   Forum > PHP


Yetkileriniz
Konu açma yetkiniz: Yok
Cevap Yazma Yetkiniz Yok
Eklenti yükleme yetkiniz: Yok
Mesajınızı değiştirme yetkiniz: Yok

BB code: Açık
İfadeler: Açık
[IMG] Kodları: Açık
HTML kodu: Kapalı





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şu anki Zaman: 13:12.