Dasar-dasar menulis panel admin. Dasar-dasar penulisan panel admin Kami menempatkan koneksi ke database ke dalam file terpisah

Bagaimana cara menulis CMS Anda sendiri berdasarkan PHP dan MySQL? Bagaimana cara membuat panel administratif (panel admin) sendiri di php?

Mungkin, banyak yang bisa menanyakan pertanyaan serupa, tetapi kesulitan dalam belajar dan terbatasnya materi di Internet sepertinya tidak akan membantu dalam hal ini. Langka, Anda bertanya, meskipun banyak copy-paste? Ya, saya akan menjawab, karena di puluhan situs yang dengan bodohnya menyalin artikel dari sumber pihak ketiga, kesalahan yang sama juga tersebar, yang menjadi batu sandungan serius bagi pemula dalam belajar PHP. Banyak pengguna forum kelas atas seringkali tidak dapat memahami kode yang paling sederhana, sehingga mereka harus mencari tahu sendiri.

Sekali lagi saya menemukan konfirmasi akan hal ini ketika saya memutuskan untuk mulai menguasai bahasa PHP dan bekerja dengan database data MySQL dari membuat panel admin sederhana dan situs web kecil untuk mengasah keterampilan Anda pada mesin nyata. Bayangkan betapa terkejutnya saya ketika tidak ada satu pun kode yang diberikan secara online yang berfungsi. Saya membutuhkan waktu seharian penuh untuk menyelesaikan sendiri masalah yang paling sederhana, yang jawabannya tidak pernah saya temukan di Internet.

Jadi, dalam artikel ini saya menyajikan kode kerja untuk panel admin sederhana dan template yang memungkinkan Anda membuat dan mengedit artikel menggunakan PHP.

Bagian 1: Menulis ke Tabel Database MySQL

Pada intinya, CMS adalah alat untuk mencatat semua informasi tentang suatu website ke dalam database. Semua ini harus dimuat dalam tabel, dan administrator situs harus memilikinya cara yang nyaman untuk memasukkan informasi ke dalam tabel, mengubahnya atau menghapusnya.

Pertama, mari kita membuatnya menggunakan basis data phpMyAdmin data, dan di dalamnya - halaman tabel dengan dua bidang judul dan konten. Untuk melakukannya, buka bagian SQL di panel phpMyAdmin dan jalankan kueri berikut:

BUAT TABEL "halaman" ("judul" varchar(100) BUKAN NULL default "", "konten" teks BUKAN NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;

dan phpMyAdmin akan membuatkan tabel ini untuk Anda.

Penyimpangan kecil:

Jika Anda sudah familiar dengan database setidaknya di tingkat Microsoft Access, maka Anda ingat bahwa setiap bidang tabel memiliki sejumlah properti. Dalam hal ini, kami telah menetapkan properti teks ke bidang konten. Tampaknya logis, karena dimaksudkan untuk menyimpan teks. Namun perlu diingat bahwa ukuran field ini terbatas, jadi jika Anda ingin menyimpan teks "Perang dan Damai" di dalamnya, sebaiknya definisikan sebagai teks panjang.

Untuk mengelola tabel seperti itu dari panel admin, kita memerlukan formulir yang terdiri dari bidang teks sederhana (input type = "teks") untuk memasukkan judul, area teks (textarea) untuk memasukkan konten, dan tombol "Kirim" (tipe masukan = "kirim").

Tambahkan formulir halaman

Mari kita tempatkan formulir ini di file page.php

halaman.php

CMS pertama saya

Masukkan judul halaman Masukkan teks

Mari kita buat file config.php yang akan terhubung ke database.

config.php

Server database saat ini tidak tersedia, sehingga halaman tidak dapat ditampilkan dengan benar.

"); keluar(); ) if (!@mysql_select_db($namadb, $dbcnx)) ( echo("

Basis data saat ini tidak tersedia, sehingga halaman tidak dapat ditampilkan dengan benar.

"); keluar(); ) ?>

Sekarang kita memiliki koneksi ke database dan skrip untuk masuk ke dalamnya informasi yang diperlukan, yang tersisa hanyalah mengatur pengiriman konten bidang teks bernama my_title dan area teks my_text. Untuk tujuan ini, kami telah mendefinisikan metode POST dalam bentuk untuk mentransfer data ke file page.php -

.

Ketika administrator mengisi kolom formulir dan mengklik Kirim, metode ini akan mengatur variabel $_POST["my_title"] menjadi nilai kolom teks my_title dan variabel $_POST["my_text"] menjadi nilai teks_my_text daerah.

Untuk memastikannya, mari tambahkan sedikit kode di awal file page.php:

".$_POST["teks_saya"];?>

Mari kita jalankan file page.php. Jika tidak ada kesalahan dalam program ini, Anda akan melihat judul dan teks Anda di jendela browser.

Luar biasa! Yang tersisa hanyalah mengatur pencatatan informasi ini di database kami. Untuk melakukan ini kita harus beralih ke bahasa Kueri SQL, atau lebih tepatnya - ke MySQL.

Untuk menulis data baru ke tabel database, berkat fungsinya

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);

sudah terhubung untuk bekerja, kita harus menggunakan pernyataan INSERT dari bahasa MySQL. Rekatkan cuplikan ini ke file page.php Anda alih-alih kode pencetakan:

If ($send) $sql = mysql_query("MASUKKAN ke dalam halaman (judul, konten) nilai ("".$_POST["my_title"]."", "".$_POST["my_text"]."" ); ");

Artinya, jika $send ditransfer dari tombol "Kirim" menggunakan metode POST (lihat nama tombol ini!), maka itu harus dieksekusi permintaan ini(fungsi mysql_query), dan isi kolom formulir akan ditulis ke tabel database.

Entri ini tampaknya sulit untuk dibaca pada awalnya, dan Anda bisa menjadi bingung dalam berbagai hal sederhana dan tanda kutip ganda. Oleh karena itu, mari kita pertimbangkan dalam “bentuk murninya”.

Parameter fungsi mysql_query(); adalah kueri SQL itu sendiri, yang dapat direpresentasikan sebagai:

MASUKKAN ke dalam halaman (judul, konten) nilai ("nilai_variabel_1", "nilai_variabel_2");

Jadi sepertinya lebih jelas...

Sekarang buka phpMyAdmin dan pastikan entri dimasukkan ke dalam kolom tabel. Tapi itu hanya setengah dari perjuangan. Kita perlu mempelajari cara "mengeluarkan" data yang diperlukan dari tabel agar dapat digunakan di panel admin, dan yang terpenting, menampilkannya di situs.

File page.php terakhir akan terlihat seperti ini:

CMS pertama saya

Masukkan judul halaman Masukkan teks

Lebih lanjut tentang ini di bagian selanjutnya.

Bagian 2: Membaca dari Tabel Database MySQL

Mari kita buat di panel admin kita daftar semua judul halaman yang disimpan di tabel halaman. Dan kami mengatur pekerjaan daftar ini sehingga pengguna, dengan mengklik mouse, mendapatkan akses ke konten halaman.

Untuk membaca catatan dari tabel, kita akan menggunakan konstruksi berikut:

$sql = mysql_query("PILIH*DARI halaman");

while($record = mysql_fetch_array($sql)) ( $title = $record["title"]; ) Jika sudah ada beberapa record dalam tabel, maka dalam bentuk “murni” konstruksinya hanya akan memberi kita record terakhir, karena nilai variabel $title terus diperbarui di sementara lingkaran

. Tapi kami akan menggunakan sedikit trik. Dalam perulangan yang sama, kami akan menampilkan semua entri mereka di layar, satu demi satu.

"; } ?>
Untuk melakukan ini, gambarlah sebuah tabel dan letakkan sebagian di dalam lingkaran:

".$rekam["judul"]."

Sekarang setiap catatan yang dibaca akan dimasukkan ke dalam sel, dan baris-baris tabel akan “berkembang biak” saat catatan berikutnya dibaca.

Di sebelah sel tempat kita meletakkan judul halaman, ada sel lain. Saya baru saja menulis kata Edit di dalamnya, tapi saya bisa menaruh beberapa ikon yang bagus - tidak masalah. Hal lain yang penting: entri (atau gambar) ini harus mengarahkan administrator ke bagian admin, tempat editor teks berada.

Sekarang saatnya menggunakan "editor" paling primitif - area teks formulir.

Untuk melakukannya, buat file editor.php dengan kode berikut.

"; } ?>
Untuk melakukan ini, gambarlah sebuah tabel dan letakkan sebagian di dalam lingkaran: editor.php ".$catatan["konten"]."

Menyimpan

Di setiap baris tabel teratas, muncul judul halaman yang dibaca dari database. Di sebelah kanannya, di sel berikutnya, ada kata Edit. Ini tertaut ke halaman editor.php yang sama dan meneruskannya nilai variabel $page_title, yang sama dengan judul halaman di baris ini (saya telah menyorot bagian kode ini dengan warna merah):

Mencetak" Untuk melakukan ini, gambarlah sebuah tabel dan letakkan sebagian di dalam lingkaran:";

Ketika pengguna mengklik link tersebut, dia dikembalikan ke halaman yang sama, namun dengan nilai spesifik untuk variabel $page_title.

Fragmen kode berikut mencari database untuk tabel halaman, dan di dalamnya, nilai bidang konten yang bidang judulnya cocok dengan nilai variabel $page_title.

Setelah menemukan field tersebut, ia meneruskan isinya ke variabel $content, yang mencetaknya di area teks.

Sekarang kita mempunyai kesempatan untuk mengedit teks ini. Namun cara mengembalikan versi koreksi teks ini ke database - lebih lanjut tentang itu di bagian selanjutnya.

Bagian 3. Mengedit catatan dari tabel database MySQL

Mari tambahkan potongan kode berikut ke awal file editor.php:

Dan di akhir file ini kami menambahkan:

Teknik ini disebut sesi. Sesi tersebut akan diperlukan untuk mengingat halaman yang sedang kita edit dalam suatu variabel. Meskipun kita mengklik tombol Edit dan mendapatkan nilai variabel $page_title (judul halaman yang sedang diedit), setelah kita melakukan perubahan dan mengklik tombol Simpan, halaman editor.php akan dimuat ulang dan nilai $page_title akan hilang. . Itu sebabnya kami akan menyimpannya di $_SESSION["id"].

Dan ketika form mengirimkan nilai variabel $text_edit (itulah nama yang kita berikan pada area teks) menggunakan metode POST ke halaman editor.php yang dimuat ulang, kita akan dapat menjalankan kode berikut:

Jika (isset($_POST["simpan"])) $teks_saya = strval($_POST["teks_edit"]);

$sql =mysql_query("PERBARUI halaman SET konten = "".$my_text."" WHERE title="".$_SESSION["id"]."";");

Saya harap Anda memahami mengapa kita memerlukan variabel $_SESSION["id"] .

"; } ?>
Untuk melakukan ini, gambarlah sebuah tabel dan letakkan sebagian di dalam lingkaran: editor.php

Script file editor.php secara lengkap akan terlihat seperti ini:

Bagian 4: Menghapus catatan dari tabel database MySQL

".$catatan["konten"]." ";

Mari tambahkan sel lain ke tabel file editor.php:

Tidak masalah nilai apa yang kita berikan ke variabel $delete, Anda dapat menulis &delete=1 atau &delete=abcd, tetapi yang penting adalah sekarang Anda dapat menulis kondisi yang dengannya kami akan menghapus entri yang dipilih:

If($delete) $sql =mysql_query("HAPUS DARI halaman WHERE title="".$_SESSION["id"]."";"); Perhatian! editor.php:

  1. Saya menghapus konstruksi berikut: ".$catatan["konten"]."

    agar tidak menghapus halaman yang diinginkan secara tidak sengaja;

  2. Menambahkan fungsi untuk menghapus halaman jika tombol "hapus" ditekan

if (isset($_POST["hapus"]))

Dalam bentuk akhirnya, file editor.php kita terlihat seperti ini:

header("Tipe Konten: teks/html; charset=utf-8");
sesi_mulai();
include("config.php");
?>



if(isset($_GET["page_title"]))
$page_title=$_GET["page_title"];
$sql = mysql_query("PILIH*DARI halaman");

{
mencetak "


";
}
?>
Untuk melakukan ini, gambarlah sebuah tabel dan letakkan sebagian di dalam lingkaran: editor.php

$sql = mysql_query("pilih * DARI halaman tempat judul="".$page_title."";");
while($catatan = mysql_fetch_array($sql))
{
$isi=$catatan["isi"];
}
if (isset($_POST["simpan"]))
$teks_saya = strval($_POST["teks_edit"]);
$sql =mysql_query("PERBARUI halaman SET konten = "".$my_text."" WHERE title="".$_SESSION["id"]."";");
if (isset($_POST["hapus"]))
$judul = strval($_SESSION["id"]);
$sql =mysql_query("HAPUS DARI halaman WHERE title="".$title."";");
?>













$_SESSION["id"]= $page_title;
?>

Mungkin hanya itu yang ingin saya sampaikan kepada Anda tentang prinsip-prinsip panel admin. Tentu saja, dalam CMS nyata, semua modul individual (dan saat ini kami memiliki tiga di antaranya: page.php, editor.php, dan file layanan config.php) bekerja di bawah kendali file index.php utama, yang mana- waktu menghubungkan semua modul ke database dan Jika pengguna menginginkannya, ia dapat melampirkan modul pembuatan halaman, modul pengeditan, serta sejumlah modul lainnya (modul menu situs, modul manajemen buku tamu, spanduk, dll.). Penting untuk dipahami bahwa setiap modul, tindakan apa pun di panel admin didasarkan pada empat operator SQL utama:

  • MENYISIPKAN- masukkan catatan ke dalam database;
  • MEMILIH- pilih catatan dari database;
  • MEMPERBARUI- ubah entri;
  • MENGHAPUS- hapus entri tersebut.

Jadi tidak ada yang rumit dalam menulis panel admin Anda sendiri. CMS apa pun, bahkan raksasa seperti Joomla, bekerja dengan prinsip yang sama.

Dan menghubungkan situs itu sendiri ke panel admin umumnya mudah, setelah Anda menulis skrip untuk panel admin itu sendiri.

Semoga beruntung untukmu!

Berdasarkan bahan dari berbagai sumber dengan koreksi saya sendiri.

Panel admin situs adalah bagian dari mesin yang dirancang untuk menambahkan konten ke situs secara otomatis. Ini memiliki bidang tempat Anda menulis teks artikel. Panel admin berisi skrip yang membuat halaman situs baru atau menambahkan artikel ke database, bergantung pada struktur situs. Tautan ke artikel ditambahkan ke menu. Biasanya, panel admin memungkinkan Anda menambahkan tidak hanya teks, tetapi juga konten lainnya. Saat membuat mesin situs web, Anda memutuskan apakah akan membuat panel admin atau menambahkan artikel sendiri.

Panel admin terletak di halaman terpisah, yang kira-kira alamatnya sebagai berikut:

http://situssaya.ru/adminpanel.php

Situs ini tidak tertaut ke halaman ini, Anda hanya perlu mengetahui URL-nya. Login ke panel admin dilakukan melalui formulir otorisasi. Ini berbeda dari otorisasi biasa karena Anda masuk bukan sebagai pengguna biasa, tetapi sebagai administrator, dan informasi tentang ini harus dicatat dalam sesi tersebut. Hanya administrator yang boleh memiliki akses ke panel admin.

Otorisasi Administrator

Otorisasi administrator dapat dilakukan dengan dua cara. Jika ada beberapa administrator, maka Anda dapat menambahkan bidang ke tabel dengan pengguna untuk menunjukkan bahwa pengguna tersebut adalah administrator. Atau Anda cukup mentransfer hak administrator ke pengguna tertentu dalam skrip otorisasi. Kami menggunakan opsi kedua. Sebut saja halaman login avtadministrator.html. Ini kodenya:

avtadministrator.html:

Formulir mengirimkan data ke file adminavt.php. Ini adalah skrip otorisasi. Kodenya seperti ini:

adminavt.php:

3
4
5
6
7
8
9
10
11
12
13

$login = $_POST["login"]; $pas = $_POST["kata sandi"]; if ($login == "Viktor" && $pas == 1122) ( session_start(); $_SESSION["admin"] = true; $script = "adminpanel.php"; ) else $script = "avtadministrator.html" ; header("Lokasi: $script");

Komentar:

3, 4 - dapatkan login dan kata sandi dari formulir

5 - jika benar

8 - catat di sesi bahwa ini adalah administrator

9 - halaman untuk dikunjungi - adminpanel.php

11 - jika login atau kata sandi salah

13 - buka halaman yang diinginkan

Membuat panel admin

Panel admin terlihat seperti ini.

panel admin.php:

Pada awalnya terdapat script PHP yang memeriksa apakah ada variabel admin pada sesi tersebut. Jika tidak, maka pengguna non-administrator akan login ke panel admin. Kemudian Anda pergi ke halaman otorisasi. Panel admin adalah formulir di mana administrator memasukkan artikel baru. Judul artikel mungkin panjang dan link ke artikel tersebut di menu situs mungkin berbeda dengan judulnya. Itu sebabnya formulir memiliki bidang untuk teks tautan.

Sebelum menambahkan artikel ke database, Anda perlu menempatkan teks artikel di tag

Mari kita lakukan ini di sisi klien agar tidak menyia-nyiakan sumber daya server. Mari tambahkan skrip ke halaman tempat kita meletakkan tag sebelum teks artikel

Dan setelah teks

. Untuk menyimpan semua paragraf, Anda harus menutup tag alih-alih jeda baris

Dan buka yang baru. Berikut kode skripnya:

JavaScript:

24
25
26
27
28
29
30

var form = document.querySelector("form"); form.onsubmit = function() ( var text = form.text; text.value = "

" + text.value + "!}

"; teks.nilai = teks.nilai.ganti(/\n/g, "

"); };

Menurut saya, kita hanya perlu melindungi satu file dengan kata sandi, yaitu indeks.php, karena hanya di dalamnya koneksi ke database dibuat. Jika kita memanggil, secara terpisah, potongan kode yang kita sambungkan dari folder modul, tidak akan terjadi apa-apa, karena semuanya memerlukan koneksi ke database. Jadi, dengan menggunakan potongan-potongan ini, Anda tidak dapat membahayakan blog Anda! Artinya, tidak perlu memasukkan kata sandi sama sekali.

Target

  • Mari kita masukkan skrip untuk menghubungkan ke database file terpisah, dan sambungkan ke index.php menggunakan include
  • Mari buat tabel baru di database tempat kita akan menyimpan login dan kata sandi administrator
  • Kita perlu menulis skrip yang akan mencegah kita masuk halaman rumah panel admin tanpa otorisasi, dan akan mengarahkan kita ke formulir di mana administrator perlu memasukkan login dan kata sandi
  • Anda perlu membuat file php baru dan menempatkan formulir dan kode otorisasi di dalamnya
  • Mari membuat Templat formulir
  • Mari kita tulis skrip untuk administrator untuk keluar dari panel admin, dan letakkan link ke skrip ini di halaman utama panel admin

Kami menempatkan koneksi ke database ke dalam file terpisah

Karena kita akan menggunakan koneksi ini ke database dalam dua file (di index.php dan login.php), akan lebih masuk akal untuk menempatkan skrip koneksi di file terpisah. Sekarang kita juga akan membuat variabel dalam skrip ini di mana kita akan menyimpan alamat blog kita (dalam bentuk http://address_blog.ru). Pertama, mari kita keluarkan skripnya, lalu saya akan menjelaskan mengapa kita membutuhkan variabel dengan alamat.

$namaDB = "blog";//Nama basis data
$namaSERVER = "localhost";//Server
$nameUSER = "root";//Nama pengguna basis data
$passUSER = "";//kata sandi pengguna DB
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));

$server_root = "http://yoururl.ru/";
?>

Simpan potongan kode ini dalam file terpisah (saya menamai file ini db.php dan letakkan di folder modul) Kemudian hapus skrip ini dari file indeks.php dan tempelkan kode berikut sebagai gantinya


include("modul/db.php");
//HUBUNGKAN KE DATABASE (DB)

Sekarang saya akan menjelaskan tiga baris baru dalam file tersebut db.php. Jahitan

if(isset($_GET["server_root"]))($server_root = $_GET["server_root"];tidak disetel($server_root);)
if(isset($_POST["server_root"]))($server_root = $_POST["server_root"];tidak disetel($server_root);)

akan memungkinkan kita menghapus variabel jika seseorang mencoba membuatnya dengan permintaan GET atau POST. Kita memerlukan variabel dengan alamat itu sendiri untuk menentukan apakah otorisasi tersebut berasal dari blog kita, dan bukan dari server pihak ketiga. Perlindungan seperti itu dapat melindungi blog kita dari peretasan, lebih tepatnya, ini membantu kita, administrator dan pemrogram, untuk mempercayainya.

Mari buat tabel baru di database

Untuk memulainya, saya ingin mengatakan yang berikut: di database kami akan menyimpan kata sandi terenkripsi menggunakan fungsi php md5(). Kami akan memasukkan nama pengguna dan kata sandi admin secara manual. Saya akan memberikan data berikut:

Masuk: admin

Kata sandi: 123456

Kata sandi terenkripsi akan terlihat seperti ini:

Artinya, jika password 123456 dilewatkan melalui fungsi md5, Anda akan mendapatkan sesuatu seperti ini kata sandi terenkripsi.

Mari kita mulai. Buka phpMyAdmin dan buat tabel baru:

Dan secara manual masukkan satu baris ke dalam tabel

Skrip pemeriksaan otorisasi

Otorisasi itu sendiri adalah pembuatan variabel global $_SESSION. Artinya, jika variabel global ini ada, maka pengguna diberi otorisasi, oleh karena itu skrip harus memeriksa apakah variabel tersebut (variabel global) telah dibuat. Jika ya, maka jangan lakukan apa pun; jika tidak, transfer ke file login.php.

Sebelum memanggil variabel global $_SESSION, Anda perlu memulai sesi, yaitu write session_start(); Jika hal ini tidak dilakukan, maka variabel global $_SESSION tidak akan berfungsi!

Secara umum berikut adalah script yang perlu disisipkan segera setelah terhubung ke database di index.php

Sesi_mulai();
$logSESS = $_SESSION["$logSESS"];
if(!isset($logSESS))
{
header("lokasi: login.php");
KELUAR;
}
//SKRIP PERIKSA OTORISASI

Karena nilai variabel global $_SESSION ditransfer ke variabel $logSESS, kita perlu menghentikan upaya membuat variabel ini ($logSESS) dengan cara lain (maksud saya mencegah pembuatan variabel ini menggunakan GET dan permintaan POSTING). Ini adalah fungsi yang dilakukan oleh dua baris pertama skrip.

Templat formulir

Mari kita buat templatnya terlebih dahulu. Templatnya adalah formulir biasa dengan dua bidang teks














Tidak ada yang rumit di sini. Kami telah membuat template serupa lebih dari sekali. Sebut saja templat ini login.html dan memasukkannya ke dalam paket dengan templat

File otorisasi

Pertama mari kita buat fungsi yang akan memberi kita formulir otorisasi. Kami menciptakan berkas baru, sebut saja login.php dan letakkan di folder admin

//HUBUNGKAN KE DATABASE (DB)
include("modul/db.php");
//HUBUNGKAN KE DATABASE (DB)

fungsi form_author()//fungsi koneksi formulir
{
$sm_read = file("templates/login.html");//...sambungkan templat
$sm_read = implode("",$sm_read);//file() fungsi mengembalikan array, jadi kita merekatkannya bersama-sama

Kembalikan $sm_read;//tampilkan hasilnya
}

$txt = form_author();//memanggil fungsi koneksi formulir

include("templates/index.html");//template utama
?>

Dalam file ini kita terhubung ke database (di bagian paling atas). Selanjutnya, saya menyisakan ruang untuk skrip otorisasi (untuk memudahkan menjelaskan di mana harus memasukkan skrip, yang akan saya posting di bawah).

Fungsinya sendiri tidak terlalu rumit; ini melibatkan menghubungkan template, dan tidak lebih. Baris kedua dari belakang menyimpan hasil fungsi ke dalam variabel $txt. Nah, baris terakhir menghubungkan template utama.

Sekarang jika Anda mencoba masuk ke panel admin blog, tetapi Anda akan diarahkan ke halaman ini

//OTORISASI
//hancurkan variabel dengan login dan kata sandi yang dibuat dengan memasukkannya ke dalam baris
if (isset ($_GET["loginDB"])) ($loginDB = $_GET["loginDB"];unset($loginDB);)
if (isset ($_GET["passDB"])) ($passDB = $_GET["passDB"];unset($passDB);)

//masukkan login dan kata sandi yang dikirim melalui permintaan pos ke dalam variabel terpisah
if (isset ($_POST["loginDB"])) ($loginDB = $_POST["loginDB"];)
if (isset ($_POST["passDB"])) ($passDB = $_POST["passDB"];)

if(isset($loginDB) AND isset($passDB))//jika login dan kata sandi ada
{
if(preg_match("/^+$/s",$loginDB) AND preg_match("/^+$/s",$passDB))//periksa kebenaran input menggunakan ekspresi reguler
{
$prov = getenv("HTTP_REFERER");//kami menentukan halaman asal permintaan
$prov = str_replace("www.","",$prov);//hapus www jika ada
preg_match("/(http\:\/\/[-a-z0-9_.]+\/)/",$prov,$prov_pm);//kami membersihkan alamat dari hal-hal yang tidak perlu, kami perlu mendapatkan tautan seperti ini http://xxxx.ru
$prov = $prov_pm;//masukkan alamat bersih ke dalam variabel terpisah
$server_root = str_replace("www.","",$server_root);//hapus www jika ada

If($server_root == $prov)//jika alamat blog kita dan alamat halaman asal kiriman adalah sama
{
$passDB = md5($passDB);//enkripsi kata sandi yang dimasukkan

$resultlp = mysql_query("SELECT login,pass FROM user WHERE login="$loginDB"");//kami menampilkan login dan kata sandi dari database
$log_and_pass = mysql_fetch_array($hasillp);

If($log_and_pass != "")//jika hasilnya adalah output dari database
{
if($loginDB == $log_and_pass AND $passDB == $log_and_pass)//jika informasi yang dimasukkan sesuai dengan informasi dari database
{
$_SESSION["$logSESS"] = $log_and_pass;//buat variabel global
header("location: index.php");//mentransfer pengguna ke halaman utama
KELUAR;
}
else//jika informasi yang dimasukkan tidak sesuai dengan informasi dari database
{
KELUAR;
}
}
else//jika pengguna tersebut tidak ditemukan dalam database
{
header("lokasi: login.php");//transfer ke formulir otorisasi
KELUAR;
}
}
else //jika permintaan dikirim dari alamat yang berbeda
{
header("lokasi: login.php");//transfer ke formulir otorisasi
KELUAR;
}
}
else//jika login dan kata sandi yang dimasukkan salah
{
header("lokasi: login.php");//transfer ke formulir otorisasi
KELUAR;
}
}
//OTORISASI

Potongan kode ini dimasukkan ke dalam file login.php, bukan di baris ini

Bagaimana cara kerja skripnya? Pertama, ini menghancurkan variabel login dan kata sandi yang dibuat menggunakan metode GET (jika ada). Kemudian login dan password diperiksa kebenarannya menggunakan ekspresi reguler.

Alamat asal pengguna juga dihasilkan. Artinya, alamat asal pengguna harus seperti ini:

http://yoururl.ru/login.php

dan setelah pembentukannya, seperti ini:

http://yoururl.ru/

Alamat ini dibandingkan dengan alamat dari variabel $server_root yang kita deklarasikan di koneksi database (file db.php)

Jika setidaknya satu kondisi tidak berfungsi, pengguna akan diarahkan kembali ke formulir.

Sekarang jika Anda masuk ke jendela formulir

masuk - admin

kata sandi - 123456

Ini akan membawa Anda ke panel admin. Jika Anda memasukkan nama pengguna atau kata sandi yang salah, Anda akan diarahkan kembali ke formulir.

Tombol keluar

Sekarang kita harus mengedit template utama panel admin, kita akan memasukkan link ke skrip keluar ke dalamnya, jadi kita juga akan menambahkan link ke halaman utama panel admin ke dalam template. Kami pastikan ketika kami mengklik logo di panel admin, kami akan dialihkan ke halaman utama. (Ini tentu saja tidak perlu)

Ini adalah potongan kode baru yang saya sisipkan, bukan yang lama, ke dalam template indeks.html



Sekarang mari kita buat file baru, beri nama keluar.php dan memasukkannya ke dalam folder admin. Ini kode filenya

session_start();//memulai sesi
unset ($_SESSION["$logSESS"]);//hapus variabel global yang terdaftar
session_destroy();//hancurkan sesi
header("lokasi: ../");//redirect ke halaman utama bagian pengguna blog
KELUAR;
?>

Di sini setiap baris memiliki komentar, sehingga Anda dapat mengetahuinya

Kesimpulan

Nah, disinilah saya menyelesaikan pengembangan CMS paling sederhana di PHP. Jika ini adalah postingan pertama yang Anda baca di blog ini, maka berikut adalah daftar semua artikel yang didedikasikan untuk mengembangkan blog dari awal. Segera saya akan membuka bagian "Peningkatan" dan terus menyiksa proyek kami. Jadi, berlanggananlah berita dan tunggu postingan baru!

Jika Anda memiliki pertanyaan, jangan ragu untuk menanyakannya, saya akan dengan senang hati menjawabnya (jika, tentu saja, saya mampu menjawab pertanyaan Anda).

Semoga beruntung, itu saja untuk hari ini!

Pada artikel terakhir kami berdiskusi dengan Anda. Namun, sering kali Anda harus mengelola situs: menambahkan materi baru, mengelola pengguna, memberikan suara. Tentu saja hal ini dapat dilakukan melalui PHPMyAdmin, tapi ini sangat merepotkan, jadi keputusan yang bagus akan - buat panel Admin untuk situs tersebut. Dan Anda akan mempelajari cara melakukannya di artikel ini.

Jadi, mari kita uraikan kembali urutan tindakan yang perlu dilakukan:

  1. Tata letak semua halaman situs. Pada prinsipnya, Anda dapat melakukannya tanpa desain sama sekali, tetapi harus ada struktur dasar. Artinya, data tabular harus dalam bentuk tabel, dan bukan dalam teks berkelanjutan.
  2. Putuskan data apa yang ingin Anda lihat di panel Admin. Misalnya, Anda mungkin perlu melihat pengguna situs Anda, artikel Anda, mungkin beberapa survei.
  3. Buat kelas untuk mengelola panel Admin. Metode harus dibuat di sini yang memungkinkan Anda memilih dari berbagai tabel, serta menambah dan mengedit catatan di dalamnya. Dan Anda perlu membuat metode serupa untuk semua tabel yang ingin Anda kerjakan Panel admin(Anda seharusnya sudah memilih ini di paragraf sebelumnya). Misalnya contoh paling sederhana dengan pengguna. Kumpulan metode minimum yang diperlukan: pemilihan semua pengguna, menambahkan pengguna baru, ganti pengguna. Tentu saja, semua tugas ini seharusnya sudah Anda selesaikan saat membuat mesin untuk situs, jadi di sini Anda hanya perlu beralih ke kelas lama dan, mungkin, mengubah data khusus untuk Panel admin.
  4. Bagi templat situs web Anda menjadi beberapa bagian terpisah dan salin ke file terpisah dengan ekstensi tpl. Letakkan juga elemen template, misalnya seperti ini: " Pengguna (nama pengguna) terdaftar (tanggal resmi)". Ini hanyalah sebuah contoh, dan data, secara umum, lebih mudah ditampilkan dalam tabel.
  5. Buat kelas yang akan melakukan substitusi alih-alih elemen templat, data terkait.
  6. Kumpulkan semua halaman panel Admin bata demi bata Website Anda menggunakan kelas yang dibuat pada paragraf sebelumnya.
  7. Jika mau, Anda bisa membuat desain, meskipun tentu saja ini khusus untuk Anda dan administrator lainnya.

Seperti yang Anda lihat, yang terbaru 4 poinnya sama dengan yang Anda lakukan saat membuat mesin. Di sini jumlah pekerjaannya akan jauh lebih sedikit, jadi menurut saya Anda dapat mengatasinya tanpa masalah.

Saya duduk di situs web saya selama sekitar tiga bulan tanpa Panel admin, menambahkan materi baru langsung melalui database. Sejujurnya, saya menghabiskan banyak waktu ekstra, tapi kapan membuat panel Admin di situs web saya, maka proses pengelolaan situs telah disederhanakan secara signifikan. Jadi saya menyarankan Anda melakukan hal yang sama.

Contoh penciptaan Panel admin Anda akan menemukan dalam kursus pelatihan ini:

Tugas membangun sistem manajemen konten (CMS) dapat membingungkan bagi seorang pemula Pengembang PHP. Tapi iblis tidak seseram yang dilukisnya! Dalam rangkaian pelajaran ini kita akan membangun sistem yang sederhana namun berfungsi penuh dari awal.

Selama prosesnya, Anda akan mempelajari cara membuat database dan tabel MySQL, bekerja dengan objek, konstanta, penyertaan, sesi, dan alat PHP lainnya. Selain itu, kami akan menunjukkan cara memisahkan logika aplikasi dari presentasi dan membuat kode PHP lebih aman. Dan Anda juga akan menemukan banyak hal lain yang berguna dalam menciptakan sistem impian Anda sendiri.

Anda dapat melihat aplikasi yang sudah selesai beraksi di halaman demo (untuk tujuan keamanan, mode hanya baca diaktifkan, sehingga Anda tidak akan dapat menambah, mengedit, atau menghapus artikel). Anda juga dapat mengunduh kode lengkap PHP CMS kecil kami dengan komentar yang diterjemahkan.

Catatan: Untuk mempelajari materi pelajaran Anda memerlukan server web Apache modul PHP dan server MySQL. Untuk dikerjakan komputer lokal Anda dapat menggunakan salah satu alat pengembang web: XAMPP (on Bahasa inggris), Denwer, Open server atau lainnya.

Catatan Keamanan

Dalam proyek nyata, lebih baik menempatkan config.php di suatu tempat di luar direktori root situs web, karena file tersebut berisi nama pengguna dan kata sandi. Biasanya kode PHP tidak dapat dilihat di browser, namun terkadang karena konfigurasi server web yang salah, kode tersebut menjadi dapat diakses. Anda dapat menggunakan fungsi hash() untuk meng-hash kata sandi dan menyimpan hash di config.php alih-alih kata sandi teks biasa. Kemudian, saat mendaftarkan pengguna, Anda dapat kembali menggunakan fungsi hash() untuk menyandikan kata sandi yang dimasukkan dan membandingkan hasilnya dengan hash yang disimpan di config.php.

Dalam tutorial berikutnya kita akan membangun kelas utama aplikasi kita - Artikel.