Autor | Zpráva | ||
---|---|---|---|
Matej Ševčík Profil |
#1 · Zasláno: 8. 2. 2015, 20:34:24
Čaute, mám problém. Robím neobjektový rs podľa tohoto návodu http://www.itnetwork.cz/ners-editor-clanku-v-php-tutorial . Konkrétne s prihlasovaním užívateľov. Tam je to urobené pomocou databázového wrapperu. Ale ja to chcem urobiť cez PDO. Nevie niekto ako? :)
|
||
lionel messi Profil |
#2 · Zasláno: 8. 2. 2015, 20:59:07
Matej Ševčík:
„Ale ja to chcem urobiť cez PDO.“ Preletel som pár dielov uvedeného seriálu a hneď v druhom dieli sa píše: „[…] Wrapper by se dal přeložit jako obal. Někdo pro vás obalí objektové funkce ovladače PDO tak, abyste jim rozuměli a mohli je používat bez toho, aniž byste vůbec tušili co to objekt je. Právě tento přístup zvolíme v našem seriálu.“ Čiže príklad de facto už PDO používa. Ak je však otázka mierená na PDO bez použitia wrapperu, odporúčam tento návod v češtine: MySQL přes PDO. |
||
Matej Ševčík Profil |
#3 · Zasláno: 8. 2. 2015, 21:07:54
Presne to som pozeral. Len fakt neviem ako to urobiť. Konkrétne tento kód:
if ($_POST) { $uzivatel = Db::queryOne(' SELECT uzivatele_id, admin FROM uzivatele WHERE jmeno=? AND heslo=SHA1(?) ', $_POST['jmeno'], $_POST['heslo'] . "tssdf54gh"); if (!$uzivatel) $zprava = 'Neplatné uživatelské jméno nebo heslo'; else { $_SESSION['uzivatel_id'] = $uzivatel['uzivatele_id']; $_SESSION['uzivatel_jmeno'] = $_POST['jmeno']; $_SESSION['uzivatel_admin'] = $uzivatel['admin']; header('Location: administrace.php'); exit(); } } ....... Ako toho istého výsledku dosiahnuť v "čistom" PDO? |
||
lionel messi Profil |
#4 · Zasláno: 8. 2. 2015, 21:16:15
Matej Ševčík:
„Ako toho istého výsledku dosiahnuť v "čistom" PDO?“ Najprv sa musíš pripojiť. To môžeš obstarať kódom z odkázaného návodu: http://jecas.cz/pdo#pripojeni. Keďže príklad v seriáli používa prepared statements, budeme sa ho držať aj v čistom PDO (samozrejme je nutné sa najprv pripojiť): $dotaz = $pdo->prepare("SELECT uzivatele_id, admin FROM uzivatele WHERE jmeno = ? AND heslo = SHA1(?)"); $vysledok = $dotaz->execute(array($_POST['jmeno'], $_POST['heslo'] . "tssdf54gh")); |
||
Matej Ševčík Profil |
Jasné .. pripojiť sa viem :). Okej tomuto kódu ešte rozumiem ale ako skontrolovať či existuje ako je to v tom kóde čo som poslal? Konkrétne táto časť:
if (!$uzivatel) $zprava = 'Neplatné uživatelské jméno nebo heslo'; |
||
Matej Ševčík Profil |
#6 · Zasláno: 9. 2. 2015, 11:14:54
Skúšal som to tak ako si napísal. Tu je kód:
//najprv som sa pripojil. $dotaz = $pdo->prepare("SELECT uzivatele_id, admin FROM uzivatele WHERE jmeno = ? AND heslo = SHA1(?)"); $vysledok = $dotaz->execute(array($_POST['jmeno'], $_POST['heslo'] . "tssdf54gh")); if (!$vysledok) { echo "Error..."; } |
||
lionel messi Profil |
#7 · Zasláno: 9. 2. 2015, 12:22:18
Matej Ševčík:
„ako skontrolovať či existuje ako je to v tom kóde čo som poslal? Konkrétne táto časť:“ Možných ciest je niekoľko, ide to napr. takto: $dotaz = $pdo->prepare("SELECT COUNT(*) FROM uzivatele WHERE jmeno = ? AND heslo = SHA1(?)"); $vysledok = $dotaz->execute(array($_POST['jmeno'], $_POST['heslo'] . "tssdf54gh")); $data = $vysledok->fetchColumn(); if (!$data) { echo "Neplatné užívateľské meno alebo heslo!"; } |
||
Matej Ševčík Profil |
#8 · Zasláno: 9. 2. 2015, 12:51:18
Ďakujem :) toto funguje. A mohol by si mi vysvetliť čo robí to fetchColumn? :)
|
||
lionel messi Profil |
#9 · Zasláno: 9. 2. 2015, 13:08:15
Matej Ševčík:
„A mohol by si mi vysvetliť čo robí to fetchColumn?“ Pre istotu ťa radšej odkážem na oficiálnu dokumentáciu: php.net/manual/en/pdostatement.fetchcolumn.php (nerád by som to doplietol). |
||
Matej Ševčík Profil |
ďakujem moc :) ..
|
||
Časová prodleva: 9 let
|
0