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:
ARAM_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:
ARAM_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]