lostyazilim
tr.link

PHP Kayıt sonrası bilgileri session ile kaydetme

15 Mesajlar 1.251 Okunma
lstbozum
tr.link

yuubishi yuubishi WM Aracı Kullanıcı
  • Üyelik 05.07.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek PHP
  • Konum Bursa
  • Ad Soyad M** Ç**
  • Mesajlar 10
  • Beğeniler 1 / 1
  • Ticaret 0, (%0)
Merhaba kayıt sistemim sorunsuz çalışıyor fakat veritabanımda ki "id","kullad" değerlerini kayıt sonrası session içine atmak istiyorum fakat beceremedim


else {
$sorgu = $db->prepare("INSERT INTO uyeler (ad,soyad,kullad,sifre,eposta) VALUES(:ad,:soyad,:kullad,:sifre,:eposta)");
$sorgu->execute(array('ad' => $kayitAd, 'soyad' => $kayitSoyad, 'kullad' =>
$kayitKullad, 'sifre' => $kayitSifre, 'eposta' => $kayitEpostaKontrol));
}
 

 

wmaraci
reklam

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Kayıt başarılı olduktan sonra kullad değerini veri tabanından çekmenize gerek yok zaten, gelen kullanıcı adını alırsınız. Kullanıcı id si için de lastInsertId() metodunu kullanarak son eklenen üyenin veri tabanındaki id numarasını alabilirsiniz.

$id = $db->lastInsertId();
yuubishi

kişi bu mesajı beğendi.


yuubishi yuubishi WM Aracı Kullanıcı
  • Üyelik 05.07.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek PHP
  • Konum Bursa
  • Ad Soyad M** Ç**
  • Mesajlar 10
  • Beğeniler 1 / 1
  • Ticaret 0, (%0)

Abdullahx adlı üyeden alıntı

Kayıt başarılı olduktan sonra kullad değerini veri tabanından çekmenize gerek yok zaten, gelen kullanıcı adını alırsınız. Kullanıcı id si için de lastInsertId() metodunu kullanarak son eklenen üyenin veri tabanındaki id numarasını alabilirsiniz.

$id = $db->lastInsertId();


Teşekkürler yorum için aklıma takılan bir kaç soru var bu konuyu araştırırken stackoverflowda biri post değerini sessiona atamanın güvenli olmadığını yazmıştı 2. sorum ise bu lastInsertId veritabanına son kaydedilen idyi mi alıyor yoksa client taraflı mı işliyor
 

 

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Kullanıcı için gizli kalması gereken bir değeri session a atamayın, şifre gibi. Kullanıcı adı atanmasında bir sakınca olacağını düşünmüyorum. id değeri de bir nevi gizli bilgi sayılabilir. Şüpheleriniz varsa ve yine de tutmak istiyorsanız bir şifreleme algoritmasından geçirip öyle tutun. md5 olabilir ama sonradan decode edilebilecek bir yöntem istiyorsanız ona göre araştırma yapabilirsiniz. lastinsertid de veri tabanına son kaydedilen id yi alıyor, yani server taraflı işliyor.
 

 


wmaraci
wmaraci

yuubishi yuubishi WM Aracı Kullanıcı
  • Üyelik 05.07.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek PHP
  • Konum Bursa
  • Ad Soyad M** Ç**
  • Mesajlar 10
  • Beğeniler 1 / 1
  • Ticaret 0, (%0)

Abdullahx adlı üyeden alıntı

Kullanıcı için gizli kalması gereken bir değeri session a atamayın, şifre gibi. Kullanıcı adı atanmasında bir sakınca olacağını düşünmüyorum. id değeri de bir nevi gizli bilgi sayılabilir. Şüpheleriniz varsa ve yine de tutmak istiyorsanız bir şifreleme algoritmasından geçirip öyle tutun. md5 olabilir ama sonradan decode edilebilecek bir yöntem istiyorsanız ona göre araştırma yapabilirsiniz. lastinsertid de veri tabanına son kaydedilen id yi alıyor, yani server taraflı işliyor.


Peki veritabanından id yi alarak nasıl yapabilirim bir kaç yıl önce yapıyordum fakat uzun süredir kullanmıyorum. fetch(); değişmiş sanırım bir türlü çözemedim lastinsertid yaparsam aynı anda 2 kişi kayıt olursa sıkıntı olur gibime geliyor ilginiz için teşekkürler
 

 

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
fetch() i nerede kullanmaya çalıştığınıza bağlı, birkaç yıl önceki halini biliyorum. Ayrıca sıkıntı olmaz, milisaniyeler ile gerçekleşen işlemler bunlar ve lastinsertid yi hemen bir insert işleminin ardı sıra yazarsanız sorunsuz şekilde alıp kullanabilirsiniz.
 

 


yuubishi yuubishi WM Aracı Kullanıcı
  • Üyelik 05.07.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek PHP
  • Konum Bursa
  • Ad Soyad M** Ç**
  • Mesajlar 10
  • Beğeniler 1 / 1
  • Ticaret 0, (%0)
Kusura bakmayın çok soru soruyorum ama yüksek trafik ve pooling yüzünden lastid boş değer döndürebilir yazmışlar stackte bunu lastid kullanmadan nasıl yapabilirim databaseden veri çekerek
 

 

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
O zaman şöyle olsun. Kayıt sonrası hemen bir tane de SQL sorgusu yazın kullanıcı adı üzerinden;

$a = $db->prepare("SELECT id FROM kullanici_tablo WHERE kullad=?")->fetch(2);
$a->execute([$kayitKullad]);
$id = $a['id'];

 

 


yuubishi yuubishi WM Aracı Kullanıcı
  • Üyelik 05.07.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek PHP
  • Konum Bursa
  • Ad Soyad M** Ç**
  • Mesajlar 10
  • Beğeniler 1 / 1
  • Ticaret 0, (%0)


O zaman şöyle olsun. Kayıt sonrası hemen bir tane de SQL sorgusu yazın kullanıcı adı üzerinden;
PHP- Kodu:
$a = $db->prepare("SELECT id FROM kullanici_tablo WHERE kullad=?")->fetch(2);
$a->execute([$kayitKullad]);
$id = $a['id'];



Çok teşekkür ederim birazdan deneyeceğim şuan pek müsait değilim. İlginiz için teşekkürler
Abdullahx

kişi bu mesajı beğendi.

yuubishi yuubishi WM Aracı Kullanıcı
  • Üyelik 05.07.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek PHP
  • Konum Bursa
  • Ad Soyad M** Ç**
  • Mesajlar 10
  • Beğeniler 1 / 1
  • Ticaret 0, (%0)
Önceden de bu tarz hata alıyordum bayağı araştırdım fakat sorunu bulamadım aynısını alıyorum şimdi de :(


: Uncaught Error: Call to a member function execute() on bool in



else {

$sorgu = $db->prepare("INSERT INTO uyeler (ad,soyad,kullad,sifre,eposta) VALUES(:ad,:soyad,:kullad,:sifre,:eposta)");
$sorgu->execute(array('ad' => $kayitAd, 'soyad' => $kayitSoyad, 'kullad' => $kayitKullad, 'sifre' => $kayitSifre, 'eposta' => $kayitEpostaKontrol));

if($sorgu) {

$bilgiCek = $db->prepare("SELECT id FROM uyeler WHERE kullad=?")->fetch(2);
$bilgiCek->execute([$kayitKullad]);
$_SESSION['uid'] = $bilgiCek['id'];

echo $_SESSION['uid'];
}
}
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al