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
" class="smajl"/>";
(obcas pouziju automaticke dokoncovani a obcas ne. Tod moje vysvetleni).
prosím o vysvětlení
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
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?
me to jde bez potizi. abych to mohl resit potrebuju znat podrobnosti…
proc kdyz to mam na webu a chci se prihlasit mi to napise zde nic neni???
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,COERCIBLE) for operation ‚=‘
Podívej se na to v phpmyadminovi a sjednoť si kódování a collation.
nemohol by niekto k tomu spravit script na zabudnute heslo.aaa zmenu uctu? dakujem
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
Ne netusim, ale mas tady na to cely navod a priklad, ktery funguje.
a stahl jsi si ten cely zip co je v poslednim dile serialu?
ne jenom jsem vytvoril soubory co si pozadoval a do nich jsem vlozil ten kod
No a máš vytvořenou v MYSQL tabulku? Zkoušel jsem se u tebe regnout/lognout a psalo to že neexistuje tabulka v mysql ;)
Zdravím,jakým způsobem by se logovaly přístupy uživatelů (cas,ip,uzivatelk,status o prihlaseni – o – failed) ??Díky
Ahoj, jdou ti registrovat uzivatele s apostrofem, to same ze se mohou i tak prihlasit…Davejte si bacha na SQL injection !
A dalo by sa urobit aby take ako protected ale aby to zobrazovalo len adminovi napr ked mam login admin?
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???
A nacitas soubor se spravne slozky a spravnym parametrem?
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/registrace/reg_zpracuj.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.
Asi sem opravdu blbec, ale kam mám tu tabulku dat??
Zdravim,moc supr tyhle stránky naučil jsem se spousta veci…Ale preci jen porad nemohu rozlousknout to přihlášení?Registraci 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????
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_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>
Pokud máš další dotazy napiš mi na e-mail black-angle-4ever@seznam.cz ![]()
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($_POST[‚jmeno‘])){
require_once ‚pripojeni.php‘;
$name = $_POST[‚jmeno‘];
$pass = md5($_POST[‚heslo‘]);
$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_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‘];
$bl=„administrace.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(); ?> A vždy při přihlášení
to napíše, Zde nic není, opravdu nevím proč, prosím poraď.:-D
**Tlustě**
*Kurzíva*
"Odkaz":http://neco.cz nebo http://neco.cz (i www.neco.cz)
/---code php
php kód
\---