Registrace: Přihlášení uživatelů

Minule jsme uživatele registrovali, nyní si je přihlásíme. K tomu využijeme sessions.

Začneme pěkně z ostra, většinu znáte z minula. Chceme-li od uživatele dostat údaje, zobrazíme mu formulář. Jednoduchý formulář pro přihlášení může vypadat náspedovně:
login.php

<h1>Login</h1>
<form action="login_zpracuj.php" method="post">
  <input type="hidden" name="sent" value=""/>
    <input type="text" name="jmeno" maxlength="32"/> <strong>Už. jméno</strong> <br/>
    <input type="password" name="heslo" maxlength="32"/> <strong>Heslo</strong> <br/>
  <input type="submit" name="send" value="Přihlaš"/>
</form>

O přihlášení se nám postará následující soubor:
login_zpracuj.php

<?php
ob_start();
/*
* Tetno soubor zjisti zda se takovy uzivatel s takovym heslem v databazi nachazi.
* Pokud ano, do sessions o tom ulozime informaci.
* Jinak se samozrejme presmerujeme zpet a dame uzivateli vedet, ze zadal spatne udaje
*/
session_start(); // Budeme pracovat se session, musíme je nastartovat.
if(isset($_POST['jmeno'])){
  require_once 'db.php';
  $name = $_POST['jmeno'];
  $pass = md5($_POST['heslo']);
    $query = mysql_query("SELECT * FROM `uzivatele` WHERE `jmeno` = '$name' and `heslo` = '$pass'") or die (mysql_error());
    // Vybereme uživatele se zadaným jménem a heslem
      $Vysledek = mysql_fetch_array($query);
        if($Vysledek['jmeno']){ // pokud tato proměnná obsahuje data, bylo zadané správné jméno a heslo
          // Do sessions si uložíme pár informací o přihlášeném
          $_SESSION['prihlasen'] = 1;
          $_SESSION['login'] = $Vysledek['jmeno'];
          $_SESSION['UserId'] = $Vysledek['id'];
          $_SESSION['UserWeb'] = $Vysledek['web'];
          $_SESSION['UserMail'] = $Vysledek['mail'];
          $bl="index.php";
          header("location: $bl"); // přesměrujeme na index
          exit;
        }else{
          $bl="index.php?Alert=6";
          header("location: $bl"); // špatně zadané údaje
          exit;
          // echo "Zadal jsi špatné údaje";
        }
    mysql_free_result($query);
}else{
  echo "Zde nic není.";
}
ob_end_flush();
?>

Do sessions jsme si uložili informace o přihlášeném uživateli, dokud se uživatel neodhlásí nebo nezavře okno prohlížeče, tyto informace budou dostupné.
Pokud byste chtěli uživatele přihlásit jen třeba na 30 minut, není problém si do sessions uložit aktuální čas a ten poté při každé akci kontrolovat jestli není starší 30minut a přidávat další. V případě času staršího 30minut sessions zničit.

Další použité funkce:

Jak celou registraci zasadit do webu vám ukážu v příštím článku, kde bude i možnost stažení.

Ukázka: Registrace v PHP – ukázka

Navazující články


<Starší | tento článek | Novější>

Napsáno: 13. 8. 2006, 00:33 | Přečteno: 17215x | Kategorie: PHP School | Napsal: peCan.cz |
Komentáře: 42
else{
echo "Zde nic není<img src="obr/smajly/6.gif" alt=";-)" class="smajl"/>";
}

Prase error. Začni ty zdrojáky fakt kontrolovat. :-D

A udržuj styl! MySQL_Query() a mysql_fetch_array() vedle sebe není nejlepší styl ;-)
Odpověď | 2006-08-13 01:36:18
PS: "Další použité funkce a jazykové konstrukce", ať to $_SESSION aspoň trochu zapadne a nevím, co má znamenat řádek $Vysledek['jmeno']; :-)

A už dost kritiky, nebo mě tu zlynčují a já budu donucen psát PHP návody taky. :-D
Odpověď | 2006-08-13 01:38:57
.:. gwh | www
Proč nepoužíváš labely?
Odpověď | 2006-08-13 01:49:51
hele to se me zacina libit co takhle psat takove clanky porad!!!Je to super diky moc..:-D
Odpověď | 2006-08-13 04:58:15
.:. peCan | www | mail
The Zero: Ten parse error vznikl tak, ze se mi prevedl smajlik na obrazek, oddelam to, nevsiml jsem si toho.
Ten zdrojak jsem mel dokonce napsany, takze jsem to kontroloval a az na tu drobnost se smajlikem to funguje bezvadne;-)

S tim stylem jsem to nepochopil, jako ze jednou to mam velkym a jednou malym? Jestli jo tak to je posledni vec co me vadi:-) (obcas pouziju automaticke dokoncovani a obcas ne. Tod moje vysvetleni).

V promenne $Vysledek['jmeno']; je jmeno uzivatele pokud teda existuje. Pokud ne, presmeruje se na index s hlaskou.

Jinak $_SESSION neni ani jazykova konstukce, ale pokud chces byt tak na slovo presny - je to superglobalni pole, stejne jako treba GET a POST.

gwh: V minulem clanku jsem daval odkaz na semantiku formularu, kde jsou i labely. Tady jde spis o php a funkcni reseni, nez o (x)html. Jinak pro ostatni - dalsi pekny clanek jsem nasel na odkaz
Odpověď | 2006-08-13 10:16:21
.:. Onecar | www | mail
Rád bych se optal na
mysql_free_result($query);

konkr. k čemu přesně je, podle dokumentace dělá něco s pamětí, snad vyprázdní paměť DB či co :-D prosím o vysvětlení ;-)
Odpověď | 2006-08-13 11:07:05
peCan: jo, superglobální proměnná, ale... no to neřeš.
Co dělá $Vysledek['jmeno'], to vím, jen nechápu řádek, kde stojí tato proměnná sama o sobě (tj. před tím ifem)
Odpověď | 2006-08-13 11:51:15
.:. peCan | www | mail
Onecar: Da se rict, uvolneni systemovych prostredku...
Odpověď | 2006-08-13 11:51:29
.:. error414
chtel bych te pochvalit ze konecne ucis lidi jak pouzivat v sql dotazu sparvneji uvozovky ``.
Odpověď | 2006-08-13 12:44:27
.:. peCan | www | mail
error414: Hmm dík:-D Pochvala od mistra potesi.
Odpověď | 2006-08-13 12:46:13
.:. Králik | www
Takže konečně jsem seodstal k registraci a loginu. Jediný článmek, který znám je u tebe a já si ho přečetl amusím říct, že mi to dost pomohlo. Pochvala potěší a proto píšu tenhle coment. Dík ;)
Odpověď | 2007-04-16 15:40:12

Omlouvám se že ruším vaši diskuzi ale zřejmě bych potřeboval poradit. Stáhnul jsem si celý ten příklad. Rozjel Apache, MySQL. Registrace funguje bez problemu (údaje uloží do databaze) ale kdyz se chci prihlasit tak nelze (Zadal jsi nesprávné údaje !) Kde dělám chybu ? Databaze : tutorial Tabulka : uzivatele … prosím o radu. Děkuji

Odpověď | 2007-06-11 20:42:21

Mám taký problém. Registrácia mi ide v pohode ale keď dám logil chvíľu to pracuje a nič. Užívateľ nie je prihlásený. Kde som mohol spraviť chybu?

Odpověď | 2007-06-22 14:31:14
.:. Kiko

taky mi nejde prihlasit

Odpověď | 2007-07-01 12:27:09
.:. peCan | www | mail

me to jde bez potizi. abych to mohl resit potrebuju znat podrobnosti…

Odpověď | 2007-07-01 13:52:17

proc kdyz to mam na webu a chci se prihlasit mi to napise zde nic neni???

Odpověď | 2007-08-30 10:01:13
.:. ivan

regnu se vše v poho ale když mám nick s háčkem tak mi to pak píše

v db jsem Illegal mix of collations (cp1250_czech­_cs,IMPLICIT) and (latin1_swedish_ci,CO­ERCIBLE) for operation ‚=‘

Odpověď | 2007-09-28 19:47:50

Podívej se na to v phpmyadminovi a sjednoť si kódování a collation.

Odpověď | 2007-09-28 21:26:07
.:. gfsadfg

nemohol by niekto k tomu spravit script na zabudnute heslo.aaa zmenu uctu? dakujem

Odpověď | 2007-11-21 22:36:09
.:. Stanislav | www

Dekuji je to super

Odpověď | 2008-02-07 01:37:05
.:. Rian | mail

Pls v cem delam chybu? http://www.rian.ic.cz/test/reg.php -tohle jde v poho http://www.rian.ic.cz/test/index.php -to uz blbne

Odpověď | 2008-02-13 19:08:10 | Příspěvek upraven: 2008-02-13 19:09:21

Ne netusim, ale mas tady na to cely navod a priklad, ktery funguje.

Odpověď | 2008-02-13 20:42:37
.:. Rian | mail

Vsak ja to skopcil.. a nic, divne…

Odpověď | 2008-02-13 21:50:56

a stahl jsi si ten cely zip co je v poslednim dile serialu?

2008-02-13 21:53:37
.:. Rian | mail

ne jenom jsem vytvoril soubory co si pozadoval a do nich jsem vlozil ten kod

2008-02-13 22:29:45
.:. Shader | www | mail

No a máš vytvořenou v MYSQL tabulku? Zkoušel jsem se u tebe regnout/lognout a psalo to že neexistuje tabulka v mysql ;)

Odpověď | 2009-01-08 22:55:43
.:. Lukáš

Zdravím,jakým způsobem by se logovaly přístupy uživatelů (cas,ip,uziva­telk,status o prihlaseni – o – failed) ??Díky

Odpověď | 2008-04-20 18:31:34
.:. Rada | mail

Ahoj, jdou ti registrovat uzivatele s apostrofem, to same ze se mohou i tak prihlasit…Davejte si bacha na SQL injection !

Odpověď | 2008-05-15 21:22:34

nevím co mám dělat poradí mi někdo?:-(

Odpověď | 2008-10-19 16:34:40
.:. Weno | mail

Mne to ide pohode

Odpověď | 2009-02-04 18:29:21

A dalo by sa urobit aby take ako protected ale aby to zobrazovalo len adminovi napr ked mam login admin?

Odpověď | 2009-03-15 19:54:53
.:. Fred | mail

sewas.. neviem preco ale blbne mi php skript v indexe ktory nacitava stranky do stredu.. na wasom webe to ide v pohode, ale na mojom localhoste, mi stale vyhadzuje ze subor nebol najdeny… neviete co v tom moze byt???

Odpověď | 2009-04-01 10:42:08

A nacitas soubor se spravne slozky a spravnym parametrem?

Odpověď | 2009-04-01 11:23:19
.:. Deki | www | mail

Zdravím potřeboval bych pomoct, jakmile kliknu u registarce na registrovat ukáže mi to toto

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /3w/xf.cz/m/mab-lordslife/regis­trace/reg_zpra­cuj.php on line 13 Table ‚mablordslife­.uzivatele‘ doesn't exist

téměř to samé m ito píše u loginu, ale to mi napíše pouze

Table ‚mablordslife­.uzivatele‘ doesn't exist

prosím kdo můžete tak poraďte.

Odpověď | 2009-05-31 01:36:36

Nevytvoril jsi SQL tabulku.

Odpověď | 2009-05-31 10:30:04
.:. Deki | www | mail

Asi sem opravdu blbec, ale kam mám tu tabulku dat??

Odpověď | 2009-05-31 11:45:06
.:. Deki | www | mail

Zupa, vyřešeno. Sem hrozný pako, a dík za radu.

2009-05-31 11:48:44
.:. Deki | www | mail

A pls ještě, kam se ukládaji vytvořený účty?

Odpověď | 2009-06-01 20:35:08
.:. Mira

Zdravim,moc supr tyhle stránky naučil jsem se spousta veci…Ale preci jen porad nemohu rozlousknout to přihlášení?Re­gistraci zvladam v poho,jiz uz podle sebe…Ale přihlašení pořád nic,zkoušel sem to všeljak stahnul zdrojaky ze stranek ci cely serial co je ke stazeni,ale funguje mi to jen kdyz nic neupravim a vlozim na server presne ten zdrojak,ale kdyz to zkusim nejak prekopat podle sebe tak nic…moc prosim o pomoc jak vlozit do sveho webu prihlaseni????

Odpověď | 2009-07-07 20:16:28
.:. Aeon | www

Deki = Vytvořené ůčty se ukládají do mysql tabulky kterou sis vytvořil

Mira = Stačí když si na webu řekneš kam to chceš dát a vložíš html kod:

<h2>Login</h2> <form action=„login_zpra­cuj.php“ method=„post“>
<input type=„hidden“ name=„sent“ value=""/>
<input type=„text“ name=„jmeno“ maxlength=„32“/> <strong>Už. jméno</strong> <br/>
<input type=„password“ name=„heslo“ maxlength=„32“/> <strong>Heslo</stron­g> <br/>
<input type=„submit“ name=„send“ value=„Přihlaš“/> </form>

Pokud máš další dotazy napiš mi na e-mail black-angle-4ever@seznam.cz ;-)

Odpověď | 2009-07-15 12:10:28
.:. jackm

Poraď mi prosím, mám všechno dobře(jen upravenoudatabazi na prihlaseni a tam jen jmeno heslo). Mám tam jmeno i heslo v MD5. Vše jsem si upravil, kód si projiždím a chyba tam není. <?php ob_start(); session_start(); // Budeme pracovat se session, musíme je nastartovat. if(isset($_POS­T[‚jmeno‘])){
require_once ‚pripojeni.php‘;
$name = $_POST[‚jmeno‘];
$pass = md5($_POST[‚hes­lo‘]);
$query = mysql_query(„SELECT * FROM prihlaseni WHERE jmeno = ‚$name‘ and heslo = ‚$pass‘“) or die (mysql_error());
// Vybereme uživatele se zadaným jménem a heslem
$Vysledek = mysql_fetch_a­rray($query);
if($Vysledek[‚jme­no‘]){ // pokud tato proměnná obsahuje data, bylo zadané správné jméno a heslo
// Do sessions si uložíme pár informací o přihlášeném
$_SESSION[‚prih­lasen‘] = 1;
$_SESSION[‚login‘] = $Vysledek[‚jmeno‘];
$bl=„administra­ce.php“;
header(„location: $bl“); // přesměrujeme na index
exit;
}else{
$bl=„index.php?A­lert=6“;
header(„location: $bl“); // špatně zadané údaje
exit;
// echo „Zadal jsi špatné údaje“;
}
mysql_free_re­sult($query); }else{
echo „Zde nic není.“; } ob_end_flush(); ?> A vždy při přihlášení to napíše, Zde nic není, opravdu nevím proč, prosím poraď.:-D

Odpověď | 2010-08-11 00:52:23
.:. jackm

tam u toho select from jsou '' jen je komentář odebral.

Odpověď | 2010-08-11 00:53:12
Přidej komentář
Jméno
Web
Mail
Kontrola Zadejte číslo pět
Text

:-)
:-D
:-(
|-/
:-[]
;-)
8-|
8-o
Zde formátuje Texy! (syntaxe)
  • Příklad formátování příspěvku:

    **Tlustě**
    *Kurzíva*
    "Odkaz":http://neco.cz nebo http://neco.cz (i www.neco.cz)
    /---code php
    php kód
    \---

  • Pro odeslání zprávy můžete použít klávesovou zkratku Alt+S. (Podporují jen některé prohlížeče)
  • HTML znaky budou převedeny na entity.
  • Vyjadřujte se tu jako doma, ať víme jak to u Vás vypadá.
  • Odkazy začínající http:// budou automaticky převedeny na odkazy , nepoužívejte však v jednom příspěvku více jak 3 - to dělají jen spam roboti:-)
Víte proč nemají spermie blinkry? ??? Protože by to pak v piči vypadalo jako v Las Vegas.
Petr Graubner | ICQ- 264912843, Jabber - pecan27@njs.netlab.cz | RSS | Šlape na miniRS | Styl CoolStyle | Zpracováno za: 0.342s | Počet SQL dotazů ve fóru: 1 | Admin