pdo-uygulama-1-0

Geldik Uygulamamıza Uygulamaya Baslamadan Önce Bir Kac Dosyamız Var Onu Yabcaz.


Tabi Önce Dosyalar Vasıl Onu Gorelim



İlk Sayfamiz Linkleri Ana Sayfaya Yonlendircek Olan .htaccess Sayfası


<IfModule mod_rewrite.c>

<IfModule mod_negotiation.c>

Options -MultiViews

</IfModule>


RewriteEngine On


# Bir Klasör Değilse Sondaki Eğik Çizgi ...

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)/$ /$1 [L,R=301]


# Ön Kumanda Kolu ...

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ index.php [L]


# İzin Yetki Başlığı

RewriteCond %{HTTP:Authorization} .

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

</IfModule>


İkinci Sayfamız Veri Tabanı Sayfası Modeller/Veritabani.php


<?php

// VeriTabani Sınıfı

class Veritabani{

protected static $db;

public function __construct(){

try {

$servername = 'localhost';

$dbname = 'pdo';

$username = 'root';

$password = '';

self::$db = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

// set the PDO error mode to exception

self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

self::$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);

}

catch(PDOException $e)

{

echo "Bağlantı Hatası : " . $e->getMessage();

}

}

}


?>


Üçüncü Sayfamız Router Kısmını Yabdığımız Ayar Sayfası Olan ve İcine Guvenlik İşlemelrinide Bulundurlabilcek Sayfamız Ayarlar.php


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254" />

<?php

@session_start();

//Hata Gizleme

//error_reporting(0);


// Autoload Esnek Sekilde Almak

function autoloadLib($sinif_ismi)

{

$sinif_ismi = str_replace("\\", DIRECTORY_SEPARATOR, $sinif_ismi);

$sinif_adresi = __DIR__.DIRECTORY_SEPARATOR."View".DIRECTORY_SEPARATOR.$sinif_ismi . ".php";

if (is_readable($sinif_adresi)) {

include ($sinif_adresi);

}

}


function autoloadModel($sinif_ismi)

{

$sinif_ismi = str_replace("\\", DIRECTORY_SEPARATOR, $sinif_ismi);

$sinif_adresi = __DIR__.DIRECTORY_SEPARATOR."Modeller".DIRECTORY_SEPARATOR.$sinif_ismi . ".php";

if (is_readable($sinif_adresi)) {

include ($sinif_adresi);

}

}


function autoloadController($sinif_ismi)

{

$sinif_ismi = str_replace("\\", DIRECTORY_SEPARATOR, $sinif_ismi);

$sinif_adresi = __DIR__.DIRECTORY_SEPARATOR."Controller".DIRECTORY_SEPARATOR.$sinif_ismi . ".php";

if (is_readable($sinif_adresi)) {

include ($sinif_adresi);

}

}


spl_autoload_register("autoloadLib");

spl_autoload_register("autoloadModel");

spl_autoload_register("autoloadController");


// Router İşlemi

$route = new class

{ private $ascess = 1;



public function __call($key, $params)

{

if (strtoupper($key) == $_SERVER['REQUEST_METHOD']) {

$this->rota($params[0], $params[1]);

}

}



protected function rota($route, $callback)

{

$uri = trim($_SERVER['REQUEST_URI'], '/');

if (strpos($uri, 'index.php') !== false) {

list($index, $uri) = explode('index.php', $uri);

$uri = trim($uri, '/');

}

$route = trim($route, '/');

if (preg_match("#^" . $route . "$#", $uri, $bulunan)) {

unset($bulunan[0]);

$this->ascess = 0;

call_user_func_array($callback, $bulunan);

}

}



public function view($article, array $data = [])

{

if ($data) {

extract($data, EXTR_SKIP);

}

$article.= '.php';

include('View/temple.php');

}



public function __destruct()

{

if ($this->ascess) {

header("Location: index.php");

}

}

};

//İşlemleri Guvenceye Alma

// URL GET Sifreleme

function GetE( $obj )

{

return base64_encode(gzcompress(serialize($obj)));

}

//Şifrelemeyi Çöz

function GetD($text)

{

return unserialize(gzuncompress(base64_decode($text)));

}

?>


Dörtüncü Sayfamız Ana Sayfa Ve Serverlerin Cağırdığı index.php


<?php

// Ortak Kullanım Ayar Dosyası Router İçin Özellikle

require_once __DIR__.'/Ayarlar.php' ;


// Controlleri Cağırmak İcin Entegre Teme Sayfaya

// Not : Farklı Sekilde Kullanım Vardır Bu Basit Sekli Ama İşlevi İyi

require __DIR__.'/Controller/index.php' ;

require __DIR__.'/Controller/Uyelik.php' ;

require __DIR__.'/Controller/Forum.php' ;


Bu Sayfanın Özelliği Serverin Acdığı Ana Sayfa Olması, .htaccess Tarafından Yonlendırılen AnaSayfa ve Controllerin Sayfaya Cekdğimiz Sayfadır.


Temple Sablon Sayfamız Olan View/temple.php


<!doctype html>

<html>

<head>

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" type="text/css" href="/View/CSS/Stil.css">

<title><?=@$title?></title>

</head>

<body>

<nav class="clearfix">

<ul>

<li><a href="/">Ana Sayfa</a></li>

<?php if(empty($_SESSION['Uye'])){ ?><li><a href="/UyeKayit">Uye Kayıt</a></li><?php } ?>

<li><a href="/Forum">Forum</a></li>

<li><a href="/Hakkinda">Hakkımızda</a></li>

</ul>

</nav>

<section>

<!-- Sol Menu Uye Giris Link -->

<aside>

<?php if(!empty($_SESSION['UyeAdi'])){ if($_SESSION['UyelikDurum'] == 1){?>

<p>Hoş Geldin Uye</p>

<span><?=$_SESSION['UyeAdi']?></span><br>

<a href="/SifreDegis">Şifre Değiş</a><br>

<a href="/UyeCikis">Çıkış</a>

<?php }elseif($_SESSION['UyelikDurum'] == 2){ ?>

<p>Hoş Geldin Yonetici</p>

<span><?=$_SESSION['UyeAdi']?></span><br>

<a href="/SifreDegis">Şifre Değiş</a><br>

<a href="/UyeCikis">Çıkış</a>

<?php } }else{ ?>

<form action="/UyeKontrol" method="post" >

<label>Uye Email</label><br>

<input type="email" name="UyeEmail" required /><br>

<label>Uye Sifre</label><br>

<input type="password" name="UyeSifre" required /><br>

<input type="submit" value="Giris" />

</form>

<?php } ?>

</aside>

<!-- İcerik Kısmı -->

<article>

<?php include_once($article); ?>

</article>

</section>

<!-- Alt Bilgi -->

<footer class="clearfix">&copy; Tum Haklar Saklıdır</footer>

</body>

</html>


Dip Not : Koda Bulunan <?php include_once($article); ?> Bolume Router Tarafından Cağrılan Sayfa Burda İşlemekde.


Diğer Sayfları Tek Tek Yazcam Dosya Sıralaması Hatalı OlmassaDoğru Sekilde Calıscakdır VeriTabnı Zaten En Basda PDO Dersınde Verdim.


Son Sayfa Olarakda CSS Sayfamız View/CSS/Stil.css


* {

box-sizing: border-box;

}

/* Ekstra küçük cihazlar (telefonlar, 600 piksel ve aşağı) */

@media only screen and (max-width: 600px) {

nav{}

section{}

aside{}

article{}

}


/* Küçük cihazlar (portre tabletleri ve büyük telefonlar, 600 piksel ve üstü) */

@media only screen and (min-width: 600px) {

nav{}

section{}

aside{}

article{}

}


/* Orta cihazlar (yatay tabletler, 768 piksel ve üstü) */

@media only screen and (min-width: 768px) {

nav{}

section{}

aside{}

article{}

}


/* Büyük cihazlar (dizüstü bilgisayarlar / masaüstü bilgisayarlar, 992 piksel ve üstü) */

@media only screen and (min-width: 992px) {

nav{}

section{}

aside{width: 15%}

article{width: 85%}

}


/* Ekstra büyük cihazlar (büyük dizüstü bilgisayarlar ve masaüstü bilgisayarlar, 1200px ve üstü) */

@media only screen and (min-width: 1200px) {

nav{}

section{}

aside{}

article{}

}

nav{background-color: rgba(234,241,206,0.6);padding: 5px;overflow: hidden;}

nav ul{margin: auto 0; display: block;}

nav ul li{display: inline-block;padding: 10px; margin-left: 5px;width: 150px;background-color: aqua; text-align: center;}

section{min-height: 800px;background-color: aqua;overflow: auto;padding: 5px;}

aside{

min-height: 800px;

background-color: rgba(172,171,160,0.7);

float: left;

padding: 5px;

}

article{

min-height: 800px;

background-color: rgba(128,128,128,0.80);

float: left;

padding: 5px;

}

footer{height: 50px;background-color: rgba(234,241,206,0.6);padding: 5px;}

.clearfix::after { content: ""; clear: both;display: table;

}

table{margin-left: 30px;border-spacing: 3px 5px;}

span {color: red; font-size: 18px;}

th{padding: 5px; font-size: 18px; background-color: aqua;}

td{border-bottom: 1px dashed darkred; padding: 3px; height: 50px;overflow: hidden;}

tr:nth-child(even) {background-color: #A9B5A2;}

tr:nth-child(odd) { background-color: #819A72;}

td:first-child{width: 400px;}