Introducere în limbajul html



Yüklə 3,05 Mb.
səhifə135/211
tarix03.01.2022
ölçüsü3,05 Mb.
#37935
1   ...   131   132   133   134   135   136   137   138   ...   211

Autentificare



























Nume: < / td>

Parola:





, etc. Iată conţinutul fişierului:
admin_top.php

____________________________________________________________________________________________







libraria mea











include("admin_top.php");

print "Aceasta este prima pagina!";

?>
Uneori, includerea unui fişier care să se ocupe cu autorizarea nu este o soluţie viabilă. De exemplu, putem avea următorul exemplu în care o pagină a secţiunii de administrare (testphp) include alte două pagini(meniu.php şi main.php). Atunci ar trebui să includem fişierul autorizare.php în fiecare din ele, dar atunci am primi un mesaj de eroare (se reiniţializează sesiunea de 3 ori şi în plus, în meniu.php şi main.php se reiniţializează după ce au fost trimise date către browser).

Atunci putem crea o funcţie declarată de noi, care să facă autorizarea.

Această funcţie o putem apela oricând avem nevoie de ea (cu condiţia să fie definită întâi).

Iată cum ar arăta structura site-ului în acest caz:
Test.php (include autorizare.php care porneşte sesiunea, se conectează la baza de date, verifică autorizarea)
Meniu.php (include autorizare.php care porneşte sesiunea, se conectează la baza de date, verifică autorizarea)
Main.php (include autorizare.php care porneşte sesiunea, se conectează la baza de date, verifică autorizarea)
Observăm că în cele doup fişiere care sunt parte a lui test.php nu facem decât să verificăm autorizarea, fără să includem nici un alt fişier. Cum funcţia de autorizare este definită în fişierul „mamă”, dacă meniu.php sau main.php sunt apelate în cadrul lui, vor face verificarea folosind funcţia deja definită. Iată structura celor patru fişiere:

f_autorizare.php

______________________________________________________________________________________



session_start();

include("../conectare.php");

function autorizat()

{

$sql = "SELECT * FROM admin WHERE admin_nume = '" .$_SESSION['nume_admin'

] ."' AND admin_parola='".$_SESSION ['parola_encriptata']."'";

$resursa = mysql_query ($sql) ;

if($_SESSION['key_admin'] != session_id() | | mysql_num_rows ($reasursa) != 1)

{

return false;

}

else

{

return true;

}

}

?>
test.php


/* include fişierul f_autorizare.php care porneşte sesiunea, se conectează la baza de date şi declară funcţia de autorizare*/
include("f_autorizare.php");
/* şi verifică autorizarea folosind funcţia definită în fişierul pe care tocmai l-am inclus, f_autorizare.php*/
if(!autorizat())

{

print 'Acces neautorizat!';

exit;

}

include ("meniu.php");

include("main.php");

?>
meniu.php

/* verifică doar autorizarea*/
if (!autorizat())

{

print 'Acces neautorizat!';

exit;

}
/* codul care ne rulează dacă este autorizat */
test.php (defineşte funcţia de autorizare, foloseşte această funcţie pentru a face autorizarea)

meniu.php, inclus în test.php (definit de autorizare, foloseşte această funcţie pentru a face autorizarea=>eroare! funcţia a fost definită de două ori (o dată în fişierul ,,mamă", o dată aici.
main.php

/* verifică doar autorizarea*/
if (!autorizat())

{

print 'Acces neautorizat!';

exit;

}
/* codul care se rulează dacă este autorizat */
Astfel vedem cum, folosind o funcţie definită de noi, nu se va putea accesa nici unul din fişierele incluse fără autorizare! De cele mai multe ori, o funcţie este mult mai utilă decât un fişier inclus însă alegerea este a dvs. Fiti atenţi doar să nu definiţi funcţia de două ori în cadrul aceluiaşi script, altfel veţi primi mesajul de eroare Fatal error: Cannot redeclare numele_functiei().

Dacă funcţia a fost deja definită undeva în execuţia scriptului, trebuie doar să o apelaţi.
Adăugare

În baza de date putem adauga trei lucruri: domenii, autori sau cărţi noi. Pentru acestea vom folosi o pagină în care vom afişa trei formularc, câte unul pentru fiecare şi altă pagină care va prelucra informaţiile din aceste formulare, în funcţie de care a fost trimis către server. În pagina adaugare.php vom avea:

- formularul pentru introducere de meniu nou;

- formularul pentru introducere autor nou;

- formularul pentru introducere carte nouă;

Pagina prelucrare adaugare.php va avea următoarea structură:

- include pagina admin_top.php (se porneşte sesiunea, se conectează la baza de date şi încarcă începutul paginii);

- dacă a fost trimis primul formular, îl prelucrează şi introduce domeniul nou în tabelul domenii şi apoi afişează un mesaj de confirmare;

- dacă a fost trimis al doilea formular, îl prelucrează, îl introduce noul autor în tabelul autori şi afişează un mesaj de confirmare;

- dacă a fost trimis al treilea formular, îl prelucrează şi introduce noua carte în tabelul cărţi şi apoi afişeaza un mesaj de confirmare.

Înainle de a crea cele două fişiere, vom mai face un singur lucru. Ne aducem aminte că tabelul cărţi are un câmp de tip DATE numit data în care se stochează data adaugării cărţii în baza de date. Această data ne foloseşte pentru a afişa pe prima pagină cele mai noi trei cărţi. ştim din experienţă că este mult mai simplu să lucrăm cu câmpuri de tip TIMESTAMP (se setează automat cu data curentă). aşa ca ne vom conecta la baza de date şi vom modifica tipul câmpului:
ALTER TABLE carti CHANGE data data TIMESTAMP(10) NOT NULL;
Toate valorile înregistrate anterior vor fi convertite, iar de acum încolo câmpul data se va seta automat la fiecare IN­SERT. Altfel ar fi trebuit să îl specificăm noi.

Iată cele două fişiere:
adaugare.php



include ("autorizare.php");

include ("admin_top.php");

?>


Yüklə 3,05 Mb.

Dostları ilə paylaş:
1   ...   131   132   133   134   135   136   137   138   ...   211




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət