8 Haziran 2018 Cuma

PDO Fonksiyon Kullanarak Giriş Sistemi Yapma

3 yorum

PDO Fonksiyon Kullanarak Giriş Sistemi Yapma

PDO ile Giriş sistemi aslında oldukça basit bir işlem. Sadece 50-60 satır kod yazarak giriş sistemi yapabilirsiniz. Ancak bugün göstereceğim işlemle birlikte bu 50-60 satır kodu en az seviyeye çekmeye çalıştım. Bugün Fonksiyon kullanarak nasıl Giriş Sistemi yapılır ondan bahsedicem.

İşlemimize geçmeden önce kullanmış olduğum veritabanı bilgilerini size paylaşıyım siz kendiniz ona göre düzeltirsiniz.

CREATE TABLE `users` (
`user_id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 100 ) NOT NULL ,
`username` VARCHAR( 50 ) NOT NULL ,
`password` VARCHAR( 250 ) NOT NULL
) ENGINE = MYISAM ;

Bunları siz kendi üye tablonuza göre düzenlersiniz. Şimdi ise fonksiyon kodlarımıza bi bakalım.

class DemoLib
{
public function Login($username, $password)
{
try {
$db = DB();
$query = $db->prepare("SELECT user_id FROM users WHERE (username=:username OR email=:username) AND password=:password");
$query->bindParam("username", $username, PDO::PARAM_STR);
$enc_password = hash('sha256', $password);
$query->bindParam("password", $enc_password, PDO::PARAM_STR);
$query->execute();
if ($query->rowCount() > 0) {
$result = $query->fetch(PDO::FETCH_OBJ);
return $result->user_id;
} else {
return false;
}
} catch (PDOException $e) {
exit($e->getMessage());
}
}
}

Fonksiyon kodlarımız bunlardır. Şifremizi sha256 ile şifrelemiş bulunmaktayız siz kendiniz isterseniz bir önceki yazıma bakarak şifreleme yöntemini kendinize göre düzenlersiniz. 

Bu işlemi yaptıktan sonra unutmamamız gereken bir işlem daha var ve oda Veritabanı Bağlantımız.
Hemen o işlemide halledelim.

define('HOST', 'localhost');
define('USER', 'root');
define('PASSWORD', 'root');
define('DATABASE', 'dersler');
function DB()
{
try {
$db = new PDO('mysql:host='.HOST.';dbname='.DATABASE.'', USER, PASSWORD);
return $db;
} catch (PDOException $e) {
return "Error!: " . $e->getMessage();
die();
}
}

Benim klasik kullandığım Config sistemi sizede tavsiye ederim.

Bir sonraki işlemimiz ve son işlemimiz olan Giriş sayfamız. Giriş sayfamızın HTML kodları;

<div class="row">
<div class="col-md-5 well">
<h4>Function ile Giriş Sistemi</h4>
<?php
if ($login_error_message != "") {
echo '<div class="alert alert-danger"><strong>Error: </strong> ' . $login_error_message . '</div>';
}
echo $login_success_message;
?>
<form action="index.php" method="post">
<div class="form-group">
<label for="">Kullanıcı Adı</label><br>
<input type="text" name="username" class="form-control"/>
</div>
<div class="form-group">
<label for="">Şifre</label><br>
<input type="password" name="password" class="form-control"/>
</div>
<div class="form-group"><br>
<input type="submit" name="btnLogin" class="btn btn-primary" value="Giriş Yap"/>
</div>
</form>
</div>
</div>

Bu şekilde olucaktır. PHP kodlarımızı html kodlarımızın hemen üstünde olucak şekilde yapıştırın. PHP kodlarımız ise;

include "config.php";
include "functions.php";

session_start();

$app = new DemoLib();

$login_error_message = '';
$register_error_message = '';
$login_success_message = '';
// check Login request
if (!empty($_POST['btnLogin'])) {

$username = trim($_POST['username']);
$password = trim($_POST['password']);

if ($username == "") {
$login_error_message = 'Kullanıcı adını boş bırakmayın.';
} else if ($password == "") {
$login_error_message = 'Şifreyi boş bırakmayın.';
} else {
$user_id = $app->Login($username, $password);
if($user_id > 0)
{
$_SESSION['user_id'] = $user_id;
$login_success_message = 'Başarılı';
}
else
{
$login_error_message = 'HATA!';
}
}
}
Şeklinde olacaktır. 

İşlemimiz bukadardır arkadaşlar anlamadığınız yer olursa yorumlar kısmında belirtirseniz elimden geldiğince yardımcı olmaya çalışacağım. Kendinize iyi bakın. 

İyi Günler.

3 yorum :

  1. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  2. Hocam Çok Teşekkür ederim Çok yararlı olmus cidden.
    Sizden yardım alacağım konular olacaktır yakın zaman da yazacağım.
    iyi günler dilerim.

    YanıtlaSil
    Yanıtlar
    1. Rica ederim. Yardım almak istediğiniz konular olduğunda yardımcı olacağım. Yorumlar kısmında belirtebilirsiniz. İyi günler

      Sil

b2b yazılım vois media