Tento článek doposud nikdo nehodnotil

Přihlašování uživatelů

V minulém článku jsme si ukázali, jak naprogramovat registraci uživatelů. Tentokrát se podíváme na přihlašování.

Přihlašovací formulář

Nejdříve ze všeho si sestavíme formulář pro přihlášení.


<form action="prihlas.php" method="post"> 
  <table border="0">  
    <tr>    
      <td align="right">Nick:</td>    
      <td><input type="text" name="nick" size="20" /></td>  
    </tr>    
    <td align="right">Heslo:</td>
    <td><input type="password" name="heslo" size="20" /></td>  
    </tr>  
    <tr>    
      <td colspan="2" align="center">      
        <input type="submit" value="Přihlásit se" />  
      </td>  
    </tr>  
  </table>
</form>

Je to obyčejný formulář, který po stisknutí tlačítka pošle data z polí nick a heslo. Data se odešlou metodou POST (nevidíme hodnoty v adresním řádku jako u metody GET) do souboru prihlas.php

Zpracování formuláře


Soubor: prihlas.php

<?php
session_start
();      // zapnutí session - bez tohoto řádku by bylo přihlašvání nefunkční
require_once("db.php");  // spojení s databází

if($_POST["nick"]){  // pokud přijdou data

// zpracování proměných, ošetření nebezpečných znaků
  
$nick htmlspecialchars(addslashes($_POST["nick"]));
  
$heslo htmlspecialchars(addslashes($_POST["heslo"]);
  
$heslo sha1($heslo);  // hash hesla
  
$ip $_SERVER["REMOTE_ADDR"];  // ip uživatele
  
  // načtení údajů z databáze 
    
$query mysql_query("SELECT * FROM uzivatele WHERE nick='$nick'") or die(mysql_error());
  if(
mysql_num_rows($query)>0){
     
$b=mysql_fetch_array($query);
        
        
// kontrola hesla
        
if($b["heslo"]==$heslo){
          
          
// pokud se hesla shodují přihlásíme uživatele       
        
mysql_query("UPDATE uzivatele SET ip='$ip' WHERE id='$b[id]'");   // aktualizace uživatelovy ip
        // načtení údajů o uživateli do SESSION proměnných => přihlášení
        
$_SESSION["usr_hodnost"] = $b["hodnost"];  // hodnost uživatele
        
$_SESSION["usr_nick"] = $b["nick"];        // nick
        
$_SESSION["usr_id"] = $b["id"];            // id
 
      
}
  }  
}
// přespěrování zpět na úvodní stránku
$kam $_SERVER["HTTP_REFERER"];
header("Location:$kam");
?>

Hned na 1. řádku scriptu se vyskytuje velmi důležitý příkaz session_start();. Tento příkaz zapíná objekjt session. Ten si dokáže totiž uchovat v paměti údaje o uživateli až do doby, než uživatel zavře okno prohlířeče. Bez této funkce by přihlašování nefungovalo.

Jako další krok následuje kontrola, jestli přišla data metodou POST. Pokud ano, načtou se údaje o uživateli kterého budeme přihlašovat. Zkontroluje se heslo uložené v databázi s heslem, které zadal uživatel a pokud obě sedí uložíme informace získané z db do speciálních proměnných $_SESSION["usr_id"], $_SESSION["usr_nick"] a $_SESSION["usr_hodnost"].

Tyto proměné mají oproti normálním tu výhodu, že i po přesměrování mají pořád stejnou hodnotu. Jejich hodnota se vymaže při odhlášení nebo zavření okna prohlížeče.

Tím bysme měli uživatele přihlášeního. Jestli se přihlášení opravdu povedlo si ověříme přidáním nějakého textu, který vidí pouze přihlášený uživatel na uvítací stránku.


<?php
session_start
();

if(
$_SESSION["usr_id"]>0){
  echo
' Vítej'.$_SESSION["usr_nick"].' - 
<a href="logout.php">Odhlásit</a>'
;
}
?>

Pokud je uživatel opravdu přihlášen, uvidí na hlavní stránce text s uvítáním a odkazem pro odhlášení.

Odhlášení

Odhlášení uživatele je velmi snadné. Příkaz session_unset(); vymaže všechna data z objektu session.

Soubor: logout.php

<?php
session_start
();
session_unset();
$kam $_SERVER["HTTP_REFERER"];
header("Location:$kam");
?>

Spojení s databází

Úplně nakonec musíme nastavit přihlašovací údaje do databáze.

Soubor: db.php

<?php
$server 
"";      // adresa MySQL serveru
$database "";    // přihlašovací jméno do databáze
$heslo "";       // heslo
$dbname "";      // název použité databáze
$link mysql_connect("$server""$database""$heslo") or die ("Nepovedlo se spojit s databází");
$db mysql_select_db("$dbname"$link) or die("Nepovedlo se otevřít databázi");
?>

Tím bysme měli přihlašování kompletní. Příště se podíváme na to, jak si vytvořit administraci uživatelů.

Statistiky
Autor  Autor: .:|IK|:.
Další články od tohoto autora >>>
  Přidáno: 2008-12-27 06:46:50   Přečteno: 961x
Hodnocení  Hodnocení: 0/10
Hodnotit článek mohou pouze přihlášení uživatelé
  Celkem hodnotilo 0 lidí
Komentářů  Komentářů: 1144 Číst/napsat komentář
Související články:

Číst všechny komentáře >>> Komentáře (posledních 10)
Odkaz na tento příspěvek  Odkaz na tento příspěvek   Citovat  Citovat      yjYwWUPJoqaJC   2010-09-05 03:40:40

over the counter viagra >:P
Odkaz na tento příspěvek  Odkaz na tento příspěvek   Citovat  Citovat      coVXPNZOIYKcOYog   03.09.2010 12:38:53

cialis 796
Odkaz na tento příspěvek  Odkaz na tento příspěvek   Citovat  Citovat      HrEimrdrh   03.09.2010 12:17:50

cialis >:-P
Odkaz na tento příspěvek  Odkaz na tento příspěvek   Citovat  Citovat      xLCqfQnoP   03.09.2010 12:17:07

slots wyuh infinity auto insurance >:-PPP car insurance quotes 4969
Odkaz na tento příspěvek  Odkaz na tento příspěvek   Citovat  Citovat      xhsZdXBo   03.09.2010 06:39:54

cheap home insurance 1628 auto insurance quotes 238024 auto insurance 8-O
Odkaz na tento příspěvek  Odkaz na tento příspěvek   Citovat  Citovat      EvghXMGDISh   03.09.2010 06:30:54

generic propecia eib levitra hwrdye Valium %] cialis 084
Odkaz na tento příspěvek  Odkaz na tento příspěvek   Citovat  Citovat      tRhywrLllo   03.09.2010 05:18:21

slots 630 car insurance 9093 cheap california auto insurance %-P
Odkaz na tento příspěvek  Odkaz na tento příspěvek   Citovat  Citovat      ImtXsOVHRCDBygbN   03.09.2010 04:53:42

propecia zzesi Valium xetmf Prednisone 9290 phentermine online 852300 cialis sales >:-P
Odkaz na tento příspěvek  Odkaz na tento příspěvek   Citovat  Citovat      HPnWVety   03.09.2010 02:35:49

phentermine ayycbz phentermine 08747 levitra shemale yasmin lee >:O overnight phentermine 4706
Odkaz na tento příspěvek  Odkaz na tento příspěvek   Citovat  Citovat      ihKHGJPQfAXNYPd   03.09.2010 01:45:54

CAzZSY <a href="http://ypnplxltzsua.com/">ypnplxltzsua</a>, cbtkldpgfmdl, [link=http://nxhtpufcttgi.com/]nxhtpufcttgi[/link], http://fygtbefoouyq.com/