Diskuze: mysql databáze - zobrazování, že je uživatel přihlášen

PHP PHP mysql databáze - zobrazování, že je uživatel přihlášen American English version English version

Avatar
albertpatera
Redaktor
Avatar
albertpatera:

ahoj...
nemůžu přijít na to, jak se dá udělat aby, když mám na webu databázi s přihlašováním, tak jak udělám...aby mě to přesměrovalo na index.php...ale aby se mi tam místo přihlašovacího formuláře zobrazoval nick uživatele, počet článků atd..prostě že je ten uživatel přihlášenej..nevíte někdo, jak na to?? díky

 
Odpovědět 3.1.2013 17:04
Avatar
Michael Olšavský:

Použij například $_SESSION : http://php.net/….session.php

 
Nahoru Odpovědět 3.1.2013 17:34
Avatar
Michael Olšavský:

Použití: po přihlášení ulož jméno uživatele do $_SESSION['jmeno'], pak přesměruj na index.php a pomocí podmínky skryj formulář a vypiš tam to jméno (echo $_SESSION['jmeno'])

 
Nahoru Odpovědět 3.1.2013 17:37
Avatar
Odpovídá na albertpatera
david.valenta96:

Ahoj. v databázi máš určitě tabulku user se sloupci nick (zde uloženy jmena) a pass (zde hesla zahashovany bud kombinací md5 nebo sha1).

Uvedu ti příklad..
index.php ->
<?php
session_start()
$overeni = $_SESSION['prih­lasen'];
if($overeni == "")
{
echo("<form action='login.php' method='POST'");
echo("<input type='text' name='nick'");
echo("<input type='password' name='pass'");
echo("<input type='submit' value='prihlas'");
} else {
//Vše co chceš zobrazit po přihlášení
//+ nick uživatele ->
echo $_SESSION['prih­lasen'];
}
?>
//-------------------------------------------------
to vše k indexu ted login.php ->
//-------------------------------------------------
<?php
$nick = $_POST['nick'];
$pass = $_POST['pass'];
$pass_hash = sha1($pass);
$login = mysql_query("SELECT * FROM user WHERE nick='$nick' AND pass='$pass_hash'");
if($login)
{
session_regis­ter('prihlasen');
if(!(isset($_SES­SION['prihlasen'])))
{
$_SESSION['prih­lasen'] = $nick;
}
header("location: index.php");
exit;
} else {
echo("bylo zadáno špatné jmeno nebo heslo");
}
?>

Snad pomůže :-)

 
Nahoru Odpovědět 3.1.2013 17:40
Avatar
Kit
Redaktor
Avatar
Odpovídá na david.valenta96
Kit:

Hlavně ať to tak nikdo nedělá. Vyzkoušet prosím, ale na webhosting tohle nepatří.

Nahoru Odpovědět 3.1.2013 17:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
david.valenta96:

Smím se zeptat jak se to dá udělat jinak? když né takhle?? rád bych se přiučil :-)

 
Nahoru Odpovědět 3.1.2013 17:47
Avatar
albertpatera
Redaktor
Avatar
Odpovídá na Kit
albertpatera:

hele a takže tak jak to dělal david.valenta96 to nemam delat?? mam domenu pres endoru a ta databaze podporuje

 
Nahoru Odpovědět 3.1.2013 17:57
Avatar
Odpovídá na albertpatera
david.valenta96:

Na endoře tohle funguje .. já to tak mam taky.. ale zajímalo by mě proč to tak být nemá

 
Nahoru Odpovědět 3.1.2013 18:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na david.valenta96
Kit:

Tak především tam máš SQL injection. To se dá ošetřit třeba takto:

$nick = mysql_real_escape_string($_POST['nick']);
$pass = mysql_real_escape_string($_POST['pass']);

Dále se zásadně využívají hashovací funkce z databáze, tedy:

$login = mysql_query("SELECT nick FROM user WHERE nick='$nick' AND pass=sha1('$nick $pass')");

Že je tento ovladač MySQL zastaralý, to doufám víš.

Nahoru Odpovědět 3.1.2013 18:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Michael Olšavský:

Ještě být tebou tak to přihlašování dám do samostatného souboru.

 
Nahoru Odpovědět 3.1.2013 18:05
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michael Olšavský
Kit:

Však to tak má. Naopak doporučuji, aby všechno bylo v index.php.

Nahoru Odpovědět 3.1.2013 18:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Michael Olšavský:

V index.php? A co když mám větší webové stránky, v indexu několik dalších skriptů atd.? Ja bych to udělal asi objektově, založil si na to funkce atd. a nedaval to do index.php. Co je na tom špatného?

 
Nahoru Odpovědět 3.1.2013 18:12
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michael Olšavský
Kit:

Další objekty samozřejmě patří do dalších souborů, ale je výhodné, pokud je vstupním bodem všech stránek výhradně index.php. Bezpečnost aplikace pak řešíš na jednom místě. O překlad se postará .htaccess.

Nahoru Odpovědět 3.1.2013 18:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Michael Olšavský:

Já myslel jen to zpracování toho přihlášení. Formulář by samozřejmě zůstal v indexu. Ale stejně díky za reakci.

 
Nahoru Odpovědět 3.1.2013 18:19
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michael Olšavský
Kit:

Formulář i zpracování toho přihlášení budou samozřejmě v samostatných třídách a tedy i souborech. V indexu zůstane jen továrna.

Nahoru Odpovědět 3.1.2013 18:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Redaktor
Avatar
albertpatera:

muzu se jeste zeptat, čim udělam, aby to, co napíšu např. mam databazi článků, kde budu chtít přidávat nový články...jak udělám to, aby co napíšu do pole, tak aby mi databáze zpracovala, ale aby to bylo na hlavní strance...díky

 
Nahoru Odpovědět 3.1.2013 18:54
Avatar
Michael Olšavský:

Zkus si prostudovat tutoriály na devbooku. Například něco na způsob toho co chceš ty je zde: http://www.itnetwork.cz/…azi-tutorial

 
Nahoru Odpovědět 3.1.2013 19:01
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.