NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!

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

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
albertpatera
Tvůrce
Avatar
albertpatera:3.1.2013 17:04

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ý:3.1.2013 17:34

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

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

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:3.1.2013 17:40

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
Tvůrce
Avatar
Odpovídá na david.valenta96
Kit:3.1.2013 17:45

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:3.1.2013 17:47

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
Tvůrce
Avatar
Odpovídá na Kit
albertpatera:3.1.2013 17:57

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:3.1.2013 18:00

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
Tvůrce
Avatar
Odpovídá na david.valenta96
Kit:3.1.2013 18:02

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ý:3.1.2013 18:05

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
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Kit:3.1.2013 18:08

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
albertpatera
Tvůrce
Avatar
 
Nahoru Odpovědět
3.1.2013 18:10
Avatar
Michael Olšavský:3.1.2013 18:12

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
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Kit:3.1.2013 18:17

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ý:3.1.2013 18:19

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
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Kit:3.1.2013 18:22

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
Tvůrce
Avatar
albertpatera:3.1.2013 18:54

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ý:3.1.2013 19:01

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.