Hizmetlerimiz hakkında bilgi almak için tıklayın.
Merhabalar!
PHP kullanarak web sitemizin admin panelini oluşturacağız, ilk olarak admin giriş sayfasını oluşturacağız ve backend ayarlamalarını yapacağız. Örnekleriyle beraber kullanımlar aşağıda yer almaktadır.
Veritabanı Kurulumu
İlk öncelikle, daha önce oluşturduğumuz baglan.php
dosyamızın hazır olması gerekiyor, eğer baglan.php
dosyamız hazır değil ise ilk önce Buraya tıklayarak, baglan.php
dosyasını hazırlayın.
Önemli:
Kurulumlar için cPanel kullanmanız önerilir, eğer bir hosting sahibi değilseniz cPanel hostinglerimize Buraya tıklayarak ulaşabilirsiniz.
Session Kontrolü
Admin paneline ulaşmak için, session başlatacağız ve session kontrolleri yapacağız. İlerleyen yazıda detaylarına ineceğiz. Şimdilik session kontrolü yapabilmemiz için aşağıda bulunan dosyayı oluşturmalıyız ve adını autocheck.php olarak belirleyebiliriz.
<?php
ob_start();
session_start();
if (!isset($_SESSION['yonetici_girisi']) || $_SESSION['yonetici_girisi'] !== true) {
header("Location: login.php");
exit;
}
?>
autocheck.php dosyamızın içeriği üst kısımda olduğu gibi olmalıdır, bu genel bir dosya olacaktır ve admin paneline erişeceğimiz dosyalarda autocheck.php
dosyamızı kullanarak izinsiz erişim yapmaya çalışan kullanıcıları, yönetici girişi yapmayan kullanıcıları login.php
sayfasına göndereceğiz ve giriş yapmalarını talep edeceğiz.
Dikkat edilmesi gerekenler:
autocheck.php
dosyanız ile location bölümünde verilenlogin.php
dosyanız eşleşmelidir, eğer aynı klasör içerisinde değilseler düzenleme yapmanız gerekir.- Session içerisine tanımladığımız
yonetici_girisi
adlı değişkenimizi giriş yaparken session'a tanımlayacağız.
index.php
Sayfası Oluşturmak
Sıradaki işlemimiz admin panelimizin index.php
dosyasını oluşturmak olacak, admin panelimizin anasayfası index.php içerisinde yer alacak.
<?php
session_start();
include "baglan.php";
include "autocheck.php";
?>
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin Paneli</title>
</head>
<body class="eamedya">
<h1>Admin paneline hoşgeldiniz.</h1>
</body>
</html>
Burada ne yaptık?
session_start()
değişkenimizi kullanarak session başlattık.- Daha önce hazırladığımız veritabanı bağlantı dosyamızı index.php'ye dahil ettik. Veritabanı sorgularımızda kullanacağız.
- Daha önce hazırladığımız kullanıcının admin girişi yapıp yapmadığını kontrol eden, yapmadıysa giriş sayfasına yönlendiren
autocheck.php
dosyamızı sayfaya dahil ettik.
Bu sayfaya girildiği zaman index.php session başlatıp, kullanıcının admin girişi yapıp yapmadığını kontrol edecek ve kullanıcı admin değilse ve giriş yapmadıysa login sayfasına yönlendirecek.
Giriş Sayfası Hazırlamak
Şimdi ise, kullanıcıların giriş yapabilmesini ve yonetici_girisi
değişkenini kayıt edebilmek ve sorun yaşamamak için dikkatlice giriş sayfasını hazırlayalım.
HTML Kodu:
<div class="main-content">
<div class="auth-buttons">
<button id="loginButton">Admin Paneli Girişi</button>
</div>
<div class="login-container">
<div id="loginForm" class="form">
<form action="giris.php" method="POST">
<h2>Giriş Yap</h2>
<div class="input-group">
<label for="username">Kullanıcı Adı<span class="input-color"> *</span></label>
<input type="text" id="username" name="kullanici_adi" required>
</div>
<div class="input-group">
<label for="password">Şifre<span class="input-color"> *</span></label>
<input type="password" id="password" name="sifre" required>
</div>
<button type="submit">Giriş Yap</button>
</form>
</div>
</div>
</div>
CSS Kodu:
.main-content {
padding: 20px;
display: flex;
justify-content: center;
align-items: center;
min-height: 80vh;
flex-direction: column;
font-family: "Poppins", sans-serif;
}
.auth-buttons button {
padding: 10px 50px;
margin-right: 10px;
cursor: pointer;
background-color: transparent;
border-bottom: none;
border-left: 2px solid #000000;
border-right: 2px solid #000;
border-top: 2px solid #000;
}
.login-container {
background-color: white;
padding: 20px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
width: 800px;
}
.login-container h2 {
text-align: center;
color: #333;
}
.login-container .input-group, #registerForm .form-group {
margin-bottom: 15px;
}
.login-container .input-group label, #registerForm .form-group label {
display: block;
margin-bottom: 5px;
}
.login-container .input-group input, #registerForm .form-group input {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
}
.login-container button, #registerForm button {
width: 100%;
padding: 10px;
background-color: #000;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
.login-container button:hover, #registerForm button:hover {
background-color: #343434;
}
.input-color{
color:#000 ;
font-weight: 900;
}
.login-container a{
text-decoration: none;
font-style: italic;
color: #000;
}
.passwordverges a{
font-style: normal;
}
.passwordverges{
text-align: center;
}
#loginButton, #registerButton{
text-decoration: underline;
font-size: 1.2em;
color: #000;
}
#loginButton:hover, #registerButton:hover{
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5);
background-color: #343434;
color: white;
}
@media (max-width:767px) {
.main-content {
margin: 0;
margin-top: 100px;
}
.login-container{
width: 350px;
}
#loginButton, #registerButton{
font-size: 0.5em;
}
}
@media (min-width:768px) and (max-width:1024px) {
.main-content {
margin: 0;
margin-top: 100px;
}
.login-container{
width: 500px;
}
#loginButton, #registerButton{
font-size: 0.5em;
}
}
Yukarıda ne yaptık?
- Tüm ekranlara, Mobil, tablet, bilgisayar uyumlu bir admin giriş sayfası hazırladık. Modern bir sayfa oluşturduk.
- Kullanıcı giriş ekranını, kullanıcı bilgilerini alıp
action
bölümünde bulunangiris.php
dosyasına göndermek için hazırladık.
Artık kullanıcı giriş ekranımız hazır, şimdi yapmamız gereken kullanıcı girişi yaptığı zaman formdan bilgileri alıp veritabanıyla eşleştirmemiz gerekiyor. Fakat bir veritabanı tablomuz yoktu değil mi? Hadi veritabanı tablomuzu oluşturalım!
Veritabanı Tablosu Oluşturmak
Şimdi yöneticilerimizi kontrol etmek için, yöneticilerimizin bilgilerinin olduğu bir veritabanı tablosuna ihtiyacımız var. Aşağıda ki kodu, PhpmyAdmin'e giriş yaparak, ilgili olan tablomuz içerisine SQL Sorgusu olarak yazalım.
CREATE TABLE `yoneticiler` (
`id` int NOT NULL,
`kullanici_adi` varchar(50) NOT NULL,
`sifre_hash` varchar(255) NOT NULL,
`email` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Bu sorguyu çalıştırdığımızda, başarıyla yönetici tablomuz hazır olacak. Artık yöneticilerimizin bilgilerini sakladığımız bir tablomuz mevcut!
Fakat tablomuz BOŞ!
Boş olan tablomuzu doldurmak için kullandığımız zaman hemen silmek zorunda olduğumuz yeni bir yonetici.php
adında dosya oluşturalım ve ilk yöneticimizi tabloya ekleyelim!
yonetici.php
<?php
include 'baglan.php';
$kullaniciAdi = "demoYonetici";
$sifre = "demo1234";
$sifreHash = password_hash($sifre, PASSWORD_DEFAULT);
$email = "demo@ornek.com";
$query = $db->prepare("INSERT INTO yoneticiler (kullanici_adi, sifre_hash, email) VALUES (?, ?, ?)");
$result = $query->execute([$kullaniciAdi, $sifreHash, $email]);
if ($result) {
echo "Demo yönetici başarıyla eklendi.";
} else {
echo "Yönetici eklenirken bir hata oluştu.";
}
?>
yonetici.php
dosyasını oluşturun ve kayıt edin. Ardından URL olarak erişin, örneğin: websiteniz.com/yonetici.php olarak bu dosyaya eriştiğinizde demo yöneticiyi başarıyla veritabanına verileri PDO ile hashlemiş bir şekilde kayıt etmiş olacaksınız.
ÖNEMLİ:
yonetici.php
dosyanızı kullandıktan hemen sonra SİLİN. aksi takdirde güvenlik açığı oluşturursunuz.
Veritabanında Bilgileri Eşleştirmek
Az önce yonetici.php
dosyasını kullanarak demoYonetici adında bir kullanıcı oluşturduk ve şifresini demo1234 olarak belirledik.
Şimdi ise giriş formumuzda bu bilgileri girdiğimizde, veritabanında bu bilgileri sorgulamak için giris.php
adında yeni bir dosya oluşturuyoruz.
Hatırlayalım, giriş formumuzun action bölümüne giris.php
dosyasını tanımlamıştık.
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
session_start();
include 'baglan.php';
$kullaniciAdi = $_POST['kullanici_adi'] ?? '';
$sifre = $_POST['sifre'] ?? '';
$query = $db->prepare("SELECT * FROM yoneticiler WHERE kullanici_adi = ?");
$query->execute([$kullaniciAdi]);
$yonetici = $query->fetch(PDO::FETCH_ASSOC);
if ($yonetici && password_verify($sifre, $yonetici['sifre_hash'])) {
$_SESSION['yonetici_girisi'] = true;
$_SESSION['admin_id'] = $yonetici['id'];
$_SESSION['yonetici_adi'] = $yonetici['kullanici_adi'];
header("Location: index.php");
exit();
} else {
echo "Kullanıcı adı veya şifre hatalı.";
}
}
?>
Yukarıda ne yaptık?
- Session başlattık.
- Veritabanı bağlantı dosyamızı içeriğe dahil ettik.
- Formdan alınan bilgileri değişkene tanımladık.
- Değişkendeki bilgileri veritabanı ile karşılaştırdık.
- Eğer veritabanı ile formdan gelen bilgiler uyuyor ise
yonetici_girisi
sessionunu true olarak ayarladık. - Kullanıcı verileri uyduğu için kullanıcıyı
index.php
'ye yönlendirdik. - Eğer kullanıcı verileri uymuyorsa, kullanıcı adı veya şifre hatalı geri dönüşü verdik.
yonetici_girisi
sessionu hala false döndürmeye devam ediyor.
Giriş formuyla uyuştuktan sonra, index.php
sayfamıza yönlendirildiğimizde autocheck.php
dosyamız yine bizi kontrol edecek ve yonetici_girisi
'nin session kayıtlarına bakıp true döndürmesini bekleyecek, eğer true döndürüyor ise bize index.php
içeriğini gösterecek, eğer false dönmeye devam ediyorsa giriş sayfasına yönlendirmeye devam edecektir.
Tüm sorularınız ve istekleriniz için, info@enesalp.com.tr adresinden bize ulaşabilirsiniz.