Autor | Zpráva | ||
---|---|---|---|
World Profil |
#1 · Zasláno: 12. 5. 2007, 16:31:48 · Upravil/a: World
Zdravim,
Tak tu jsem ještě jednou se stejným problémem, minule jsem myslel, že už jsem ho vyřešil, protože se to do té doby než jsem to začel více zkoumat zvářilo, že to funguje. Takže mam script, který zajistí, když byly 3x špatně zadané přihlaš. údaje, tak to účet na 5min zamrazí(v databázi se nastaví frozen_account na aktuální čas + 5min) a potom mám toto: $sql_frozen_check = $db->sql_query("SELECT frozen_account>NOW() FROM account WHERE account_name='$accountname'"); $frozen_check = $db->sql_numrows($sql_frozen_check); if($frozen_check == 1){ $error_msg = "<font class="error">"._ACCOUNT_FROZEN."</font>"; login_form(); exit(); } to má zajistit to, že když je frozen_account(doba, do které je účet zamražen) větší jak aktuální čas, tak to uživatele nepustí dál. account_frozen je ve formátu: 0000-00-00 00:00:00 jenže toto nefunguje, a projevu se to tak, že to stále píše, že je účet zamražený díky za pomoc |
||
bukaj Profil |
#2 · Zasláno: 12. 5. 2007, 19:53:38
vypíše něco mysql_error()? nevím, ale ten dotaz se mi zdá nějaký divný...
|
||
Mastodont Profil |
#3 · Zasláno: 12. 5. 2007, 19:56:27
SELECT frozen_account>NOW()
?? |
||
World Profil |
#4 · Zasláno: 12. 5. 2007, 20:36:23
bukaj
právě že nic nevypisuje no ja vim, že požaduji NOW() z tabulky kde takového nic není, ale co byste doporučili? Mastodont na to už jsem odpověděl bukajovi, ale když zkusim ten sql provést normal v phpmyadminovi, tak to buď vrátí hodnotu 0 (frozen_account už je menší jak aktuální čas) a nebo 1 (frozen_account je stále větší jak aktuální čas) |
||
bukaj Profil |
#5 · Zasláno: 12. 5. 2007, 20:51:51
možná mám nápad na to, ale netestoval jsem:
mimochodem, vypíše echo $accountname; správné uživatelské jméno? |
||
World Profil |
#6 · Zasláno: 12. 5. 2007, 21:11:54 · Upravil/a: World
bukaj
díky moc, takhle to funguje, aspoň jsem zase o něco chytřejší ;) ještě jednou díky edit: ale přece jen bych měl ještě jednu otázku, nejsem takový ten typ copy/paste, ale chci tomu kódu plně rozumět a tak se ptám co přesně udělá toto: $frozened = $frozen_check["frozened"]>=1 ? TRUE : FALSE; zkoušel jsem to i bez toho a funguje to také bez problémů jo a ještě abych nezapomněl když mám v sql dotazu proměnnou, tak je lepší ji dávat v podobě takovéto: test='".$promenna."' nebo test='$promenna' díky za odpověd |
||
bukaj Profil |
#7 · Zasláno: 13. 5. 2007, 18:07:17
World
promiň, ale už jsem si editu nevšiml. teď to snad napravím. ad 1. $frozened = $frozen_check["frozened"]>=1 ? TRUE : FALSE; ^ tak tohle je v podstatě zkrácený zápis podmínky:
jde o ternární oprátor, který pracuje tak, že když je první oprerand (to před ?) vyhodnocen jako TRUE, tak vrací hodnotu před : (dvojtečkou), jinak za ní. ani vlastně nevím, proč jsem to tam psal :) ad 2. řekl bych, že je to jedno. na funkcionalitu by to nemělo mít vliv. akorát pozor na toto:
|
||
World Profil |
#8 · Zasláno: 13. 5. 2007, 19:00:13
bukaj
díky moc, za pomoc a za vysvětlení ;) |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0