Elementele de bază ale scrierii unui panou de administrare. Elementele de bază ale scrierii unui panou de administrare Am pus conexiunile la baza de date într-un fișier separat

Cum să-ți scrii propriul CMS bazat pe PHP și MySQL? Cum să-ți faci propriul panou administrativ (panoul de administrare) în php?

Probabil că mulți ar fi putut pune întrebări similare, dar dificultățile de studiu și materialul limitat de pe internet erau puțin probabil să ajute în acest sens. Rare, întrebi, în ciuda abundenței de copy-paste? Da, o să răspund, pentru că pe zeci de site-uri care copiază prostesc articole din surse terțe se răspândesc aceleași erori, care devin o piedică serioasă pentru începătorii în învățarea PHP. Numeroși utilizatori ai forumului înalt nu pot înțelege cele mai simple coduri, așa că trebuie să-și dea seama singuri.

Încă o dată am găsit confirmarea acestui lucru când m-am hotărât să încep să masterez limbaj PHPși lucrul cu baze de date Date MySQL de la crearea unui panou de administrare simplu și a unui site web mic pentru a vă perfecționa abilitățile pe un motor real. Imaginează-ți surpriza mea când niciunul dintre codurile date online nu a funcționat. Mi-a luat o zi întreagă să rezolv eu cele mai simple probleme, pentru care nu am găsit niciodată un răspuns pe internet.

Deci, în acest articol vă prezint cod de lucru pentru un panou de administrare simplu și un șablon care vă permite să creați și să editați articole folosind PHP.

Partea 1: Scrierea în tabelele bazei de date MySQL

În esență, un CMS este un instrument pentru înregistrarea tuturor informațiilor despre un site web într-o bază de date. Toate acestea ar trebui să fie cuprinse în tabele, iar administratorul site-ului ar trebui să aibă mod convenabil pentru a introduce informații în tabele, a le modifica sau a le șterge.

Mai întâi, să-l creăm folosind baza de date phpMyAdmin date, iar în el - un tabel de pagini cu două câmpuri titlu și conținut. Pentru a face acest lucru, accesați secțiunea SQL din panoul phpMyAdmin și rulați următoarea interogare:

CREATE TABLE "pagini" ("title" varchar(100) NOT NULL implicit "", "conținut" text NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;

iar phpMyAdmin va construi acest tabel pentru tine.

O mica digresiune:

Dacă sunteți familiarizat cu bazele de date cel puțin la nivel Microsoft Access, atunci vă amintiți că fiecare câmp de tabel are un număr de proprietăți. În acest caz, am atribuit proprietatea text câmpului de conținut. S-ar părea logic, deoarece este destinat stocării textelor. Dar rețineți că dimensiunea acestui câmp este limitată, așa că dacă doriți să stocați textul „Război și pace” în el, este mai bine să-l definiți ca text lung.

Pentru a gestiona un astfel de tabel din panoul de administrare, vom avea nevoie de un formular format dintr-un câmp text simplu (input type="text") pentru introducerea unui titlu, o zonă de text (textarea) pentru introducerea conținutului și un buton „Trimiteți” (tip de intrare = "trimite").

Adăugați formularul de pagină

Să plasăm acest formular în fișierul page.php

pagina.php

Primul meu CMS

Introduceți titlul paginii Introduceți text

Să creăm un fișier config.php care se va conecta la baza de date.

config.php

Serverul bazei de date este momentan indisponibil, astfel încât pagina nu poate fi afișată corect.

"); exit(); ) dacă (!@mysql_select_db($dbname, $dbcnx)) ( echo("

Baza de date este momentan indisponibilă, astfel încât pagina nu poate fi afișată corect.

"); ieșire (); ) ?>

Acum că avem o conexiune la baza de date și un script pentru a intra în ea informatiile necesare, nu mai rămâne decât să organizăm trimiterea acolo a conținutului câmpului de text numit my_title și a zonei de text my_text. În acest scop, am definit o metodă POST în formular pentru a transfera date în fișierul page.php -

.

Când administratorul completează câmpurile formularului și dă clic pe Trimitere, această metodă va seta variabila $_POST["my_title"] la valoarea câmpului de text my_title și variabila $_POST["my_text"] la valoarea my_text text zonă.

Pentru a ne asigura de acest lucru, să adăugăm un mic cod la începutul fișierului page.php:

„.$_POST[„textul_meu”];?>

Să rulăm fișierul page.php. Dacă nu există erori în program, veți vedea titlul și textul în fereastra browserului.

Minunat! Tot ce rămâne este să organizăm înregistrarea acestor informații în baza noastră de date. Pentru a face acest lucru, va trebui să apelăm la limbă interogări SQL, sau mai degrabă - la MySQL.

Pentru a scrie date noi într-un tabel de bază de date, care, datorită funcției

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

deja conectat la lucru, ar trebui să folosim instrucțiunea INSERT a limbajului MySQL. Lipiți acest fragment în fișierul dvs. page.php în loc de codul de printare:

Dacă ($send) $sql = mysql_query(„INSERT în pagini (titlu, conținut) valori („”.$_POST[„titlul_meu”].””, „”.$_POST[„textul_meu”].”” ); ");

Adică, dacă $send a fost transferat de pe butonul „Trimite” folosind metoda POST (vezi numele acestui buton!), atunci ar trebui să fie executat această cerere(funcția mysql_query), iar conținutul câmpurilor formular va fi scris în tabelul bazei de date.

Această intrare pare greu de citit la început și pur și simplu se poate confunda în ea în numeroase simple și ghilimele duble. Prin urmare, să-l considerăm în „forma sa pură”.

Parametrul funcției mysql_query(); este interogarea SQL în sine, care poate fi reprezentată ca:

INSERT în pagini (titlu, conținut) valori ("variable_value_1", "variable_value_2");

Deci pare a fi mai clar...

Acum deschideți phpMyAdmin și asigurați-vă că intrările sunt introduse în câmpurile tabelului. Dar asta e doar jumătate din bătălie. Trebuie să învățăm cum să „extragem” datele necesare din tabele pentru a lucra cu ele în panoul de administrare și, cel mai important, să le afișam pe site.

Fișierul final page.php ar trebui să arate astfel:

Primul meu CMS

Introduceți titlul paginii Introduceți text

Mai multe despre asta în partea următoare.

Partea 2: Citirea din tabelele bazei de date MySQL

Să creăm în panoul nostru de administrare o listă cu toate titlurile paginilor stocate în tabelul de pagini. Și organizăm munca acestei liste astfel încât utilizatorul, făcând clic pe mouse, să obțină acces la conținutul paginii.

Pentru a citi înregistrările din tabel, vom folosi următoarea construcție:

$sql = mysql_query("SELECT*FROM pages");

while($record = mysql_fetch_array($sql)) ($titlu = $record["titlu"]; ) Dacă există deja mai multe înregistrări în tabel, atunci în forma sa „pură” construcția ne va oferi doar ultima dintre ele, deoarece valoarea variabilei $title este actualizată constant în buclă while

. Dar vom folosi un mic truc. În aceeași buclă vom afișa toate înregistrările pe ecran, una după alta.

"; } ?>
Pentru a face acest lucru, desenați un tabel și plasați o parte din el în bucla:

„.$record[„titlu”].”

Acum fiecare înregistrare citită va fi introdusă într-o celulă, iar rândurile tabelului se vor „multiplica” pe măsură ce înregistrările ulterioare sunt citite.

Lângă celula în care am plasat titlurile paginii se află o altă celulă. Tocmai am scris cuvântul Edit în el, dar aș fi putut pune o pictogramă drăguță - nu contează. Un alt lucru este important: această intrare (sau imagine) ar trebui să conducă administratorul la secțiunea de admin, unde se află editorul de text.

Acum este timpul să folosiți cel mai primitiv „editor” - zona de text a formularului.

Pentru a face acest lucru, creați un fișier editor.php cu următorul cod.

"; } ?>
Pentru a face acest lucru, desenați un tabel și plasați o parte din el în bucla: editor.php „.$record[„conținut”].”

Salva

În fiecare dintre rândurile tabelului de sus, apare titlul paginii citite din baza de date. În dreapta acestuia, în celula următoare, este cuvântul Editare. Se leagă la aceeași pagină editor.php și îi transmite valoarea variabilei $page_title, care este egală cu titlul paginii din acest rând (am evidențiat acest fragment de cod cu roșu):

Imprimare" Pentru a face acest lucru, desenați un tabel și plasați o parte din el în bucla:";

Când utilizatorul face clic pe un astfel de link, el este returnat la aceeași pagină, dar cu o valoare specifică pentru variabila $page_title.

Următorul fragment de cod caută în baza de date tabelul de pagini și, în acesta, valoarea câmpului de conținut pentru care câmpul titlu se potrivește cu valoarea variabilei $page_title.

După ce a găsit un astfel de câmp, acesta își transmite conținutul variabilei $content, care îl imprimă în zona de text.

Acum avem posibilitatea de a edita acest text. Dar cum să returnați versiunea corectată a acestui text în baza de date - mai multe despre asta în partea următoare.

Partea 3. Editarea înregistrărilor din tabelele bazei de date MySQL

Să adăugăm următoarele fragmente de cod la începutul fișierului editor.php:

Și la sfârșitul acestui fișier adăugăm:

Această tehnică se numește sesiune. Sesiunea va fi necesară pentru a ne aminti pagina pe care o edităm într-o variabilă. Deși am făcut clic pe butonul Editare și am obținut valoarea variabilei $page_title (titlul paginii care se editează), după ce facem modificări și facem clic pe butonul Salvare, pagina editor.php se va reîncărca și valoarea $page_title se va pierde . De aceea îl vom stoca în $_SESSION[„id”].

Și când formularul trimite valoarea variabilei $text_edit (acesta este numele pe care l-am dat zonei de text) folosind metoda POST către pagina reîncărcată editor.php, vom putea rula următorul cod:

If (isset($_POST["salvare"])) $my_text = strval($_POST["text_edit"]);

$sql =mysql_query("UPDATE pages SET content = "".$my_text."" WHERE title="".$_SESSION["id"]."";");

Sper că înțelegeți de ce avem nevoie de variabila $_SESSION["id"].

"; } ?>
Pentru a face acest lucru, desenați un tabel și plasați o parte din el în bucla: editor.php

Scriptul complet al fișierului editor.php va arăta astfel:

Partea 4: Ștergerea înregistrărilor din tabelele bazei de date MySQL

„.$record[„conținut”].” ";

Să adăugăm o altă celulă la tabelul fișierului editor.php:

Nu contează deloc ce valoare trecem variabilei $delete, puteți scrie &delete=1 sau &delete=abcd, dar important este că acum puteți scrie o condiție cu care vom șterge intrarea selectată:

If($delete) $sql =mysql_query("DELETE FROM pages WHERE title="".$_SESSION["id"]."";"); Atenţie! editor.php:

  1. Am eliminat următoarea construcție: „.$record[„conținut”].”

    pentru a nu șterge accidental pagina dorită;

  2. S-a adăugat o funcție pentru a șterge o pagină dacă este apăsat butonul „Ștergere”.

dacă (isset($_POST[„șterge”]))

În forma sa finală, fișierul nostru editor.php arată astfel:

header("Content-Type: text/html; charset=utf-8");
sesiune_start();
include("config.php");
?>



if(isset($_GET["page_title"]))
$page_title=$_GET["page_title"];
$sql = mysql_query("SELECT*FROM pages");

{
printeaza "


";
}
?>
Pentru a face acest lucru, desenați un tabel și plasați o parte din el în bucla: editor.php

$sql = mysql_query("selectați * FROM pages where title="".$page_title."";");
while($record = mysql_fetch_array($sql))
{
$conținut=$record[„conținut”];
}
if (isset($_POST["salvare"]))
$my_text = strval($_POST["text_edit"]);
$sql =mysql_query("UPDATE pages SET content = "".$my_text."" WHERE title="".$_SESSION["id"]."";");
dacă (isset($_POST[„șterge”]))
$titlu = strval($_SESSION["id"]);
$sql =mysql_query("ȘTERGERE DIN paginile WHERE title="".$title."";");
?>













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

Probabil că asta este tot ce am vrut să vă spun despre principiile panoului de administrare. Desigur, într-un CMS real, toate modulele individuale (și avem în prezent trei dintre ele: page.php, editor.php și fișierul de serviciu config.php) funcționează sub controlul fișierului principal index.php, care unul- time conectează toate modulele la baza de date și, dacă utilizatorul dorește, poate atașa un modul de creare a paginii, un modul de editare, precum și o serie de alte module (modul meniu site, modul de gestionare a cărții de oaspeți, bannere etc.). Este important doar să înțelegeți că orice module, orice acțiune din panoul de administrare se bazează pe patru operatori SQL principali:

  • INTRODUCE- introduceți o înregistrare în baza de date;
  • SELECTA- selectează înregistrări din baza de date;
  • UPDATE- modificați intrarea;
  • ŞTERGE- ștergeți intrarea.

Deci nu este nimic foarte complicat în a vă scrie propriul panou de administrare. Orice CMS, chiar și giganți precum Joomla, funcționează pe același principiu.

Și conectarea site-ului însuși la panoul de administrare este, în general, la fel de ușoară ca decojirea perelor, după ce ați scris scriptul pentru panoul de administrare în sine.

Mult succes pentru tine!

Bazat pe materiale din diverse surse cu corecții proprii.

Panoul de administrare al site-ului este o parte a motorului conceput pentru a adăuga automat conținut pe site. Are un câmp în care scrieți textul articolului. Panoul de administrare conține scripturi care creează pagini noi de site sau adaugă un articol la baza de date, în funcție de structura site-ului. Un link către articol este adăugat în meniu. De obicei, panoul de administrare vă permite să adăugați nu numai text, ci și alt conținut. Atunci când creați un motor de site, decideți dacă creați un panou de administrare sau adăugați singur articole.

Panoul de administrare se află pe o pagină separată, care are o adresă aproximativ ca aceasta:

http://mysite.ru/adminpanel.php

Site-ul nu are link către această pagină, trebuie doar să-i cunoașteți URL-ul. Conectarea la panoul de administrare se face prin intermediul formularului de autorizare. Diferă de autorizarea obișnuită prin faptul că vă conectați nu ca utilizator obișnuit, ci ca administrator, iar informațiile despre aceasta trebuie înregistrate în sesiune. Doar administratorul ar trebui să aibă acces la panoul de administrare.

Autorizație de administrator

Autorizarea administratorului se poate face în două moduri. Dacă există mai mulți administratori, atunci puteți adăuga un câmp la tabelul cu utilizatori pentru a indica faptul că utilizatorul este administrator. Sau puteți pur și simplu să transferați drepturi de administrator unui anumit utilizator în scriptul de autorizare. Folosim a doua varianta. Să apelăm la pagina de conectare avtadministrator.html. Iată codul său:

avtadministrator.html:

Formularul trimite date în fișierul adminavt.php. Acesta este un script de autorizare. Codul său este astfel:

adminavt.php:

3
4
5
6
7
8
9
10
11
12
13

$login = $_POST["login"]; $pas = $_POST["parolă"]; if ($login == "Viktor" && $pas == 1122) ( session_start(); $_SESSION["admin"] = true; $script = "adminpanel.php"; ) else $script = "avtadministrator.html" ; header("Locație: $script");

Comentarii:

3, 4 - obțineți login și parola din formular

5 - dacă sunt corecte

8 - înregistrați în sesiune că acesta este administrator

9 - pagina pentru a merge la - adminpanel.php

11 - dacă autentificarea sau parola este incorectă

13 - mergeți la pagina dorită

Crearea unui panou de administrare

Panoul de administrare arată cam așa.

adminpanel.php:

La început există un script PHP care verifică dacă există o variabilă admin în sesiune. Dacă nu, atunci un utilizator care nu este administrator este conectat la panoul de administrare. Apoi accesați pagina de autorizare. Panoul de administrare este un formular în care administratorul introduce un articol nou. Titlul articolului poate fi lung, iar linkul către acesta din meniul site-ului poate diferi de titlu. De aceea, formularul are un câmp pentru textul linkului.

Înainte de a adăuga un articol în baza de date, trebuie să plasați textul articolului în etichete

Să facem asta din partea clientului pentru a nu irosi resursele serverului. Să adăugăm un script la pagina în care punem eticheta înaintea textului articolului

Și după text

. Pentru a salva toate paragrafele, trebuie să închideți eticheta în loc de o întrerupere de linie

Și deschide unul nou. Iată codul de script:

JavaScript:

24
25
26
27
28
29
30

var form = document.querySelector("form"); form.onsubmit = funcție () ( var text = form.text; text.value = "

" + text.value + "!}

"; text.value = text.value.replace(/\n/g, "

"); };

Mi se pare că trebuie să protejăm prin parolă un singur fișier și anume index.php, deoarece este singurul loc unde se face conexiunea la baza de date. Dacă numim, separat, bucățile de cod pe care le conectăm din folderul modules, nu se va întâmpla nimic, deoarece toate necesită conectarea la baza de date. Deci, folosind aceste piese, nu-ți poți dăuna blogului! Aceasta înseamnă că nu este deloc necesar să le parolați.

Ţintă

  • Să punem scriptul pentru conectarea la baza de date în dosar separat, și conectați-l la index.php folosind include
  • Să creăm un nou tabel în baza de date unde vom stoca login-ul și parola de administrator
  • Trebuie să scriem un script care să ne împiedice să ne logăm pagina de start panoul de administrare fără autorizație și ne va redirecționa către un formular în care administratorul trebuie să introducă un login și o parolă
  • Trebuie să creați un fișier php nou și să plasați formularul și codul de autorizare în el
  • Să creăm un șablon de formular
  • Să scriem un script pentru ca administratorul să se deconecteze de la panoul de administrare și să plasăm un link către acest script pe pagina principală a panoului de administrare

Punem conexiunile la baza de date într-un fișier separat

Deoarece vom folosi această conexiune la baza de date în două fișiere (în index.php și login.php), ar fi mai înțelept să plasăm scriptul de conectare într-un fișier separat. De asemenea, acum vom crea o variabilă în acest script în care vom stoca adresa blogului nostru (sub forma http://address_blog.ru). Mai întâi, să scoatem scriptul, apoi voi explica de ce avem nevoie de o variabilă cu o adresă.

$nameDB = "blog";//Numele bazei de date
$nameSERVER = "localhost";//Server
$nameUSER = "rădăcină";//Nume utilizator al bazei de date
$passUSER = "";//parola utilizator DB
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));

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

Salvați această bucată de cod într-un fișier separat (am numit acest fișier db.phpși l-am plasat în folderul module) Apoi ștergeți acest script din fișier index.phpși înlocuiți-l cu următorul cod


include("module/db.php");
//CONECTAȚI LA BAZĂ DE DATE (DB)

Acum voi explica trei rânduri noi în fișier db.php. Cusături

if(isset($_GET["rădăcină_server"]))($rădăcină_server = $_GET["rădăcină_server"];unset($rădăcină_server);)
if(isset($_POST["rădăcină_server"]))($rădăcină_server = $_POST["rădăcină_server"];unset($rădăcină_server);)

ne va permite să ștergem o variabilă dacă cineva încearcă să o creeze cu o solicitare GET sau POST. Avem nevoie de variabila cu adresa în sine pentru a determina dacă autorizația vine de la blogul nostru și nu de la un server terță parte. O astfel de protecție ne poate proteja blogul de hacking, ei bine, mai precis, ne ajută pe noi, administratori și programatori, să credem în el

Să creăm un tabel nou în baza de date

Pentru început, vreau să spun următoarele: în baza de date vom stoca o parolă criptată folosind funcții php md5(). Vom introduce manual numele de utilizator și parola de administrator. Voi furniza următoarele date:

Autentificare: admin

Parola: 123456

Parola criptată va arăta astfel:

Adică, dacă parola 123456 este trecută prin funcția md5, veți obține ceva de genul acesta parola criptata.

Să începem. Accesați phpMyAdmin și creați un tabel nou:

Și introduceți manual o linie în tabel

Script de verificare a autorizației

Autorizarea în sine este crearea variabilei globale $_SESSION. Adică, dacă această variabilă globală există, atunci utilizatorul este autorizat, prin urmare scriptul trebuie să verifice dacă aceasta (variabila globală) a fost creată. Dacă da, atunci nu faceți nimic, dacă nu, atunci transferați-l în fișierul login.php.

Înainte de a apela variabila globală $_SESSION, trebuie să începeți sesiunea, și anume, scrieți session_start(); Dacă acest lucru nu se face, atunci variabila globală $_SESSION pur și simplu nu va funcționa!

În general, iată un script care trebuie inserat imediat după conectarea la baza de date din index.php

Session_start();
$logSESS = $_SESSION["$logSESS"];
dacă(!isset($logSESS))
{
header("locație: login.php");
Ieșire;
}
//SCRIPT DE VERIFICARE AUTORIZARE

Deoarece valoarea variabilei globale $_SESSION este transferată la variabila $logSESS, trebuie să oprim încercările de a crea această variabilă ($logSESS) în alte moduri (adică să împiedicăm crearea acestei variabile folosind GET și Solicitare POST). Aceasta este funcția pe care o îndeplinesc primele două rânduri ale scriptului.

Șablon de formular

Mai întâi să creăm un șablon. Șablonul este un formular obișnuit cu două câmpuri de text














Nu este nimic complicat aici. Am creat șabloane similare de mai multe ori. Să numim acest șablon login.htmlși puneți-l într-un pachet cu șabloane

Dosar de autorizare

Să creăm mai întâi o funcție care ne va oferi un formular de autorizare. Noi creăm fișier nou, numiți-l login.php și plasați-l în folderul admin

//CONECTAȚI LA BAZĂ DE DATE (DB)
include("module/db.php");
//CONECTAȚI LA BAZĂ DE DATE (DB)

funcția form_author()//funcția de conectare a formularului
{
$sm_read = file("templates/login.html");//...conectați șablonul
Funcția $sm_read = implode("",$sm_read);//file() returnează o matrice, așa că o lipim împreună

Returnează $sm_read;//afișează rezultatul
}

$txt = form_author();//apelați funcția de conectare a formularului

include("șabloane/index.html");//șablon principal
?>

În acest fișier ne conectăm la baza de date (în partea de sus). Apoi, am lăsat spațiu pentru scriptul de autorizare (pentru a fi mai ușor de explicat unde să inserăm scriptul, pe care îl voi posta mai jos, declarăm meta-etichete și ne creăm funcția).

Funcția în sine nu este foarte complicată, implică conectarea unui șablon și nimic mai mult. Penultima linie salvează rezultatul funcției în variabila $txt. Ei bine, ultima linie conectează șablonul principal.

Acum, dacă încerci să intri în panoul de administrare al blogului, dar vei fi redirecționat către această pagină

//AUTORIZARE
//distrugeți variabila cu login și parola care au fost create introducându-le în linie
dacă (isset ($_GET["loginDB"])) ($loginDB = $_GET["loginDB"];unset($loginDB);)
dacă (isset ($_GET["passDB"])) ($passDB = $_GET["passDB"];unset($passDB);)

//introduceți datele de conectare și parola trimise prin cerere post în variabile separate
if (isset ($_POST["loginDB"])) ($loginDB = $_POST["loginDB"];)
if (isset ($_POST["passDB"])) ($passDB = $_POST["passDB"];)

if(isset($loginDB) AND isset($passDB))//dacă există login și parola
{
if(preg_match("/^+$/s",$loginDB) ȘI preg_match("/^+$/s",$passDB))//verificați-le pentru corectitudinea intrării utilizând expresii regulate
{
$prov = getenv("HTTP_REFERER");//determinăm pagina de la care a venit cererea
$prov = str_replace("www.","",$prov);//elimină www dacă există unul
preg_match("/(http\:\/\/[-a-z0-9_.]+\/)/",$prov,$prov_pm);//curățăm adresa de lucruri inutile, trebuie să obținem un link ca acesta http://xxxx.ru
$prov = $prov_pm;//puneți adresa curată într-o variabilă separată
$server_root = str_replace("www.","",$server_root);//elimină www dacă este prezent

If($server_root == $prov)//dacă adresa blogului nostru și adresa paginii din care a fost trimisă postarea sunt egale
{
$passDB = md5($passDB);//criptați parola introdusă

$resultlp = mysql_query("SELECT login, pass FROM user WHERE login="$loginDB"");//afișăm login și parola din baza de date
$log_and_pass = mysql_fetch_array($resultlp);

If($log_and_pass != "")//dacă rezultatul a fost scos din baza de date
{
if($loginDB == $log_and_pass AND $passDB == $log_and_pass)//dacă informațiile introduse se potrivesc cu informațiile din baza de date
{
$_SESSION["$logSESS"] = $log_and_pass;//creați o variabilă globală
header("location: index.php");//transferă utilizatorul la pagina principală
Ieșire;
}
else//dacă informaţiile introduse nu se potrivesc cu informaţiile din baza de date
{
Ieșire;
}
}
else//dacă un astfel de utilizator nu este găsit în baza de date
{
header("location: login.php");//transfer la formularul de autorizare
Ieșire;
}
}
else //dacă cererea a fost trimisă de la o altă adresă
{
header("location: login.php");//transfer la formularul de autorizare
Ieșire;
}
}
altfel//dacă sunt introduse date de conectare și parolă incorecte
{
header("location: login.php");//transfer la formularul de autorizare
Ieșire;
}
}
//AUTORIZARE

Această bucată de cod este inserată în fișierul login.php în locul acestor linii

Cum funcționează scenariul? Pentru început, distruge variabilele cu login și parola create prin metoda GET (dacă există). Apoi login-ul și parola sunt verificate pentru corectitudine folosind expresii regulate.

Este generată și adresa de la care a venit utilizatorul. Adică, adresa de la care a venit utilizatorul ar trebui să fie astfel:

http://yourl.ru/login.php

și după formare, așa:

http://yourl.ru/

Această adresă este comparată cu adresa din variabila $server_root pe care am declarat-o în conexiunea la baza de date (fișier db.php)

Dacă cel puțin o condiție nu funcționează, utilizatorul va fi redirecționat înapoi la formular.

Acum, dacă intri în fereastra formularului

autentificare - admin

parola - 123456

Aceasta vă va duce la panoul de administrare. Dacă introduceți o autentificare sau o parolă greșită, veți fi redirecționat înapoi la formular.

Butonul de ieșire

Acum va trebui să edităm șablonul principal al panoului de administrare, vom insera în el un link către scriptul de ieșire, așa că vom adăuga și un link către pagina principală a panoului de administrare în șablon. Ne vom asigura că atunci când facem clic pe logo-ul din panoul de administrare, vom fi transferați pe pagina principală. (Acest lucru, desigur, nu este necesar)

Iată o nouă bucată de cod pe care am inserat-o, în locul celui vechi, în șablon index.html



Acum să creăm un fișier nou, să îl numim ieșire.phpși puneți-l într-un folder admin. Iată codul fișierului

session_start();//începe sesiunea
unset ($_SESSION["$logSESS"]);//șterge variabila globală înregistrată
session_destroy();//distruge sesiunea
header("locație: ../");//redirecționează către pagina principală a părții utilizator a blogului
Ieșire;
?>

Aici fiecare rând are un comentariu, așa că vă puteți da seama

Concluzie

Ei bine, aici termin dezvoltarea celui mai simplu CMS în PHP. Dacă acesta este primul post pe care îl citiți pe acest blog, atunci iată o listă cu toate articolele dedicate dezvoltării unui blog de la zero. Foarte curând voi deschide secțiunea „Îmbunătățiri” și voi continua să ne chinuiască proiectul Așa că abonați-vă la știri și așteptați noi postări!

Dacă aveți întrebări, nu ezitați să le puneți, vă voi răspunde cu plăcere (dacă, bineînțeles, sunt în măsură să vă răspund la întrebare).

Mult succes, asta-i tot pentru ziua de azi!

În ultimul articol am discutat cu tine. Cu toate acestea, de foarte multe ori trebuie să gestionați site-ul: adăugați materiale noi, gestionați utilizatori, voturi. Desigur, acest lucru se poate face prin PHPMyAdmin, dar acest lucru este foarte incomod, deci buna decizie va - creați un panou de administrare pentru site. Și veți învăța cum să faceți acest lucru în acest articol.

Deci, să descriem din nou ordinea acțiunilor care trebuie efectuate:

  1. Aranjați toate paginile site-ului. În principiu, vă puteți descurca deloc fără design, dar trebuie să existe o structură elementară. Adică, datele tabelare ar trebui să fie într-un tabel, și nu în text continuu.
  2. Decideți ce date doriți să vedeți în panoul de administrare. De exemplu, probabil că va trebui să vedeți utilizatorii site-ului dvs., articolele dvs., poate niște sondaje.
  3. Creați o clasă pentru a gestiona panoul de administrare. Aici ar trebui create metode care vă permit să selectați dintr-o varietate de tabele, precum și să adăugați și să editați înregistrări în ele. Și trebuie să creați metode similare pentru toate tabelele cu care doriți să lucrați Panouri de administrare(Ar fi trebuit să fi selectat deja acest lucru în paragraful anterior). De exemplu, cel mai simplu exemplu cu utilizatori. Setul minim de metode necesare: selectarea tuturor utilizatorilor, adăugarea unui nou utilizator, schimba utilizatorul. Desigur, toate aceste sarcini ar fi trebuit să fi fost deja implementate de dvs. atunci când creați un motor pentru site, așa că aici va trebui doar să apelați la vechile clase și, poate, să schimbați cumva datele special pentru Panouri de administrare.
  4. Împărțiți șablonul site-ului dvs. în părți separateși copiați-le în fișiere separate cu extensia tpl. De asemenea, puneți elementele șablonului, de exemplu, astfel: " Utilizator (nume de utilizator) înregistrat (regdate)„. Acesta este doar un exemplu, iar datele, în general, sunt mai convenabile de afișat în tabele.
  5. Creați o clasă care va înlocuiîn loc de elemente șablon, date corespunzătoare.
  6. Colectați toate paginile panoului de administrare cărămidă cu cărămidă Site-ul dvs. folosind clasa creată în paragraful anterior.
  7. Dacă doriți, puteți face un design, deși, desigur, acest lucru este exclusiv pentru tine și alți administratori.

După cum puteți vedea, cel mai recent 4 punctele sunt identice cu cele pe care le-ați efectuat la crearea motorului. Aici volumul de muncă va fi semnificativ mai mic, așa că cred că vă puteți descurca fără probleme.

Am stat pe site-ul meu timp de aproximativ trei luni fără Panouri de administrare, adăugând materiale noi direct prin baza de date. Sincer să fiu, am petrecut mult timp suplimentar, dar când am creat un panou de administrare pe site-ul meu, atunci procesul de gestionare a site-ului a fost simplificat semnificativ. Așa că vă recomand să faceți același lucru.

Exemplu de creație Panouri de administrare Veți găsi în acest curs de formare:

Sarcina de a construi un sistem de management al conținutului (CMS) poate fi confuză pentru un începător Dezvoltator PHP. Dar diavolul nu este la fel de înfricoșător pe cât este pictat! În această serie de lecții vom construi de la zero un sistem simplu, dar complet funcțional.

În timpul procesului, veți învăța cum să creați baze de date și tabele MySQL, să lucrați cu obiecte, constante, include, sesiuni și alte instrumente PHP. În plus, vom arăta cum să separăm logica aplicației de prezentare și să facem codul PHP mai sigur. Și veți descoperi, de asemenea, multe alte lucruri care vă vor fi utile în crearea propriului sistem de vis.

Puteți vedea aplicația finalizată în acțiune pe pagina demo (din motive de securitate, modul numai citire este activat, astfel încât nu veți putea adăuga, edita sau șterge articole). De asemenea, puteți descărca cod complet PHP al micului nostru CMS cu comentarii traduse.

Nota: Pentru a studia materialele de lecție veți avea nevoie de un server web Apache cu instalat modul PHPși serverul MySQL. Pentru a lucra calculator local puteți utiliza unul dintre instrumentele pentru dezvoltatori web: XAMPP (activat engleză), Denwer, Open server sau altele.

Notă de siguranță

În proiectele reale, este mai bine să plasați config.php undeva în afara directorului rădăcină al site-ului web, deoarece fișierul conține nume de utilizator și parole. De obicei, codul PHP nu poate fi vizualizat într-un browser, dar uneori din cauza configurării incorecte a serverului web, codul devine accesibil. Puteți folosi funcția hash() pentru a hash parolele și pentru a stoca hash-uri în config.php în loc de parole cu text simplu. Apoi, când înregistrați un utilizator, puteți utiliza din nou funcția hash() pentru a codifica parola introdusă și a compara rezultatul cu hash-ul salvat în config.php.

În următorul tutorial vom construi clasa principală a aplicației noastre - Articolul.