lostyazilim
tr.link

Php üye hk.

8 Mesajlar 918 Okunma
lstbozum
tr.link

ozan15 ozan15 Security Kullanıcı
  • Üyelik 29.06.2017
  • Yaş/Cinsiyet 23 / E
  • Meslek Öğrenci
  • Konum Eskişehir
  • Ad Soyad O** D**
  • Mesajlar 290
  • Beğeniler 155 / 55
  • Ticaret 0, (%0)
merhaba arkadaşlar php öğreniyordum da belli bir miktar geliştim de küçük scriptler yapmaya başladım kafama takılan bir soru var. üyelik ve her üyeye özel bilgi mantığı nasıl olacak?

yani şöyle diyelim sitede ozan15 adlı üyeyim ben benim profil sayfam bana özel olur benim biliglerim olur veya yapacağım şeyler vs. daha sonra ahmet veya mehmet adında başka bir kişi de sisteme üye olunca onun kendi bilgileri kendi profilinde olacak. bu sistem ne mantıkla işler en basit şekilde her üyenin kendinde özel biligleri olarak. Üyeye özel İD değeri falan mı atanıyor üyelikli sitelerde. (örneğin forum siteleri)
 

 

wmaraci
reklam

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
Evet.

username password ile doğrulatırsın. dönen id yi sessionda tutarsın.

temeli bu
ozan15

kişi bu mesajı beğendi.

ozan15 ozan15 Security Kullanıcı
  • Üyelik 29.06.2017
  • Yaş/Cinsiyet 23 / E
  • Meslek Öğrenci
  • Konum Eskişehir
  • Ad Soyad O** D**
  • Mesajlar 290
  • Beğeniler 155 / 55
  • Ticaret 0, (%0)
Teşekkürler. Bu konu ile ilgili bir doküman var mıdır?
 

 

Rastena Rastena WM Aracı Kullanıcı
  • Üyelik 23.08.2014
  • Yaş/Cinsiyet 25 / E
  • Meslek Dijital Pazarlama
  • Konum İngiltere
  • Ad Soyad F** O**
  • Mesajlar 3775
  • Beğeniler 836 / 1380
  • Ticaret 190, (%100)
Sinan yardımcı olabilir :)
ozan15

kişi bu mesajı beğendi.

prestij
wmaraci
wmaraci

MyYafes MyYafes Developer Kullanıcı
  • Üyelik 05.03.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Full-Stack Web Developer
  • Konum Ankara
  • Ad Soyad M** M**
  • Mesajlar 25
  • Beğeniler 0 / 7
  • Ticaret 0, (%0)
@ozan15 şimdi şöyle düşün;

Veri tabanı vardır tüm bilgileri tutacağın burada bir tablomuz olsun ismi uyeler 3 alanımız olsun; uye_id, uye_ismi, kullanici_adi, şifre, alanları düşün.

Çok basit bir şekilde üyelik örneği yapıyorum belki anlamana yardımcı olur. Gerekli yerlerde de açıklamalar yaptım burada gördüğün örneği geliştirmek tabii senin elinde sormak istediğin yerlerde yine buradan soru sorarsan yardımcı olabiliriz.

localhostta veritabani isminde bir veri tabanı oluşturup içerisine gir sql bölümünden altaki kod ile tablolar oluşturulacaktır.

CREATE TABLE `veritabani`.`uyeler` ( `uye_id` INT(11) NOT NULL AUTO_INCREMENT , `uye_ismi` VARCHAR(255) NOT NULL , `kullanici_adi` VARCHAR(255) NOT NULL , `sifre` VARCHAR(255) NOT NULL , PRIMARY KEY (`uye_id`)) ENGINE = InnoDB;

uye_id kısmı AUTO_INCREMENT yaptık çünkü biz bu alana bir şey yazmayacağız üyelerimize benzersiz bir numara verecek sistem otomatik olarak. Varchar alanlar ise sayı karakter ve büyük küçük harf girebileceğiz. üye id kısmı sadece sayısal olacağı için int dedik.

baglanti.php oluşuturp içine bu kodları yazıyoruz.
/* VERİ TABANI BAĞLANTISI */
define('DATABASE_HOST','127.0.0.1'); // Sunucu ismi
define('DATABASE_NAME','veritabani'); // Veri tabanı ismi
define('DATABASE_USERNAME','root'); // Veri tabanı kullanıcı adı
define('DATABASE_PASSWORD',''); // Veri tabanı şifrem


// TRY - CATCH yapısı ile daha anlamlı hatalar yakalıyoruz...
try {
$db = new PDO('mysql:host='.DATABASE_HOST.';dbname='.DATABASE_NAME.';charset=utf8',DATABASE_USERNAME,DATABASE_PASSWORD);
} catch(PDOException $e){
echo 'Hata: '.$e->getMessage();

}
/* SON */
?>


kayit.php kodları:
require 'baglanti.php'; // Veri tabanı dosyamızı dahil ettik.

if ( !isset($_SESSION['giris']) ) {
if ( isset($_POST['kayit']) ) {
if ( !empty($_POST['isim']) && !empty($_POST['kadi']) && !empty($_POST['sifre']) ) {

$query = $db->prepare("SELECT * FROM uyeler WHERE kullanici_adi=?");
$query->execute(array($_POST['kadi']));

if ( $query->rowCount() == 1) { // bu değer sadece bu gelen isimde bir kullanıcı adı var ise 1 olur.
echo "Bu kullanıcı adı zaten kayıtlı!";
} else {
// girilen isimle eşleşen kayıtlı kullanıcı yok ise

$query = $db->prepare("INSERT INTO uyeler(uye_ismi,kullanici_adi,sifre) VALUES(?,?,?)");
$insert = $query->execute(array($_POST['isim'],$_POST['kadi'],$_POST['sifre']));
if ($insert) { // kayıt oluşturulmuş ise giriş yapıp yönlendiriyoruz

$_SESSION['giris'] = true;
$_SESSION['kullanici_adi'] = $_POST['kadi'];
echo "Başarılı bir şekilde kayıt oldunuz ve giriş yaptınız.";

} else {
echo "Kayıt işlemi gerçekleştirilikren bir hata oluştu.";
}

}

} else {
echo 'Lütfen tüm alanları doldurun!';
}
}
?>




İsminiz:

Kullanıcı Adı:

Şifre:



} else {
header('Location:index.php');
}
?>


giris.php kodları

require 'baglanti.php'; // Veri tabanı dosyamızı dahil ettik.

if ( !isset($_SESSION['giris']) ) {

if ( isset($_POST['giris']) ) {
if ( !empty($_POST['kadi']) && !empty($_POST['sifre']) ) { //!empty ile boş alan yoksa şekline kontrol edilir.

$query = $db->prepare("SELECT * FROM uyeler WHERE kullanici_adi=? AND sifre=?");
$query->execute(array($_POST['kadi'],$_POST['sifre']));

if ( $query->rowCount() == 1) { // ÜYelik var ise devam ediyorum
$row = $query->fetch(PDO::FETCH_ASSOC); // fetc_assoc ile row değişkenine tablodan gelen verileri alıyorum

$_SESSION['giris'] = true; // giriş için gerekli oturumları başlatıyoruz.
$_SESSION['uye_id'] = $row['uye_id'];
$_SESSION['kullanici_adi'] = $row['kullanici_adi'];
echo "Başarılı bir şekilde giriş yaptınız.";
header('Location:index.php'); // yönlendirme ypaıyoruz

} else { // bilgiler yanlışsa
echo 'Bilgilerinizi kontrol edin!';
}

} else { // boş alanlar var ise
echo 'Lütfen tüm alanları doldurun!';
}
}
?>




Kullanıcı Adı:

Şifre:



} else {
header('Location:index.php'); // giriş yapılmışsa burayı göstermek anlamsız olur index.php yönlenecek.
}
?>


profil.php içerisinde aşağıdaki kodlarımız yer alsın;


require 'baglanti.php'; // Veri tabanı dosyamızı dahil ettik.
//* http://127.0.0.1/profil.php?id=1 *\\

if ( isset($_SESSION['giris']) ) {

$id = $_GET['id']; // Buradaki get içerisinde yer alan id profil.php?id den gelmektedir.
$query = $db->prepare("SELECT * FROM uyeler WHERE uye_id=?"); // Sorgumuz oluşturduk.
$query->execute(array($id)); // Sorguda sql güvenliği için prepare ve execute kullandık.

if ($query->rowCount() >= 1) { // Bu id'ye ait bir üye varsa sayfayı gösterdik.
$row = $query->fetch(PDO::FETCH_ASSOC);

echo 'Hoşgeldin, '.$row['uye_ismi'];

} else { // Üye yok ise bu kısım çalışır.
echo 'Bu bilgide bir kullanıcı bulunamadı!';
}

} else {
header('Location:giris.php');
}
?>


index.php kodları

require 'baglanti.php'; // Veri tabanı dosyamızı dahil ettik.

if ( isset($_SESSION['giris']) ) {
echo 'Hoşgeldiniz, '.$_SESSION['kullanici_adi']. ' Profile Git - Çıkış Yap';
} else {
header('Location:giris.php');
}

if ( isset($_GET['logout']) && $_GET['logout'] == 1) {
session_destroy();
header('Location:giris.php');
}
?>

ozan15 Escalous

kişi bu mesajı beğendi.

ozan15 ozan15 Security Kullanıcı
  • Üyelik 29.06.2017
  • Yaş/Cinsiyet 23 / E
  • Meslek Öğrenci
  • Konum Eskişehir
  • Ad Soyad O** D**
  • Mesajlar 290
  • Beğeniler 155 / 55
  • Ticaret 0, (%0)

MyYafes adlı üyeden alıntı

@ozan15 şimdi şöyle düşün;

Veri tabanı vardır tüm bilgileri tutacağın burada bir tablomuz olsun ismi uyeler 3 alanımız olsun; uye_id, uye_ismi, kullanici_adi, şifre, alanları düşün.

Çok basit bir şekilde üyelik örneği yapıyorum belki anlamana yardımcı olur. Gerekli yerlerde de açıklamalar yaptım burada gördüğün örneği geliştirmek tabii senin elinde sormak istediğin yerlerde yine buradan soru sorarsan yardımcı olabiliriz.

localhostta veritabani isminde bir veri tabanı oluşturup içerisine gir sql bölümünden altaki kod ile tablolar oluşturulacaktır.

CREATE TABLE `veritabani`.`uyeler` ( `uye_id` INT(11) NOT NULL AUTO_INCREMENT , `uye_ismi` VARCHAR(255) NOT NULL , `kullanici_adi` VARCHAR(255) NOT NULL , `sifre` VARCHAR(255) NOT NULL , PRIMARY KEY (`uye_id`)) ENGINE = InnoDB;

uye_id kısmı AUTO_INCREMENT yaptık çünkü biz bu alana bir şey yazmayacağız üyelerimize benzersiz bir numara verecek sistem otomatik olarak. Varchar alanlar ise sayı karakter ve büyük küçük harf girebileceğiz. üye id kısmı sadece sayısal olacağı için int dedik.

baglanti.php oluşuturp içine bu kodları yazıyoruz.
/* VERİ TABANI BAĞLANTISI */
define('DATABASE_HOST','127.0.0.1'); // Sunucu ismi
define('DATABASE_NAME','veritabani'); // Veri tabanı ismi
define('DATABASE_USERNAME','root'); // Veri tabanı kullanıcı adı
define('DATABASE_PASSWORD',''); // Veri tabanı şifrem


// TRY - CATCH yapısı ile daha anlamlı hatalar yakalıyoruz...
try {
$db = new PDO('mysql:host='.DATABASE_HOST.';dbname='.DATABASE_NAME.';charset=utf8',DATABASE_USERNAME,DATABASE_PASSWORD);
} catch(PDOException $e){
echo 'Hata: '.$e->getMessage();

}
/* SON */
?>


kayit.php kodları:
require 'baglanti.php'; // Veri tabanı dosyamızı dahil ettik.

if ( !isset($_SESSION['giris']) ) {
if ( isset($_POST['kayit']) ) {
if ( !empty($_POST['isim']) && !empty($_POST['kadi']) && !empty($_POST['sifre']) ) {

$query = $db->prepare("SELECT * FROM uyeler WHERE kullanici_adi=?");
$query->execute(array($_POST['kadi']));

if ( $query->rowCount() == 1) { // bu değer sadece bu gelen isimde bir kullanıcı adı var ise 1 olur.
echo "Bu kullanıcı adı zaten kayıtlı!";
} else {
// girilen isimle eşleşen kayıtlı kullanıcı yok ise

$query = $db->prepare("INSERT INTO uyeler(uye_ismi,kullanici_adi,sifre) VALUES(?,?,?)");
$insert = $query->execute(array($_POST['isim'],$_POST['kadi'],$_POST['sifre']));
if ($insert) { // kayıt oluşturulmuş ise giriş yapıp yönlendiriyoruz

$_SESSION['giris'] = true;
$_SESSION['kullanici_adi'] = $_POST['kadi'];
echo "Başarılı bir şekilde kayıt oldunuz ve giriş yaptınız.";

} else {
echo "Kayıt işlemi gerçekleştirilikren bir hata oluştu.";
}

}

} else {
echo 'Lütfen tüm alanları doldurun!';
}
}
?>




İsminiz:

Kullanıcı Adı:

Şifre:



} else {
header('Location:index.php');
}
?>


giris.php kodları

require 'baglanti.php'; // Veri tabanı dosyamızı dahil ettik.

if ( !isset($_SESSION['giris']) ) {

if ( isset($_POST['giris']) ) {
if ( !empty($_POST['kadi']) && !empty($_POST['sifre']) ) { //!empty ile boş alan yoksa şekline kontrol edilir.

$query = $db->prepare("SELECT * FROM uyeler WHERE kullanici_adi=? AND sifre=?");
$query->execute(array($_POST['kadi'],$_POST['sifre']));

if ( $query->rowCount() == 1) { // ÜYelik var ise devam ediyorum
$row = $query->fetch(PDO::FETCH_ASSOC); // fetc_assoc ile row değişkenine tablodan gelen verileri alıyorum

$_SESSION['giris'] = true; // giriş için gerekli oturumları başlatıyoruz.
$_SESSION['uye_id'] = $row['uye_id'];
$_SESSION['kullanici_adi'] = $row['kullanici_adi'];
echo "Başarılı bir şekilde giriş yaptınız.";
header('Location:index.php'); // yönlendirme ypaıyoruz

} else { // bilgiler yanlışsa
echo 'Bilgilerinizi kontrol edin!';
}

} else { // boş alanlar var ise
echo 'Lütfen tüm alanları doldurun!';
}
}
?>




Kullanıcı Adı:

Şifre:



} else {
header('Location:index.php'); // giriş yapılmışsa burayı göstermek anlamsız olur index.php yönlenecek.
}
?>


profil.php içerisinde aşağıdaki kodlarımız yer alsın;


require 'baglanti.php'; // Veri tabanı dosyamızı dahil ettik.
//* http://127.0.0.1/profil.php?id=1 *\\

if ( isset($_SESSION['giris']) ) {

$id = $_GET['id']; // Buradaki get içerisinde yer alan id profil.php?id den gelmektedir.
$query = $db->prepare("SELECT * FROM uyeler WHERE uye_id=?"); // Sorgumuz oluşturduk.
$query->execute(array($id)); // Sorguda sql güvenliği için prepare ve execute kullandık.

if ($query->rowCount() >= 1) { // Bu id'ye ait bir üye varsa sayfayı gösterdik.
$row = $query->fetch(PDO::FETCH_ASSOC);

echo 'Hoşgeldin, '.$row['uye_ismi'];

} else { // Üye yok ise bu kısım çalışır.
echo 'Bu bilgide bir kullanıcı bulunamadı!';
}

} else {
header('Location:giris.php');
}
?>


index.php kodları

require 'baglanti.php'; // Veri tabanı dosyamızı dahil ettik.

if ( isset($_SESSION['giris']) ) {
echo 'Hoşgeldiniz, '.$_SESSION['kullanici_adi']. ' Profile Git - Çıkış Yap';
} else {
header('Location:giris.php');
}

if ( isset($_GET['logout']) && $_GET['logout'] == 1) {
session_destroy();
header('Location:giris.php');
}
?>



Çok teşekkür ederim elinize emeğinize sağlık.
 

 

PhonexPHP PhonexPHP WM Aracı Kullanıcı
  • Üyelik 19.09.2016
  • Yaş/Cinsiyet 33 / E
  • Meslek PHP Geliştiricisi
  • Konum Eskişehir
  • Ad Soyad G** D**
  • Mesajlar 86
  • Beğeniler 8 / 42
  • Ticaret 0, (%0)
Veritabanı yapısını biraz anlaman kodlama kısmından daha yararı olacaktır.

Üyeler diye bir tablon vardır.

İçerisinde ad, soyad, email, yaş gibi kolonlar bulunur.

Bu kolonlarda her satır bir ID numarası alır. Eşsizdir. TC Kimlik numarası gibi.

Bu ID numarası ile kullanıcıyı belirtir ve o bilgileri o satır içerisinde tutarsın. Tüm mantık budur.
 

 

MyYafes MyYafes Developer Kullanıcı
  • Üyelik 05.03.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Full-Stack Web Developer
  • Konum Ankara
  • Ad Soyad M** M**
  • Mesajlar 25
  • Beğeniler 0 / 7
  • Ticaret 0, (%0)

ozan15 adlı üyeden alıntı

Çok teşekkür ederim elinize emeğinize sağlık.


Rica ederim, önemli olan id kullanımının mantığını anlamak çalışma prensiplerini çözmek. Yine bir problemin olursa buradan yazarsan ben de forumdaki deneyimli arkadaşlar da vardır yardımcı oluruz.
ozan15

kişi bu mesajı beğendi.

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