Kliknite tukaj, da si ogledate profil, kot ga vidijo drugi

Preverjanje registriranih uporabnikov v PHP

Delite vsebino na Facebooku
Delite vsebino na Twitterju
  V PHP bomo izdelali stran, ki preverjanja registracijo uporabnikov, katerih podatki se nahajajo v MySql bazi ter na podlagi uspešne registracije prikaže vsebino.
 
 
1
 
 

Za shranjevanje uporabniških podatkov moramo v MySql najprej ustvariti bazo in v njej tabelo.

Več o upravljanju MySql strežnika z phpMyAdmin si lahko preberete v lekciji:

Če pa še nimate nameščenega razvojnega okolja, pa si oglejte lekcijo:




V phpMyAdmin zaženite naslednji SQL stavek:

CREATE TABLE users (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` TEXT NOT NULL ,
`password` TEXT NOT NULL
) ENGINE = InnoDB;


Ustvarili smo novo tabelo, v katero smo dodali polja id ter username in password.

 
 
2
 
 

S pomočjo orodja phpMyAdmin bomo vpisali podatke o uporabnikih.

Kliknite Insert ter vnesite podatke o uporabnikih.

Za id uporabite vrednost 0. Ker smo pri kreiranju baze uporabili Autoincrement, se bo ta sama avtomatsko povečevala.

 
 
3
 
 

V polju username bo shranjeno uporabniško ime, v polje password pa geslo.

Pri vnosu gesla na levi strani izberite funkcijo SHA1, da bo vrednosti kodirana s tem algoritmom.

To storimo zaradi tega, ker shranjevanje gesel iz varnostnih razlogov v nekodirani obliki ni priporočljivo.

 
 
4
 
 

Če ste podatke uspešno vnesli, bi morali podatke videti v vaši tabeli.

 
 
 
 
 
5
 
 

Sedaj bomo oblikovali še obrazec za vnos gesla.

 
 
6
 
 

Da omogočimo shranjevanje uporabniških spremenljivk na strežiku, na vrhu dokumenta najprej kličemo funkcijo
session_start();

Nato naredimo še povezavo na bazo:
$db = mysqli_connect("localhost","root","","dev");


 
 
7
 
 

Na vrhu dokumenta bomo najprej preverjali, če so prišli podatki iz obrazca.

V kolikor to drži, se povežemo na bazo in preverimo geslo.

Zaradi varnosti smo uporabili tudi funkcijo mysqli_real_escape_string, ki iz vnosov uporabnika odstrani znake, ki bi lahko vplivali na izvajanje SQL.

if (isset($_POST['username'])) {
   
    $username = mysqli_real_escape_string($db,$_POST['username']);
    $password = sha1(mysqli_real_escape_string($db,$_POST['password']));
       
    $sql="select * from users where username='$username'";   
    $result = $db->query($sql);
   
    if ($row = $result->fetch_assoc()) {
        if ($row['password']==$password) $_SESSION['auth']=true;
    }
}


V kolikor je vnos uporabniškega imena in gesla isti, kot je shranjen v bazi, nastavimo spremenljivko $_SESSSION['auth']. Na ta način bomo sedaj vedeli, ali je uporabnik uspešno registriran.

Več o uporabi spremenljivke $_SESSSION si lahko preberete v lekciji



 
 
8
 
 

Spodaj dodamo podporo za odjavo.

if (isset($_GET['logoff'])) {
   unset($_SESSION['auth'], $auth);
}


V tem primeru odstranimo spremenljivko $_SESSSION['auth'], kar pomeni, da uporabnik ni več registriran.

 
 
9
 
 

Nato v dokumentu oblikujemo glavni obrazec, ki se zaradi if stavka prikaže samo, če spremenljivka $_SESSSION['auth'] še ni določena, kar pomeni, da uporabnik še ni registriran.

<?php
if (!isset($_SESSION['auth'])) { ?>
<form method="post" action="index.php">
<p>
  <label for="username"></label> Username:
  <input type="text" name="username" id="username" />
</p>
<p>
  <label for="password"></label> Password:
  <input type="text" name="password" id="password" />
</p><p>
  <input type="submit" name="Login" id="Login" value="Submit" />
</p>
</form>
<?php } ?>


 
 
10
 
 

Čisto na koncu dokumenta dodamo še kodo, ki se bo izpisovala samo registriranim uporabnikom.

Koda se izpiše samo v primeru, ko je uporabnik registriran oz.  $_SESSSION['auth'] obstaja.

<?php
if (isset($_SESSION['auth'])) { ?>

Logged in...
<br />
<a href="index.php?logoff=1">Log off</a>
   
<?php } ?>



 
 
11
 
 

Če sedaj odpremo obrazec in vnesemo pravilne uporabniške podatke, se bo izpisala koda za registrirane uporabnike.

Če kliknete na povezavo, ki definira spremenljivko logoff, pa se boste odjavili, kar opravi koda, definirana v 8. koraku.


Zaradi lažjega testiranja kode pa na spodnji povezavi lahko prenesete celotno kodo iz lekcije
http://zmaga.com/prenosi/login.zip

Za dodatna vprašanja ali morebitne nejasnosti pa seveda vprašajte na forumu.


 
 
Komentiraj
 
 
 
 
 
1.10.2013, 11:52
Pozdravljeni, meni ko zaženem index datoteko sicer napiše obrazec za login, vendar pred obrazcem napiše tole:
query($sql); if ($row = $result->fetch_assoc()) { if ($row['password']==$password) $_SESSION['auth']=true; } }if (isset($_GET['logoff'])) { unset($_SESSION['auth'], $auth);}?> in seveda obrazec ne dela. Morda veste kaj je narobe? Hvala in LP!
 
 
 
 
1.10.2013, 18:42
Glede na opis bi rekel, da na strežniku ni podprto izvajanje PHP skript.
 
 
 
 
16.7.2015, 14:55
Kako vemo kaj je povezava na bazo?
 
 
 
 
16.7.2015, 17:11
Kaj sprasujes, ne razumem vprasanja?
 
 
 
 
16.7.2015, 20:34
Sem že ugotovil.
 
 
 
 
19.7.2015, 18:59
Kako bi naredil, da bi tudi na drugih straneh ostal prijavljen. (na login.php se prijaviš in potem na index.php ostaneš prijavljen)
 
 
 
 
19.7.2015, 22:20
If stavek za session uporabi se na drugih straneh
 
Prijava in registracija
 
 
 
Zmaga.com ponuja brezplačno in razumljivo učenje računalniških programov, vas na enkraten način spozna z različnimi svetovnimi jeziki, s podrobno obrazloženimi recepti prikaže čare kulinarike in vam prežene strahove pred domačimi opravili.
 
 
Poleg tega lahko prebirate poučne članke, ki so namenjene širjenju naše splošne razgledanosti ter preverite svoje znanje z priljubljenim in enostavnim sistemom za preverjanje znanja. Če med vsebinami, ki se dodajajo vsak dan, ne najdete želenega znanja, je za vaša vprašanja na voljo dobro obiskan forum, kjer lahko tudi aktivno sodelujete. V primeru, da bi radi svoje praktično znanje delili z ostalimi, pa to lahko storite preko preprostega vmesnika za dodajanje vsebin. Zmagajte z znanjem z Zmaga.com!