Verjetno veste kaj je baza. To je neka skupina tabel, ki vsebujejo določene podatke. Ko smo nameščali xampp(strežnik) smo namestili tudi mysql. Ta vsebuje baze.
Odprimo stran localhost/phpmyadmin ter se prijavimo. Pristali smo v administratorski plošči vseh baz. Na levi strani vidimo 5 baz, ki so se ustvarile ob namestitvi. Mi bomo ustvarili novo bazo. V polje Ustvari novo bazo vpišite mojaPrvaBaza ter kliknite Ustvari.
|
|||||
|
|||||
Odpre se nova stran. Sedaj moramo v tej bazi ustvariti neko tabelo. V polje Ime vpišimo naprimer mojaPrvaTabela. V naslednjem polju pa vpišimo število kolon, ki jih želimo imeti. Vpišimo naprimer 3 ter kliknimo Izvedi.
|
|||||
|
|||||
V to tabelo bomo vpisovali uporabnike, ki se bodo prijavljali na našo stran. Odpre se stran v katero moramo vpisati podatke o poljih. Izpolnite tako kot jaz.
Prva kolona ima ime id in vsebuje zaporedno številko. Nastavimo jo kot primarni indeks (PRIMARY_KEY) in nastavimo auto_increment (številka se bo samodejno povečala ob novem vnosu). Naslednji stolpec vsebuje uporabniško ime, ki je tipa VARCHAR (besedilo) in ima omejitev 20 znakov. Zadnji stolpec vsebuje šifrirano geslo (več o tem kasneje). Omejitev znakov nastavimo na 45. Vsi stolpci imajo tudi vrednost not_null, kar pomeni, da so obvezni in ne smejo biti prazni. |
|||||
|
|||||
Kliknite Shrani. Tabela je ustvarjena in prikazana je struktura tabele. Sedaj je na vrsti php, ki vsebuje kar nekaj ukazov za delo z mysql bazami. Najprej je na vrsti ukaz mysql_connect s katerim se povežemo na bazo.
<?php mysql_connect('localhost', 'root', 'geslo') OR die('Ne morem se povezati na server!'); ?> S tem smo se povezali na našo bazo. Pri tretjem argumentu moramo seveda ustrezno vpisati naše geslo, ki smo ga izbrali pri postavitvi serverja, včasih pa je potrebno spremeniti tudi prvi argument, ki pove, naslove mysql strežnika, na katerega se povezujemo. Sedaj preizkusite to datoteko. Če se vam ne izpiše nič, je uspelo. Če vam izpiše napako, preverite nastavitve (localhost, root in geslo). |
|||||
|
|
|||||
Z naslednjim ukazom bomo izbrali bazo.
<?php mysql_connect('localhost', 'root', 'geslo') OR die('Ne morem se povezati na server!'); mysql_select_db('mojaPrvaBaza') OR die('Ne morem izbrati baze!'); ?> Izbrali smo bazo, ki smo jo prej ustvarili. |
|||||
|
|||||
Sedaj je na vrsti ukaz mysql_query s katerim izvedemo query - poizvedbo.
<?php mysql_connect('localhost', 'root', 'geslo') OR die('Ne morem se povezati na server!'); mysql_select_db('mojaPrvaBaza') OR die('Ne morem izbrati baze!'); mysql_query("INSERT INTO mojaPrvaTabela(username, password) VALUES ('kljuka', MD5('geslo'));") OR die('Ne morem vstaviti vrstice!'); ?> Z tem query-jem v tabelo vstavimo vrstico. V polje id ne bomo vpisali nič, ker se bo samodejno (auto_increment), v polje username vnesemo kljuka v polje geslo pa bomo vnesli besedo geslo. Kot sem prej omenil, bomo v bazi hranili kriptirano geslo. Če bi torej kdo prišel do baze, zaradi kriptacije ne bi videl pravega gesla. Funkcija md5 zakriptira geslo, tako da ga ni mogoče veš dešifrirati. V bazo se bo torej vnesel niz: ae404a1ecbcdc8e96ae4457790025f50 to je s funkcijo md5 zakodirana beseda geslo. Vedno ko v tabelo vpisujete gesla uporabite md5 ali sha1 funkcijo (lahko tudi katero drugo kriptacijo). To je enosmerno kodiranje, kar pomeni, da mi niz znakov zakodiramo, ne moremo pa ga odkodirati. Če sedaj gremo nazaj v phpmyadmin in gremo do naše tabele, vidimo vrstico, ki smo jo vnesli. |
|||||
|
|||||
Ustvarimo html stran, v kateri sta dva polja in potrdilni gumb. V prvo polje bomo vpisali uporabniško ime, v drugo pa geslo. Spodaj naredimo gumb, kjer se bomo prijavili.
Kako ustvariti obrazec za prijavo v NVU ? Odprite NVU. Kliknite zgoraj na na gumb obrazec. Ime obrazca: prijava URI dejanja: prijava.php Metoda: POST - OK Napišemo Uporabniško ime: Obrazec/Polje obrazca Ime polja: username - OK Postavimo se eno vrstico nižje in vpišemo Geslo: Obrazec/Polje obrazca Vrsta polja: Geslo Ime polja: password - OK Nova vrstica Obrazec/Polje obrazca Vrsta polja: Potrditveni gumb Ime polja: Prijava Vrednost polja: Prijava - OK |
|||||
|
|||||
Sedaj ustvarimo datoteko prijava.php
<?php mysql_connect('localhost', 'root', 'geslo') OR die('Ne morem se povezati na server!'); mysql_select_db('mojaPrvaBaza') OR die('Ne morem izbrati baze!'); $username = mysql_real_escape_string($_POST['username']); $geslo = mysql_real_escape_string($_POST['password']); $sql = mysql_query("SELECT * FROM mojaPrvaTabela WHERE username = '$username' AND password = MD5('$geslo');"); if (mysql_num_rows($sql) > 0) { echo 'Uspešna prijava'; }else { echo 'Napačna prijava!'; } ?> Začetek kode vam je jasen (prijava na strežnik in izbira baze). V naslednjih dveh vrsticah pa uporabniško ime in geslo, ki smo ga preko POST dobili iz obrazca, vnesemo v spremenljivki $username in $geslo. S funkcijo mysql_real_escape_string odstranimo posebne znake, ki bi jih nepridipravi lahko uporabili in uporabili zlonamerno kodo. Na vrsti je poizvedba. Ta izbere iz tabele vse vrstice, ki imajo uporabniško ime enako kot tisto vpisano in geslo enako vpisanemu. Stavek if s funkcijo mysql_num_rows (le-ta nam vrne število vrstic, ki jih je poizvedba našla) preveri, ali je rezultat vrnil več kot 0 vrstic (to pomeni, da se vpisana uporabniško ime in geslo ujemata z neko vrstico v bazi). |
|||||
|
|||||
Sedaj lahko naredimo še registracijo. Naredimo novo html datoteko in enak obrazec kot prej. Spremenimo URI dejanja, dodamo pa še eno polje za potrditev gesla. Vse skupaj shranimo kot registracija.html
|
|||||
|
|||||
V datoteko registracija.php pa vpišemo
<?php mysql_connect('localhost', 'root', 'geslo') OR die('Ne morem se povezati na server!'); mysql_select_db('mojaPrvaBaza') OR die('Ne morem izbrati baze!'); $username = $_POST['username']; $geslo = $_POST['password']; $geslo2 = $_POST['password2']; if ($geslo != $geslo2) { die ('Vpisana gesla nista enaka'); } $sql = mysql_query("INSERT INTO mojaPrvaTabela(username, password) VALUES ('$username', MD5('$geslo'));") OR die('Registracija ni bila uspešna!'); echo 'Registracija je bila uspešna!'; ?> Povezava na bazo. V spremenljivke zapišemo podatke. Nato preverimo, če sta vpisana gesla enaka. Sledi poizvedba, s katero vpišemo podatke v tabelo. |
|||||
|
|||||
Nadgradimo našo registracijo še s preverjanjem uporabniškega imena. Takoj za preverjanjem gesla dodamo še:
if (mysql_num_rows(mysql_query("SELECT * FROM mojaPrvaTabela WHERE username='$username';")) > 0) { die ('Uporabniško ime že obstaja!'); } Tudi ta if stavek uporabi funkcijo mysql_num_rows in poizvedbo, ki pogleda, ali uporabinško ime že obstaja v bazi. |
|||||
|
|||||
Sedaj lahko dodamo še nekaj novega. Dodajmo uporabnikovo vrsto (administrator, navadni uporabnik). Gremo na phpmyadmin in se postavimo v strukturo naše tabele. Kliknemo na Izvedi, da dodamo nov stolpec na konec tabele.
|
|||||
|
|||||
Izpolnimo tako kot jaz ter kliknemo Shrani.
V ta stolpec bomo vpisali le število 0 ali število 1. 0 bo pomenilo navaden uporabnik, 1 pa administrator - uporabnik z nekimi posebnimi pravicami. V stolpec Privzeto vpišite število 0. Sam sem to na sliki žal pozabil ... :( Vrednost, ki jo vpišete v Privzeto, bo samodejno uporabljena pri vstavljanju nove vrstice (privzeto je torej število 0 - navaden uporabnik). |
|||||
|
|||||
Sedaj spremenimo datoteko prijava.php. Vrstico, kjer se izpiše, da je bila prijava uspešna, spremenimo v:
echo 'Uspešno ste se prijavili kot '; switch (mysql_result(mysql_query("SELECT vrsta FROM mojaPrvaTabela WHERE username = '$username';"), 0)) { case 0: echo "navaden uporabnik."; break; case 1: echo "administrator."; break; default: } Najprej izpišemo, da je bila prijava uspešna. Nato s poizvedbo pogledamo, katere vrste je uporabnik, in na koncu to izpišemo. |
|||||
|
|||||
Ste že naveličani? Ne. Sedaj bomo vse skupaj zelo izboljšali.
Naredimo osnovno stran ter jo shranimo s končnico PHP (!). Pri prijavi ter registraciji naredimo povezavo na prijava.php ter registracija.php. Stran si oblikujte po svoje. |
|||||
|
|||||
V prijava.php na začetku dodamo
session_start(); Pri prijavi pa $_SESSION['prijavljen'] = true; Ko se uspešno prijavimo, se v sejo to zapiše. |
|||||
|
|||||
Na začetku dodamo še
if (isset($_GET['odjava'])) { unset($_SESSION['prijavljen']); die ("Uspešno ste se odjavili!"); } if ($_SESSION['prijavljen'] == true) { die ("Ste že prijavljeni!"); } Datoteko prijava.php bomo hkrati uporabili tudi za odjavo. Če se bo uporabnik želel odjaviti, bo odprl (ali kliknil) stran prijava.php?odjava PHP preveri, ali se želimo odjaviti, in zbriše podatek v seji. Drugi if stavek preveri, ali smo prijavljeni, in to izpiše. |
|||||
|
|||||
Sedaj pride na vrsto težji del, zato si poglejte trenutne rezultate, da ne pride do zapletov.
|
|||||
|
|||||
Za prijavo in vse skupaj potrebujemo 5 datotek ?! Absolutno preveč. Združili jih bomo. prijava.html z prijava.php in registracija.html z registracijo.php.
Kako? Odpremo prijava.php Za začetkom dodamo zaključno oznako ?> Nato prilepimo HTML kodo iz prijava.html Zapišemo začetno oznako za PHP <?php Spodaj pa zapišemo if (isset($_POST['Prijava'])) { Čisto na koncu pa še } S tistim if stavkom preverimo ali smo potrdili obrazec oz. poslali podatke samemu sebi. |
|||||
|
|||||
Enako storimo še z registracija.php. Tukaj dodamo obrazec čisto na začetek.
|
|||||
|
|||||
prijava.html ter registracija.html lahko sedaj zbrišete. Izbrišite vse uporabnike iz tabele. in preizkusite ali deluje registracija ter prijava.
Nato gremo urejat index.php oz. osnovno stran. Odpremo jo v NVU. Prvo stran uredite po svoje. V njo vključite spodnjo kodo, ki bo uporabniko povedala, ali je prijavljen, ali ne: <?php session_start(); if ($_SESSION['prijavljen']==true) { echo "TRENUTNO STE PRIJAVLJENI!"; }else { echo "TRENUTNO NISTE PRIJAVLJENI!"; } ?> Dodati pa morate tudi povezavo do prijave oz. odjave: <?php if ($_SESSION['prijavljen']==true) { echo '<a href="prijava.php?odjava">ODJAVA</a>'; }else { echo '<a href="prijava.php">PRIJAVA </a>'; } ?> |
|||||
|
|||||
To je to :)
|
|||||