Login systém jak na to – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Login systém jak na to – PHP – Fórum – Programujte.comLogin systém jak na to – PHP – Fórum – Programujte.com

 

Figa0
Super člen
31. 7. 2012   #1
-
0
-

Ahoj, jak správně a hlavně spolehlivě udělat login systém? Nyní to mám takhle to není moc spolehlivé:
User vyplní údaje
Vytvoří se mu session s id

Pokud zaškrt ltrvalé přihlášení do db se uloží hash a vytvoří se cookie s tímto hashem

Při vypršení session či zavření okna s eporovná cookie s hashem s db a pokud sedí, tak to logne automaticky.

Jak udělat opravdu spolehlivý login? Nebo máte někdo nějakou třídu o kterou by jste se chtěli podělit? :) Děkuji za odpovědi.

Nahlásit jako SPAM
IP: 90.177.38.–
An
~ Anonymní uživatel
19 příspěvků
31. 7. 2012   #2
-
0
-
Nahlásit jako SPAM
IP: 213.151.77.–
Yohaku0
Návštěvník
13. 8. 2012   #3
-
-1
-
Mimo téma

 Já to vždycky řeším takto:

if($_POST['submit']:
	if($_POST['username'] && $_POST['password']:
		$query=mysql_query('SELECT * FROM users WHERE username="'.$_POST['username'].'" AND password="'.$_POST['password'].'"');
		$result=mysql_fetch_array($query);
		if(empty($result['iduser'])):
			//Špatné jméno nebo heslo
		else:
			// Byl(a) jsi přihlášen.
			$_SESSION['logged']=$result['iduser'];
			print '<meta http-equiv="result" content="1; index.php">';
	else:
		// Musíte vyplnit všechny údaje
	endif;
endif;
Nahlásit jako SPAM
IP: 85.207.18.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
yetty
~ Redaktor
+5
Super člen
13. 8. 2012   #4
-
0
-

#3 Yohaku
Ou, to vypadá nebezpečně. Kromě toho, že máš zvláštní styl zápisu, který snad ani nemůže fungovat (neukončovat závorky v podmínkách, zápis á la Python (nebo spíše Pascal?), nekontrolování existence $_POST pomocí isset...), je kód náchylný k SQL injection.

Nahlásit jako SPAM
IP: 46.23.51.–
Yohaku0
Návštěvník
13. 8. 2012   #5
-
0
-

#4 yetty
V podmínkách závorky nemám, takže je ani nemůžu ukončovat. Python jsem nikdy neviděl, tak nevím... O "isset" vím, bývám ale líný to psát...  

Nahlásit jako SPAM
IP: 85.207.18.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
yetty
~ Redaktor
+5
Super člen
13. 8. 2012   #6
-
0
-

#5 Yohaku
Otevírající závorky tam máš:

if($_POST['submit']:

Alespoň u mne to vyhazuje syntax error. Správně by mělo být:

if($_POST['submit']):

Kdyby to bylo jednou, tak to chápu jako překlep, ale máš to tam dvakrát za sebou.

Také ti tam jednou chybí endif.

Mimochodem, co tě vede psát styl dvojtečka-endif? V PHP se většinou píše C stylem:

if ($a == $b) {
	echo "Je to stejne!";
} else {
	echo "Je to jine.";
}
Nahlásit jako SPAM
IP: 46.23.51.–
Lordest0
Super člen
13. 8. 2012   #7
-
0
-

ja som si vytvoril triedu, s metodami, ktore vsetko pokryvaju;

konstruktor sa stara o nastavovanie properties prip. kontroluje $_COOKIE s hashom ak existuje, s hashom v db - ked prejde a overia sa aj dalsie veci ohladom relacie (to uz je na tebe ako to nastavis) tak sa nastavi aj property s user_id, prip. este predlzi platnost cookie pri trvalych loginoch ak o nejaky cas ma expirovat. Login a logout je uz klasika.

Vstavane sessions v PHP kvoli efektivite nepouzivam.

Nahlásit jako SPAM
IP: 91.127.188.–
yetty
~ Redaktor
+5
Super člen
13. 8. 2012   #8
-
0
-

#7 Lordest

Vstavane sessions v PHP kvoli efektivite nepouzivam.

Jak je to myšlené? Co je na session neefektivní? 

Nahlásit jako SPAM
IP: 46.23.51.–
Lordest0
Super člen
13. 8. 2012   #9
-
+1
-
Zajímavé

#8 yetty
Je to z mojich skusenosti, ale samozrejme mozem sa aj mylit:

defaultny session handler v PHP pouziva pre storage normalne subory, co je u malych projektov jednoduche, ale u vacsich uz nepouzitelne (i ked samozrejme aj o databazovom pristupe sa da polemizovat, ale to uz musi byt velmi vytazene - v tom pripade treba memcached a pod.)

viem o session_set_save_handler() ale volat to pri kazdom nacitani nie je moc dobre. Aj keby sme mohli prenastavit server, tak sa stale vola session_start() a ten pracu (teraz hovorim cisto o db pristupe) znacne komplikuje - bud sa zbytocne robia zaznamy v databaze aj o anonymnych relaciach, ktore by sa mozno nikdy neprihlasili a tazko sa to cisti, alebo potom nastavaju problemy, ako overovat a kedy, prip. sa ani nevie, kedy cookie expiruje, ak sa o nej nevytvara nejaka dodatocna cookie s dalsou exp., alebo jej regeneracia pri logine, co neriesi predchadzajuce. v skratke, kopu zbytocnych pristupov k db, a veci okolo toho.

ked som si to uvedomil a vytvoril si uplne vlastny session handler, zredukoval som kod aj o 50%. princip je v tom, ze pokym sa uzivatel neprihlasi (resp. nema dane cookies), relacny system si ho vobec nevsima, zvysok som uz popisal.

samozrejme velmi zalezi na type projektu.

Nahlásit jako SPAM
IP: 91.127.188.–
Yohaku0
Návštěvník
13. 8. 2012   #10
-
-1
-
Mimo téma

#6 yetty
Jo ty myslíš tyhle závorky. Toho jsem si ani nevšim :D Dvojitý překlep :D Styl "dvojtečka, endif" používám, protože se mi prostě víc líbí... :D Je to delší, ale nu což... :D

Nahlásit jako SPAM
IP: 85.207.18.–
V těch nejtěžších chvílích se otoč za sluncem a všechny stíny padnou za tebe. - John Lenon
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý