Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.
Avatar
Elisse
Člen
Avatar
Elisse:

Zdravíčko, rád bych se zeptal na názory jak by měl vypadat SQL dotaz při logování uživatele do aplikace.

Zatím mám něco ve smyslu :

SELECT Username FROM logins WHERE Username='Pepa' AND Password='1234'

A následně v aplikaci :

If ("Pepa".equals(Výstup z DB)
{
        // úspěšně přihlášeno
}
else
{
        / špatné jméno nebo heslo
}

Ale musím říct, že tenhle způsob porovnávání Pepy s Pepou se mi moc nelíbí, je nějaký jiný, hezčí prosím? :)

 
Odpovědět 18.10.2016 10:29
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Elisse
Petr Linhart:
<?php

$db = new PDO('host', 'user', 'password', 'options'); //Připojení k db pokud není jinde

$login = $db->prepare('SELECT username FROM logins WHERE username = ? AND password = ?');
$login->execute(array($username, $password));
$user = $login->fetch();

if (!$user){
    // Zpracování výjimek nebo chyb
}

$_SESSION['user'] = $user;
Editováno 18.10.2016 19:51
 
Nahoru Odpovědět 18.10.2016 19:49
Avatar
Elisse
Člen
Avatar
Odpovídá na Petr Linhart
Elisse:

Já neřekl ani slovo, že jde o PHP :D

Nicméně ve finále je to vlastně mám pocit to stejné ne? Jde mi hlavně o ten SELECT, ten bude asi vždy takovýdle? Neexistuje jen něco jako "If exist"?

 
Nahoru Odpovědět 20.10.2016 8:56
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Elisse
Petr Linhart:

Jo no, nějak sem si pamatoval z minulých diskusí, že jsi řešil php a neuvědomil sem si, že tady jde jen o sql dotaz.

Nicméně SQL dotaz máš správný. Pokud nepotřebuješ vytáhnout z db přímo údaje o přihlašujícím se uživateli tak se dá použít taky

SELECT COUNT(*) FROM logins WHERE username = 'Pepa' AND password = '1234'

to pak vrací 1 pokud byl uživatel nalezen s odpovídajícím heslem a 0 pokud není nalezen nebo nesouhlasí jméno/heslo

jinak je nutné to řešit v kódu aplikace

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 20.10.2016 18:45
Avatar
Elisse
Člen
Avatar
Odpovídá na Petr Linhart
Elisse:

To víš Php řeším v práci a C# a MySQL doma :D

Ty jo to mě vůbec nenapadlo ten count s výsledkem 1/0 je mnohem hezčí , díky ! :)

 
Nahoru Odpovědět 20.10.2016 21:52
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 5 zpráv z 5.