Script nemaže nic z database
- Kureii
- Člen | 17
Zdravím, začínám s nette a pokouším se vytvořit vlastní přihlašovací a ověřovací systém, když se nepřihlasíte s kodem z emailu do hodiny od založení tak se má záznam smazat. Vše funguje až na smazání řádku z databáse
function deleteUser()
{
sleep(30);
$row = $this->database->fetch('SELECT * FROM users WHERE user_mail = ?',$mail);
foreach ($row as $hodnost)
$hodnost = $hodnost->hodnost;
foreach ($row as $id)
$id = $id->user_id;
if ($hodnost == NULL)
{
$delete = $this->database->query('DELETE FROM users WHERE user_id = ?', $id);
}
}
Vidíte tam někde problém proč by to nemělo fungovat ?
- Ondřej Kubíček
- Člen | 494
a tu funkci spouštíš kde kde jak?
proč máš na začátku sleep na 30 sekund?
na ty foreach použij závorky blbě se to čte. V prvním foreach nastavíš
$hodnost
na poslední hodnotu z výběru, to je tak
schválně?
Editoval Ondřej Kubíček (12. 8. 2019 14:20)
- Kureii
- Člen | 17
Funkce je v jiné public funkci která se spustí po registraci, sleep 30 s je tam kuli tomu popisovanému limitu ale nechce se mi čekat tak to neni hodina. Jo je to schválně princip ověření má být vygenerovaný kod je zaslaný na email a zapsaný do database, při prihlášení se zkontroluje jestli je hodnost null nabo vyplnena když bude null bude to chtít kod na ověření a pokud nebude tak nic. A po hodině se má zkontrolovat vytvořený záznam jestli je null nebo ne automaticky aby se případně smazal.
- Ondřej Kubíček
- Člen | 494
tak php nefunguje
php funguje tak, že se spustí, vykoná kod a umře, takže když se uživatel
registruje, odešle nějaký form, pak se to dostane do této funkce a
30 sekund script čeká, takže uživateli se v prohlížeči furt točí
načítací kolečko a nic se po tu dobu neděje
ideálně by sis měl napsat cron, který se bude pravidelně spouštět a kontrolovat to, v db máš určitě uložený čas do kdy ten kod platí