Buna ziua tînăra mea coder, astăzi și încep să scrie CMS lor nepretențioasă.
Deci, unde începem ... desigur, cu design-ul. Acest lucru ar trebui să poată / să nu aibă un rece, nepretențios CMS? Această întrebare este destul de complex, deoarece Are CMS, chiar și cel mai simplu, este scris la nevoile specifice: e-shop, site-ul programatori, un site de știri, o galerie (deși, în principiu, nu este destul de Galerie- CMS), etc. În acest articol ne vom uita la a doua opțiune. Ceea ce trebuie să fie în măsură să o astfel de CMS? Cred că toată lumea va fi de acord cu mine că:
În primul rând vom organiza structura de directoare a viitorului site:
/ DocumentulRădăcină
/ AdminPanel # directorul rădăcină admin
/ Surse # Scripturi admin
/ HTML # De fapt, paginile HTML ale controlului admin
/ Surse # Scripturi CMS
/ HTML # html
/ Imagini # Imagini
/ Descărcări directorul # stocate în descărcări disponibile în prezent
fișiere / config # configurare CMS, de exemplu, care conține datele de autentificare și parola pentru a accesa MySQL
Fișier cu cod index.php:
require_once ( 'config / database.php'); // Încărcați script-ul se conectează la baza de date
require_once ( 'surse / session.php'); // script Managementul sesiuni de utilizator
require_once ( 'config / config.php'); // fișier de configurare
require_once ( 'surse / check.php'); // Controale primite de la opțiuni URL'a
require_once ( 'surse / link-uri'); //, link-ul către site-ul de navigare
$ Act = check_act ($ debug); // funcție pentru a verifica $ actul variabilă, este în fișierul check.php
$ Mod = @ $ _ GET [ 'mod']; // Ia $ MoD variabila
$ Site_links = get_links (mysql_tables $); // Ia-o serie de referințe
comutator ($ act)
caz „IDX“: // în cazul în care vizitatorul se vizualizează pagina principală
require_once ( 'surse / news.php'); // Încarcă script-ul de știri
$ Site_news = get_news (mysql_tables $); // Ia-o serie de știri
require_once ( 'HTML / index.htm'); // încărcați pagina html
pauză;
>
?>
Fișier cu cod database.php:
$ Mysql_login = 'root'; // Utilizator pentru a accesa serverul de baze de date
$ Mysql_pass = ''; // Parola
$ Mysql_host = 'localhost'; // gazdă pe care atârnă MySQL
$ Mysql_database = 'MyCMS'; // Nume bază de date
Fișier cu cod session.php:
în cazul în care (! @ $ _ SESSION [ 'group_id']) // În cazul în care utilizatorul a dispărut
<
$ _SESSION [ 'utilizator'] = 'oaspeți';
$ _SESSION [ 'id'] = 0;
$ _SESSION [ 'group_id'] = - 1;
$ _SESSION [ 'last_click'] = $ timp;
>
în cazul în care (@ $ _ SESSION [ 'group_id']<>„“) // în cazul în care vizitatorul nu este un oaspete
<
$ _SESSION [ „last_click“] = $ timp; // în viitor, avem nevoie pentru a ține seama de utilizatori online, pe site-ul
>
Fișier cu cod check.php:
Funcția check_act ($ debug) // verifica funcție variabilă act
$ Act = @ $ _ GET [ 'act'];
if ($ act<>'IDX')
$ Act = $ debug [ 'indx_act']; // Am stabilit valoarea implicită
>
$ reveni act;
>
config.php fișier de cod:
// Setați corecția de eroare de control:
$ Debug [ „indx_act“] = „IDX“; // În cazul în care script-ul principal nu primește corect actul de valoare peremennnoy el o cere această valoare
Fișier cu cod links.php:
get_links funcția ($ tabel)
$ Query = "SELECT poziție din tabelul $";
$ Rezultat = mysql_query ($ query);
$ Rânduri = mysql_num_rows ($ rezultat);
pentru ($ i = 0; $ i<$rows; $i++)
$ Sort_array [$ i] = mysql_result ($ rezultat, $ i);
>
sortare ($ sort_array);
pentru ($ j = 0; $ j<$rows; $j++)
$ Pos = $ sort_array [$ j];
$ Query = "SELECT * FROM tabel $ atunci când poziția = '$ pos'";
$ Rezultat = mysql_query ($ query);
$ Tmp_arr = mysql_fetch_array ($ rezultat);
$ Link-uri [$ j] [ 'name'] = $ tmp_arr [ 'nume'];
$ Link-uri [$ j] [ 'link'] = $ tmp_arr [ 'link'];
>
$ Link-uri [ 'rânduri'] = $ rândurile-1;
reveni $ link-uri;
>
Aici, în principiu, mișcare deja mici a dovedit :) Acum, să analizăm codul unor fișiere pe care le-am explicat mecanismul de lucru. Deci, ce am verifica $ actul variabilă, vă întreb? Și imaginați-vă că cineva ar vrea să-l schimbe url'e? Script-ul poate să nu funcționeze în mod constant și date daune foarte reale, etc. Desigur, în acest exemplu, joacă, să-l puneți blând, un rol minor, dar amintiți-vă că aveți nevoie pentru a verifica tot ceea ce poate schimba utilizatorul (chiar mai bine pentru a verifica ceea ce este, în principiu, și nu se poate schimba). În cazul în care o variabilă pentru o valoare de stânga l-am atribui valoarea implicită, și, astfel, rupe kiddisov dăunătoare :)
Asta e tot. Apropo, unii oameni care citesc acum acest articol, probabil vozmutyatsya: „De ce în cerere nu utilizează comanda prin structură și nu utilizează tabelele legate? La urma urmei, acesta va simplifica sarcina!“. Faptul că stilul de a scrie script-uri mele este de a maximiza portabilitatea lor, și anume, Nu folosesc niciodată tabele interogări complexe legate, etc. Desigur, toate acestea are un efect negativ asupra vitezei de script-ul și însoțite de (cod nu prea clar), și, dacă doriți să realizeze o productivitate maximă în detrimentul portabilității, folosesc toate aceste instrumente, dar încă nici unul din script-ul meu atunci când nu se deplasează doar unul versiunea MySQL la alta, și de la o platformă și / sau tipul de servere de web și servere de baze de date nu a dat nici o eroare sau avertismente :) Oricine este liber să facă ce vrea el, pentru că pe ea și programare: posibilele soluții la această problemă, aceeași sumă ca și oamenii încearcă cu hotărâre s);