PHP ile otomatik sayfa

Veritabaninda kullanicinin profil bilgilerinin eksiksiz olup olmadigini kontrol edeceksin sisteme giristen sonra, eger eksikse o sayfaya yonlendireceksin.
Kayit olurken sormazsin, kayit bittikten sonra "Simdi profil bilgilerinizi guncelleyin" gibi bir ekran karsisina cikar. Vazgecip cikarsa ve 3 gun sonra yeniden giris yaparsa yine ayni ekrani gorur.

Yine de tum bunlari kayit sirasinda almaktan ne farki var bilmiyorum ama istedigin bu gibi duruyor.

Ayrica insanlardan kod istemeyi birak, onu yazmak senin isin; problemin neymis diye okuyup yorum yapabiliriz en fazla, oturup senin isini kimse bedavaya yapmaz.
 
Veritabaninda kullanicinin profil bilgilerinin eksiksiz olup olmadigini kontrol edeceksin sisteme giristen sonra, eger eksikse o sayfaya yonlendireceksin.
Kayit olurken sormazsin, kayit bittikten sonra "simdi profil bilgilerinizi guncelleyin" gibi bir ekran karsisina cikar. Vazgecip cikarsa ve 3 gun sonra yeniden giris yaparsa yine ayni ekrani gorur.

Yine de tum bunlari kayit sirasinda almaktan ne farki var bilmiyorum ama istedigin bu gibi duruyor.

Ayrica insanlardan kod istemeyi birak, onu yazmak senin isin; problemin neymis diye okuyup yorum yapabiliriz en fazla, oturup senin isini kimse bedavaya yapmaz.

Bana kod basın demiyorum. Örnek bir kaynak bırakın, kullanım formatını anlayayım diyorum.
 
Son düzenleyen: Moderatör:
Veritabaninda 2 tane tablo olsun. Birisi kullanicilar, digeri kullanici_detaylari. kullanici_detaylari sayfasinin Primary Key'i ayni zamanda kullanicilar tablosunun Primary Key'ine referans gosteren bir Foreign Key olsun. Boylece iki tablo arasinda 1-1 (one to one) iliski kurabilirsin.

Kullanici sisteme giris yaptiginda, scriptinde authentication yapildiktan hemen sonra kullanici_detaylari tablosunda kaydi var mi yok mu kontrol et. Kayit yoksa, kullanici kaydini tamamlamis fakat profil detaylarini eklememis demektir. Bu durumda profil detaylarini doldurmak icin olusturdugun sayfaya yonlendirme yap.

Ornek bir kod birakiyorum, syntax hatalari eksikler olabilir, mantigi anlaman amaciyla attim. Sen kendine gore duzeltirsin.

[CODE lang="php" title="php"]<?php

...
// kullanici login olur.

$kullanici_adi = $_POST['kullanici_adi'];
$sifre = $_POST['sifre'];

$db_baglantisi = new PDO('mysql:host=localhost;dbname=db_adi', $db_kadi, $db_sifre);
$sql = "SELECT * FROM `kullanicilar` WHERE `kullanicilar`.`kullanici_adi` = :kullanici_adi";
$komut = $db_baglantisi->prepare($sql);
$komut->bindParam(':kullanici_adi', $kullanici_adi, PDO::pARAM_STR);
$komut->setFetchMode(PDO::FETCH_ASSOC);
$komut->execute();

$dbde_kayitli_kullanici = $komut->fetch();

if (! $dbde_kayitli_kullanici) {
http_response_code(400);
echo 'Kullanici bulunamadi.';
}

if (! password_verify($sifre, $dbde_kayitli_kullanici['hashed_sifre'])) {
http_response_code(401);
echo 'Kullanici adi veya sifre hatali.';
}

session_start();
$_SESSION['giris_yapan_kullanici_id'] = $dbde_kayitli_kullanici['id'];

// bu noktaya kadar olan kisim klasik authentication tarafi. bu noktadan sonra senin istedigin kontrol geliyor

$sql = "SELECT `kullanici_detaylari`.* FROM `kullanicilar` INNER JOIN `kullanici_detaylari` ON `kullanicilar`.`id` = `kullanici_detaylari`.`id` WHERE `kullanicilar`.`kullanici_adi` = :kullanici_adi";
$komut = $db_baglantisi->prepare($sql);
$komut->bindValue(':kullanici_adi', $kullanici_adi, PDO::pARAM_STR);
$komut->execute();

$kullanici_detaylari = $komut->fetch();

// kullanici kayitli fakat detaylarini henuz doldurmamissa profil ekleme sayfasina yonlendir.
if (! $kullanici_detaylari) {
header("Location: /profil_ekleme_sayfasi.php");
exit();
}

// kullanici kayitli ve profili detaylarini doldurmus. Artik ne istersen onu yap. Orn. anasayfaya yonlendir.

header("Location: /anasayfa.php");
exit();[/CODE]
 
Veritabaninda 2 tane tablo olsun. Birisi kullanicilar, digeri kullanici_detaylari. Kullanici_detaylari sayfasinin primary Key'i ayni zamanda kullanicilar tablosunun primary key'ine referans gosteren bir foreign key olsun. Boylece iki tablo arasinda 1-1 (One to One) iliski kurabilirsin.

Kullanici sisteme giris yaptiginda, scriptinde authentication yapildiktan hemen sonra kullanici_detaylari tablosunda kaydi var mi yok mu kontrol et. Kayit yoksa, kullanici kaydini tamamlamis fakat profil detaylarini eklememis demektir. Bu durumda profil detaylarini doldurmak için olusturdugun sayfaya yonlendirme yap.

Ornek bir kod birakiyorum, syntax hatalari eksikler olabilir, mantigi anlaman amaciyla attim. Sen kendine gore duzeltirsin.

[CODE lang="php" title="php"]<?php

...
// kullanici login olur.

$kullanici_adi = $_POST['kullanici_adi'];
$sifre = $_POST['sifre'];

$db_baglantisi = new PDO('mysql:host=localhost;dbname=db_adi', $db_kadi, $db_sifre);
$sql = "SELECT * FROM `kullanicilar` WHERE `kullanicilar`.`kullanici_adi` = :kullanici_adi";
$komut = $db_baglantisi->prepare($sql);
$komut->bindParam(':kullanici_adi', $kullanici_adi, PDO::pARAM_STR);
$komut->setFetchMode(PDO::FETCH_ASSOC);
$komut->execute();

$dbde_kayitli_kullanici = $komut->fetch();

if (! $dbde_kayitli_kullanici) {
http_response_code(400);
echo 'Kullanici bulunamadi.';
}

if (! password_verify($sifre, $dbde_kayitli_kullanici['hashed_sifre'])) {
http_response_code(401);
echo 'Kullanici adi veya sifre hatali.';
}

session_start();
$_SESSION['giris_yapan_kullanici_id'] = $dbde_kayitli_kullanici['id'];

// bu noktaya kadar olan kisim klasik authentication tarafi. bu noktadan sonra senin istedigin kontrol geliyor.

$sql = "SELECT `kullanici_detaylari`.* FROM `kullanicilar` INNER JOIN `kullanici_detaylari` ON `kullanicilar`.`id` = `kullanici_detaylari`.`id` WHERE `kullanicilar`.`kullanici_adi` = :kullanici_adi";
$komut = $db_baglantisi->prepare($sql);
$komut->bindValue(':kullanici_adi', $kullanici_adi, PDO::pARAM_STR);
$komut->execute();

$kullanici_detaylari = $komut->fetch();

// kullanici kayitli fakat detaylarini henuz doldurmamissa profil ekleme sayfasina yonlendir.
if (! $kullanici_detaylari) {
header("Location: /profil_ekleme_sayfasi.php");
exit();
}

// kullanici kayitli ve profili detaylarini doldurmus. Artik ne istersen onu yap. Orn. anasayfaya yonlendir.

header("Location: /anasayfa.php");
exit();[/CODE]

Teşekkürler işime yaradı sağ ol.
 

Geri
Yukarı