Zadejte hledaný výraz...

Chyba v ověřování

delfik.petr
verified
rating uzivatele
1. 6. 2014 22:28:04
Dobrý den,
chtěl bych požádat o radu, mám napsaný skript pro ověřování registračního emailu, bohužel mi to nějak nechce projiít jedná se o php a mysql.
Tady je skript pro authentizaci:
require_once 'portal-functions.php';
ini_set('session.use_trans_sid', 1);
session_start();
$db = new mojeDb(); // připojení k MySQL; v případě neúspěchu se objeví
// chybové hlášení a činnost aplikace se ukončí
$jmeno = FALSE;
$uzivatelID = array_item($_REQUEST, 'uzivatelID');
$authent = array_item($_REQUEST, 'authent');
$sql = "SELECT `jmeno` FROM `uzivatele` " .
"WHERE `uzivatelID`=$uzivatelID " .
"AND `authent`='$authent' ".
"AND `active`=0 LIMIT 2";
$rows = $db ->queryObjectArray($sql);
// pokus o ověření dat
if ($rows && is_array($rows) && count($rows) == 1) {
// vše je v pořádku; účet se aktivuje a nastaví se data relace & cookie
$jmeno = $rows->jmeno;
$sql = "UPDATE uzivatele SET active=1 WHERE uzivatelID=$uzivatelID";
$db->execute($sql);
$_SESSION = $uzivatelID;
$_SESSION = $jmeno;
// platnost je 14 dní
setcookie('portaluzivatelID', $uzivatelID, time() + 14 * 24 * 60 * 60);
setcookie('portalAuthent', $authent, time() + 14 * 24 * 60 * 60);
}
// sem se dostaneme pouze pokud se nepodaří ověřit uživatele
html_start("Ověření přihlášení");
if ($jmeno) {
include './zahlavi2'; //zahlavi 3 vytvorit s jmenem
?>

Ověření přihlášení do portálu pro servis a reklamce - Počítače Zlín

Vítejte na portálu pro servis a reklamce. Váš účet je nyní aktivní

a už jste také zároveň přihlášeni. Nyní můžete vytvářet
nové komentáře, popřípadě můžete odpovídat na již existující u vlastních záznamů.

Pokud máte povoleno přijímání souborů cookies,

zůstáváte automaticky po 14 dní přihlášeni.
Odhlásit se můžete kdykoliv klepnutím na odkaz Odhlásit se (Logout).

Do navigace portalu ...

} else {
?>

Ověření přihlášení do portálu pro servis a reklamce - Počítače Zlín

Ověření vašeho nového účtu do portálu pro servis a reklamce - Počítače Zlín se nezdařilo.


Pokud již byl váš účet aktivován, pak se můžete
přihlásit na stránce pro přihlášení:Login

V opačném případě zkuste, prosím, ještě jednou
na stránce pro přihlášení a registraci: Register
vytvořit nový účet.
Do vaší e-malové schránky pak přijde zpráva,
která bude opbsahovat odkaz, na nějž musíte do 24 hodin klepnout, aby se
dokončila aktivace vašeho účtu.
}
html_end();
?>
Druhý dotaz se týká chybového hlášení:
Fatal error: Call to a member function sql_string() on a non-object in /mnt/data/accounts/p/pczlin/data/www/pczlin.cz/reklamace/PHP/login.php on line 172
Chyba je někde ve funcki:
Moc děkuji za každou radu.
P.D.
1. 6. 2014 22:28:04
https://webtrh.cz/diskuse/chyba-v-overovani/#reply1028551
Co znamená "nechce mi to nějak projít"? Lokalizujte chybu na co nejmenší počet řádků, které sem pošlete.
V druhém případě vám chybu jasně popisuje chybová hláška: Proměnná $db, kterou funkce obdrží, není objekt.
1. 6. 2014 22:56:27
https://webtrh.cz/diskuse/chyba-v-overovani/#reply1028550
Pavel Janků
verified
rating uzivatele
(93 hodnocení)
1. 6. 2014 23:13:27
V druhém případě zkus globalizovat $db... Na začátek funkce dej:
global $db;
V prvním případě to píše co? Případně zkoušel jsi odchytávat mysql error?
1. 6. 2014 23:13:27
https://webtrh.cz/diskuse/chyba-v-overovani/#reply1028549
delfik.petr
verified
rating uzivatele
2. 6. 2014 08:12:45
Omlouvám se jsem si neuvědomil, že to nezobrazuje řádky :(
tady vypisuje chybu:
přesně:
Jinak, co jsem dával kódy, tak po ověření přes phpMyAdmin, mi tohle vůbec neproběhlo :( :
2. 6. 2014 08:12:45
https://webtrh.cz/diskuse/chyba-v-overovani/#reply1028548
crs
verified
rating uzivatele
(1 hodnocení)
5. 6. 2014 16:28:13
Podle chybové hlášky parametr $db ve funkci try_to_login() není objekt.
Zkus před voláním try_to_login() tu proměnnou vypsat:
var_dump($db);
a napiš sem, co to vypsalo.
5. 6. 2014 16:28:13
https://webtrh.cz/diskuse/chyba-v-overovani/#reply1028547
Pavel Janků
verified
rating uzivatele
(93 hodnocení)
5. 6. 2014 19:15:15
Napsal delfik.petr;1094116
Omlouvám se jsem si neuvědomil, že to nezobrazuje řádky :(
tady vypisuje chybu:
přesně:
Jinak, co jsem dával kódy, tak po ověření přes phpMyAdmin, mi tohle vůbec neproběhlo :( :
Tu globalizaci jsi zkoušel?
Oprav si ten statement na:
$sql = "SELECT `uzivatelID`, `authent` FROM `uzivatele` " .
"WHERE `jmeno`='" . $db->sql_string($jmeno) . "' " .
" AND `heslo`=password('" . $db->sql_string($heslo) . "') " .
" AND `active`=1 LIMIT 2";
Měl jsi špatně stringy. Musíš je uvozovat pomocí jednoduchých úvozovek 'string', jinak bude syntax error.
Jinak nech si vypsat ty mysql errory, je to nejjednodušší debug a je přímo součástí.
Mimochodem, zkus si to napsat jako View, je to čistší a lepší způsob.
5. 6. 2014 19:15:15
https://webtrh.cz/diskuse/chyba-v-overovani/#reply1028546
Milan Horník
verified
rating uzivatele
(8 hodnocení)
5. 6. 2014 21:15:10
kdyz to neprogramoval a ani do toho nevidi tak s tim tezko sam neco udela...
5. 6. 2014 21:15:10
https://webtrh.cz/diskuse/chyba-v-overovani/#reply1028545
Pavel Janků
verified
rating uzivatele
(93 hodnocení)
5. 6. 2014 22:25:12
Napsal Milan Hornik;1095569
kdyz to neprogramoval a ani do toho nevidi tak s tim tezko sam neco udela...
Skvělý postřeh, tak hlavně že tvoje věta mu pomůže :) Pokud začíná, může si najít a vyřešit chybu... to mu přinese asi nejvíc :)
5. 6. 2014 22:25:12
https://webtrh.cz/diskuse/chyba-v-overovani/#reply1028544
mH081
verified
rating uzivatele
(1 hodnocení)
10. 6. 2014 23:30:09
Co se týče té chyby, domnívám se, že by mohlo stačit:
function try_to_login($formdata) {
$db = new mojeDb();
$jmeno = array_item($formdata, "jmeno");
.....
}
Těch řešení může být několik; v kódu co jste přiložil neuvádíte, zda při volání původní "try_to_login($formdata, $db)" vkládate jako druhý parametr správně instanci db objektu $db. Nebo to prostě nevidím :D
+ Trochu offtopic, ale doporučuji si pro vývoj rozjet projekt lokálně, vyvíjet lokálně a do "produkce" vystavovat jen odladěný kod. Pastovat to sem přímo s doménou na které to běží není moc chytré, obvlášť když se zdá, že je to plné zranitelností.
Co se týče kvality kódu, doporučuji si přečíst něco o template enginech. (Nette +) Latte, Twig, Smarty .... Kód vypadá děsivě.
10. 6. 2014 23:30:09
https://webtrh.cz/diskuse/chyba-v-overovani/#reply1028543
Pro odpověď se přihlašte.
Přihlásit