Linkedin Instagram Facebook Twitter Mail Youtube Whatsapp

Codeigniter Örnek Proje (İnsert,Select,Update,Delete)

Merhabalar , gmail üzerinden bana ulaşan bir arkadaşımızın isteği üzerine basit bir admin girişi , admin girişi sonrası kayıt ekleme sayfasında kayıt ekleme , kayıtları listeleme , silme ve güncelleme işlemlerini hızlı bir şekilde yapacağız. Benden istenilen üç adet sosyal medyaya ait linklerin eklenmesi , arayüzde gösterilmesi ve güncellenmesiydi. Ben bunun yerine kayıt eklemeyi tercih ettim. Zaten aynı mantık ile diğerleri de yapılabilir. İlk olarak yapılandırma ayarlarında birkaç değişiklik yapalım. 1- Application/Config/Config.php içinde base url ayarımızı yapalım.
$config['base_url'] = 'http://localhost/code/';
2- Aynı sayfada index.php ibaresini kaldırmak için dizini şöyle ayarlayalım.
$config['index_page'] = '';
3- Application/Config/Autoload.php içerisinde üç adet kütüphane dahil edelim. Veritabanı kullanacağımız için database , session işlemleri olacağı için session , form kontrolleri yapılacağı için de form_validation kütüphanelerimizi otomatik olarak sayfalarımıza dahil edelim.
$autoload['libraries'] = array('database','session','form_validation');
4- Base url kullanmak faydalıdır. Bunun için bir helper dahil edeceğiz projeye. Bu helper’in adı da url olacak. Aşağıdaki gibi alanı düzenleyelim.
$autoload['helper'] = array('url');
5- Aynı dizinde database.php içerisinde gerekli veritabanı bilgilerimizi gireceğimiz bir alan bulunmakta.Burayı kendinize göre düzenleyin.
$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',
	'username' => 'root',
	'password' => '',
	'database' => 'code',
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);
Şimdi sayfamızı çalıştıralım. http://localhost/code/ şeklinde çalıştırdığımda index.php koymadan ilk çalışacak controller seçilmedi. Bir controller dosyası oluşturalım ve Application/Config/routes.php içerisine gelerek ana controller dosyamızı buraya yazalım.  Ben controller ismini Anasayfa olarak belirttim.
$route['default_controller'] = 'Anasayfa/';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
Şeklinde düzenleyebiliriz. Şimdi artık controller dosyamıza gerekli kodları yazarak bir index metodu ekleyebiliriz.İndex metodu controller ismi yazıldığında ilk çalışacak koddur.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');


class Anasayfa extends CI_Controller {
	function __construct()
	{
		parent::__construct();

	}
	public function index(){
		echo "Anasayfadasın";
	}
}
Tabi biz bu sayfada böyle basit bir işlem yapmayacağız. Öncelikle burada bir giriş alanı olacak. Eğer admin giriş yapmış ise veriler önünde listelenecek , yapmamış ise onu formdan giriş yapmaya zorlayacağız. Şimdi bir session kontrolü yapalım bakalım adam giriş yapmış mı.Yukarıdaki index metodunu şöyle güncelleyin ;
<?php
defined('BASEPATH') OR exit('No direct script access allowed');


class Anasayfa extends CI_Controller {
	function __construct()
	{
		parent::__construct();

	}
	public function index(){
		if(empty($this->session->username)){
			$this->load->view('login.php');
		}else{
			redirect(base_url().'Admin');
		}

	}
}
Yukarıda yer alan $this->session->username bölümü nereden geldi diye soracak olursanız onu şimdi ayarlayacağız. Form oluşturacağız , formun action bölümünde bir LoginControl metodu çalışacak ve bu kontroller sonucunda eğer başarılı ise session’lar oluşacak.Yukarıdaki kodlardan anlaşılacağı üzere bir giriş yapılmadıysa login view’a yönlendirecek bizi. Bu view dosyasını oluşturalım.
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Giriş Sayfası</title>
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
</head>
<body>
	<h3>Giriş Yapın</h3>
	<form action="<?=base_url()?>Anasayfa/LoginControl" method="post">
		<table>
		<tr>
			<td>Kullanıcı Adı</td>
			<td><input class="form-control" type="text" name="kadi"></td>
		</tr>
		<tr>
			<td>Şifre</td>
			<td><input class="form-control" type="password" name="sifre"></td>
		</tr>
		<tr>
			<td></td>
			<td><input class="form-control" type="submit" name="login" value="Giriş Yap"></td>
		</tr>
</table>
	</form>
	<h4><?php echo @$hata?></h4>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
</body>
</html>
Şimdi artık LoginControl metodunu Anasayfa Controller dosyamızda oluşturmaya başlayabiliriz.
public function LoginControl(){
		if($_POST['login']){
			$this->form_validation->set_rules('kadi','Kullanıcı Adı','required');
			$this->form_validation->set_rules('sifre','Şifre','required');
                        //Projeye dahil ettiğimiz validasyonları kullandık. İlk değer inputta tanımlı olan değer , ikincisi title , üçüncüsü ise kural yani required (gerekli).
			if($this->form_validation->run() == TRUE){
                        // Formda her şey yolunda ise hiçbir alan boş değil ise
				$this->load->model('verimodel'); 
                        // burada model dosyası yükleyip veritabanı işlemlerini yapacağız.
				$username = $this->input->post('kadi');
				$password = $this->input->post('sifre');
                           // Kullanıcı adı ve şifre değerlerini aldık.
				$result = $this->verimodel->LoginControl($username,$password);
                            // bu result değeri model dosyasından gelen sonuca eşitlenecek.  Bu sefer Verimodel Model dosyasındaki LoginControl metodu çalışacak. İsmi farklı olabilirdi ama böyle yaptık. İki adet de parametre gönderdik. Bunları verimodel dosyasına alacağız.
				if($result == 1){
					$user = $this->verimodel->getUserInfo($username);
					$sessionData = array(
						'username' => $username,
						'userid'   => $user
						);
					$this->session->set_userdata($sessionData);
					redirect(base_url().'Admin');
				}else{
					redirect(base_url());
				}

			}else{
				$error["hata"] = "Boş alan bırakmayın!";
				$this->load->view('login.php',$error);
			}
		}
	}
Şimdi Verimodel adında bir model dosyası oluşturalım.  Class ismi ile model dosyası isminin aynı olmasına dikkat edin. Kodlar şöyle olsun ;
<?php

class verimodel extends CI_Model{
	function __construct(){
		parent:: __construct();
		$this->load->database(); // database sınıfını yükledik.

	}
public function LoginControl($username,$password){
		$this->db->where('username',$username);
		$this->db->where('password',$password);
		$query = $this->db->get('admin');
		if($query->num_rows() > 0){
			return 1;
		}else{
			return 0;
		}
	}

}
Klasik where , select sorguları ile name değerlerinden gelen değerlere eşit veritabanında böyle bir kayıt varmı diye kontrol ettik. Eğer böyle bir satır var ise 1, yoksa 0 değeri dönecek. Bu 1 ve 0 da controller dosyamızda bizim if komutunu yapmamıza yardımcı oldu. hepsi birbiri ile bağlantılı. İf($result == 1) bölümü burayla ilişkili. Artık giriş işlemi yapıldıysa bizi Admin Controller sayfasına yönlendirecek. Burada da bir view dosyası çağırıp veriler listeletecek , çıkış işlemi , güncelleme ve ekleme işlemi yapacağız. Eğer başarısız ise de tekrar bizi giriş yapmaya zorlayacak sayfaya yönlendirecek.  Şimdi Admin Controller dosyasını oluşturalım ve aşağıdaki gibi içini dolduralım.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class  Admin extends CI_Controller {

	function __construct()
	{
		parent::__construct();

	}

	public function index(){
		if( !empty($this->session->username)){
			$this->load->view('panel.php');
		}else{
			redirect(base_url());
		}
		
	}

}
Çok sade ve basit bir kod parçası. Yine sayfaya ilk girildiğinde index metodunda giriş yapılmış mı bunu kontrol edecek ve session var ise devam edecek view dosyası yükleyecek , yok ise anasayfaya yönlendirecek giriş yaptıracak. Yukarıda bahsi geçen panel.php view’ini oluşturalım.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title>Admin Panel</title>
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
	<style type="text/css">
		body{padding: 30px}
	</style>
</head>
<body>
	Hoşgeldiniz , <b><?=$_SESSION["username"]?></b> burası admin paneli.
	
	<a href="<?php echo base_url()?>Anasayfa/logout">Çıkış Yap</a>
	<hr>
<p>Aşağıdaki formu doldurarak kayıt yapabilirsiniz!</p>
<div id="container">
	<form action="<?=base_url()?>Anasayfa/kaydet" method="post">
			<table>
				<tr>
					<td>Kullanıcı Adı</td>	
					<td><input class="form-control" type="text" name="kadi"></td>
				</tr>
				<tr>
					<td>Şifre</td>
					<td><input class="form-control" type="password" name="sifre"></td>
				</tr>
				<tr>
					<td>Eposta</td>	
					<td><input class="form-control" type="text" name="eposta"></td>
				</tr>
			</table>
			<input class="btn btn-danger" type="submit" value="Kaydet">
	</form>
	<a href="http://localhost/code/Anasayfa/listele">Kayıtları Listele</a>
	
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
</body>
</html>
Burada bootstrap kütüphaneleri dahil edilmiş , session kullanıcı adı değeri yazdırılmış , yeni bir kullanıcı eklemek için gerekli input alanları eklenmiş,  ek olarak iki adet de metoda yol verilmiş. Biri çıkış işlemi diğeri ise ekleme yapmamıza yarayacak kaydet metodu. Şimdi yukarıdaki formda bahsi geçen kaydet metodunu controller dosyamızda yazmaya başlayalım. Anasayfa controller içine gelip ;
public function kaydet()
	{
		$form_data = array(
			'name' => $this->input->post('kadi'),
			'pass' => $this->input->post('sifre'),
			'eposta' => $this->input->post('eposta')
		);
		$this->load->model('verimodel');
		$sonuc = $this->verimodel->ekle($form_data);
		if($sonuc=1){
			 
			redirect(base_url());
		}else{
			echo'Sorun var';
		}
	}
Şimdi mantık şu ; ilk olarak post üzerinden gelen verileri aldık. Ardından model dosyamızı yükledik ve model dosyamızda hangi metodun kayıt işlemini gerçekleştireceğini belirttik. Ekle metodu bizim için veritabanına kayıt işlemini yapacak. Haliyle değerleri de $form_data dizisi içinde bu fonksiyona gönderdik. Buradan bizim için 1 ya da 0 değeri dönecek ve if komutunda buna göre işlem yapacağız. Model dosyamızı görelim ;
function ekle($form_data){
		$this->db->insert('users',$form_data);
	}
İşte bu kadar. ekle fonksiyonu gelen form bilgilerini aldı ve basit bir insert işlemi ise users tablosuna ekledi. Şimdi sırayla giderek admin’in çıkış işlemini yapalım aradan çıksın. Anasayfa/logout metodu çalışacak. Anasayfa controller dosyasında bir logout fonksiyonu oluşturalım ve içine  ;
public function logout(){
		session_destroy();
		redirect(base_url());

	}
yazalım. Saf php de olduğu gibi destroy kullanıp ardından da ana sayfaya yönlendiriyoruz. Admin sayfamız gördüğünüz üzere sadece ekleme ve çıkış işi yapıyor. Ama burada bir link olmalı ve verileri görüp , düzenlemeli ya da silmeli değil mi ? Buraya bir link ekleyelim ve listele metodu ile verilerimizi veritabanından çekip gerekli işlemleri yaptıralım. (Panel.php de <a href=”http://localhost/code/Anasayfa/listele”>Kayıtları Listele</a> bu alanda kodu eklemiştik.) Yine Controller dosyasında bir metod oluşturalım. İsmi listele olsun. İçerisini aşağıdaki gibi dolduralım.
public function listele(){
		$this->load->model('verimodel');
		$veriler = $this->verimodel->listele();
		$data = array();
		$data["bilgiler"] = $veriler;
		$this->load->view('veriler_view.php',$data);
	}
Şimdi olay yine basit. Model dosyasını yükledik , $veriler değişkenine ise verimodel model dosyamızda listele metodu sonucunda dönecek değerleri atadık. $veriler değişkeni şuan dolu. Boş bir $data array’ı tanımladık ve ardından $data[‘bilgiler’] içerisinde dizi halinde $verileri atadık. Controller’dan view’a veri göndermek bildiğiniz gibi dizi halinde oluyordu yani buna mecburuz. Ardından ise bunları bir sayfada gösterebilmek için veriler_view dosyasını oluşturup view dosyasını burada yüklüyoruz. Şimdi veriler_view .php oluşturmaya başlayalım.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Veri Listeleme</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="col-md-10">
<h3>Son kayıtlar</h3>
<table class="table table-inverse">
    <?php foreach($bilgiler as $veri){ ?>
    <tr>
      <td><?=$veri['id']?></td>
      <td><?=$veri['name']?></td>
      <td><?=$veri['eposta']?></td>
      <td><a class="btn btn-danger" href="<?php echo base_url(); ?>Anasayfa/verisil/<?=$veri['id']?>">Sil</a></td>
      <td><a class="btn btn-primary" href="<?php echo base_url(); ?>Anasayfa/duzenle/<?=$veri['id']?>">Düzenle</a></td>
    </tr>
     <?php } ?>
</table>
    <div class="alert alert-success">Yeni bir kayıt ekleyin <a href="http://localhost/code/Anasayfa/" class="btn btn-primary">Ekle</a></div>
    </div>
    <div class="col-md-2"></div>
    </div>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
</body>
</html>
Burada gelen değerler dizi halinde geldi.Foreach ile döngüye soktum ve tek tek kullanıcı bilgilerini tablo şeklinde yazdırdım.Ardından her birinin yanına da silme ve düzenleme linki koyup href değerlerini verdim.
<td><a class="btn btn-danger" href="<?php echo base_url(); ?>Anasayfa/verisil/<?=$veri['id']?>">Sil</a></td>
Burada ve
<td><a class="btn btn-primary" href="<?php echo base_url(); ?>Anasayfa/duzenle/<?=$veri['id']?>">Düzenle</a></td>
burada olmayan şeyler var. Yani duzenle metodu yok , sil metodu yok ama zaten yeni yeni oluşuyor.Bu metodlar sonradan oluşacak ve saf php deki gibi $id değerini alarak get sayesinde işlemleri yapacağız. Şimdi verileri düzgün görüntüleyebiliyor isek devam edelim ve ilk olarak basit olan silme işlemini yapalım. Anasayfa Controller içinde verisil metodu oluşturup içine şu kodları yazalım ;
public function verisil(){
		$this->load->model('verimodel');
		$id = $this->uri->segment(3);
               //Url'de 3. parametre bildiğiniz gibi id değeri oluyor. Projeye göre değişeibilir ama bizde Dizin/Controller/metod/4 gibi bir yapı olduğu için 3. parametremiz id değeri oluyor.
		$sil = $this->verimodel->sil($id);
		if($sil==0){
			echo "başarısız";
		}else{
			redirect('Anasayfa/listele');
		}
	}
Şimdi Verimodel dosyamızda bir sil metodu oluşturalım ve içine  ;
function sil($id){
		$this->db->delete('users',array('id'=>$id));
	}
kodları yazalım. Tek satır ile gelen $id değerine ait veriye sahip veriyi tablodan sildik.Sorgu basit ve sade. Şimdi en önemlisini yapmaya geçebiliriz. Düzenleme ve güncelleme. Burada düzenle linkine tıkladığımızda o veriye ait bir sayfa açılacak. Burada iki adet düzenlenebilir textbox olacak ve içlerinde de veritabanında kayıtlı değerleri yazacak. Biz güncellemek için yeni değerleri yazıp güncelle butonuna tıkladığımızda ise artık yeni değerler veritabanına eklenip çekilecek. İlk olarak düzenleme işlemini yapalım. Anasayfa Controller dosyasında bir duzenle metodu oluşturalım.
public function duzenle($id){
		$this->load->model('verimodel');
		$id = $this->uri->segment(3);
		$veriler = $this->verimodel->getir($id);
		$datalar = array();
		$datalar["bilgi"] = $veriler;
		$this->load->view('duzenle_view.php',$datalar);

	}
Burada select işlemi yapıyoruz aslında ancak bir şarta bağlı select işlemi. Yine model  dosyası yükleniyor , id değeri alınıyor. Ardından veritabanı işlemini yapacak olan model dosyası ve metodu belirtiyoruz. Listeleme de olduğu gibi bir boş array oluşturup ardından değerleri oluşturacağımız duzenle_view dosyasına gönderiyoruz. Verimodel.php dosyasında getir metodunu oluşturalım.
function getir($id){
		$query = $this->db->get_where('users',array('id'=>$id));
		return $query->result_array();
	}
Şimdi de duzenle_view.php dosyasında belirli kullanıcıya ait verileri çekip güncelleme işlemini yapacağız.
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">

	<title>Düzenleme Formu</title>
	<style type="text/css">
		body{padding:30px;}
	</style>
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
</head>

<body>
<p>Kişiyi Düzenle</p>
<?php foreach($bilgi as $row){} ?>
<div id="container">
	<form action="<?=base_url()?>Anasayfa/guncelle/<?=$row['id']?>" method="post">
			<table>

				<tr>
					<td>Kullanıcı Adı</td>	
					<td><input class="form-control" type="text" name="new_kadi" value="<?php echo $row["name"]?>"></td>
				</tr>

				<tr>
					<td>Eposta</td>	
					<td><input class="form-control" type="text" name="new_eposta" value="<?php echo $row["eposta"]?>"></td>
				</tr>
				
			</table>
			<input class="btn btn-danger" type="submit" value="Güncelle">
	</form>
	
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
	
<div>
</div>
</body>
</html>
Bu formun action bölümü de oldukça açıklayıcı.Yine güncelleme metodu için bir id değeri lazım. Bu değeri de aldık. Formdaki verilerin eskileri ile güncellenmesi için yeni name değerleri atadık. Value değerlerine ise veritabanından gelen güncel değerleri çektik. Artık güncelleme butonuna basıldığında eski değerler ile yenileri değişebilir. Bizi yönlendireceği controller dosyamız olan guncelle metodunu oluşturmaya  başlayabiliriz.
public function guncelle($id){
	$this->load->model('verimodel');
	$id = $this->uri->segment(3);
	$update = $this->verimodel->guncelle($id);
	if($update ){
		echo "malesef";
	}else{
		redirect('Anasayfa/listele');
	}
	}
id değeri alındı , işlendi. Eğer güncelleme işlemi yapılırsa bizi listele metoduna götürecek ve veriler güncel haliyle karşımıza çıkacak.Yoksa hata mesajı yazalım. Şimdi model dosyamızda çalışacak olan guncelle metoduna bakalım.
public function guncelle($id){
		$degerler = array(
			'name'=>$this->input->post('new_kadi'),
			'eposta'=>$this->input->post('new_eposta')
		);
		$this->db->where('id',$this->uri->segment(3));
		$this->db->update('users',$degerler);
		
	}
Son girilen post değerlerini burada kullanıcıdan alıyoruz. $degerler dizimizin içinde name ve eposta değerleri var. Şimdi id değeri de alındığına göre artık update işlemi yapılabilir. Veritabanındaki eski veriler ve yeni veriler
$this->db->update('users',$degerler);
burada işlenmiş ve bitmiş oluyor. Görüldüğü üzere mantık birkaç örnek ile oturacaktır. Zaten toplamda temel 4 adet metod kullanılıyor. Ek olarak birkaç ayarları da bildiğimiz zaman bu işlemleri rahatlıkla yapabiliriz. Codeigniter Örnek proje insert,update,select,delete işlemlerinin yanı sıra bir de session işlemi yapıldı. Form kontrolleri yapıldı ve yölendirmeler gerçekleştirildi.Kapsamlı bir örnek oldu. Not : Facebook , Twitter ve İnstagram linkleri yapmak ve burada kullanıcı kaydetmek arasında bir fark yoktur. İşlem temelde aynıdır. Veritabanını kendinize göre yapılandırırsanız olay tamamdır. Aşağıda projenin son halini atıyorum. Ek olarak 2 adet tablo var burada , admin ve users. Kolonlar kodlarda anlaşılabilir. Bu örneğe ait anlaşılmayan yer olursa belirtirsiniz. Kolay gelsin. İndirme Linki (Google drive) : https://drive.google.com/open?id=0B6eBeHqW9_DnWmprcmliakxFRnM  

Bir Yorum Yaz