Autor | Zpráva | ||
---|---|---|---|
Ikki Profil |
#1 · Zasláno: 4. 11. 2017, 10:51:11
Zdravím, ačkoli mi to přijde opravdu hloupé až primitivní, tak jsem narazil na problém, který nejsem schopen vyřešit s žádnou variantou zapsání.
Jedná se o to, že jsem si tedy vytvořil tabulku (name, admin_access, admin_group) kdy určuji jaké jméno má jaké oprávnění či skupiny. Nyní řeším takovou podmínku která by měla zobrazit obsah pouze v případě že má uživatel například oprávnění view.panel, v opačném případě nikoli. if (isset($perm['admin_access']) == 'users'){echo ' <div class="panel panel-announcement"> <ul class="panel-options"> <li><a><i class="fa fa-refresh"></i></a></li> <li><a class="panel-remove"><i class="fa fa-remove"></i></a></li> </ul> <div class="panel-heading"> <h4 class="panel-title">Latest Announcement</h4> </div> <div class="panel-body"> <h2><br> A new admin template has been released by <span class="text-primary">ThemePixels</span> with a name <span class="text-success">Quirk</span> is now live and available for purchase!</h2> <h4>Explore this new template and see the beauty of Quirk! <a href="">Take a Tour!</a></h4> </div> </div><!-- panel --> ';}else{echo'ahoj';} k čemuž se váže SQL dotaz; $permission = $mysqli->query("SELECT name, admin_access FROM permissions WHERE name='".$_SESSION['nick']."'"); $perm = $permission->fetch_array(); V přihlašovacím případě kdy pro přihlášení je nutné mít "admin_access" == "login" to funguje, v dalším případě už nikoli. |
||
Tomášeek Profil |
#2 · Zasláno: 4. 11. 2017, 11:02:53
Isset vrací true/false. Nikdy nebude roven stringu.
if (isset($perm['admin_access']) && $perm['admin_access'] === 'users') {} |
||
Ikki Profil |
#3 · Zasláno: 4. 11. 2017, 11:07:01
Tomášeek:
Děkuji ti za tvou radu, nicméně zápis podmínky který jsi mi zaslal (jsem již zkoušel) mně opět dostává do stádia parse error, tedy Parse error: syntax error, unexpected ' ' (T_STRING) in /**/ on line 14 S tímto errorem si bohužel nevím rady, protože závorky jsou dle mého uvážení v pořádku. Co se týče isset, tak jej využívám už pár verzí PHP tak jak je zapsáno v původním příspěvku a vždy to fungovalo, ačkoli je to asi špatně. |
||
Tomášeek Profil |
Ikki:
Ona ta tvá konstrukce s isset "funguje", protože string se převede na true. V předchozím příspěvku jsem se z telefonu vyjádřil nepřesně. Ne nikdy nebude roven stringu, ale vždy to se dvě rovnítky bude rovno jakémukoliv stringu. Čili tam máš true == 'string' => true == true => true . Kdybys porovnával striktně, tedy se třemi rovnítky, podmínka platit samozřejmě nebude. Stejně tak ke tvému překvapení bude platit asi i podmínka
if (isset($perm['admin_access']) == 'abc') {echo 'a';} Syntaktická chyba z #3 je někde jinde, ne v té podmínce, kterou jsem uvedl. Hledej kolem řádku 14 (syntaktickou chybu, i když sem okolní kód nakopíruješ, ti prozrazovat nebudu, na to bys měl přijít sám). |
||
Ikki Profil |
#5 · Zasláno: 4. 11. 2017, 13:34:25
Nakonec je to tak jak jsem si myslel, vůbec není chyba nikde v okolí kódu natož podmínky IF.
SQL Dotaz (tedy i podmínka) bere v potaz pouze první řádek s uživatelským jménem, tedy pokud zapíšu přístupové oprávnění "users" do druhého řádku tak to nefunguje, v případě že "users" dám do prvního řádku tak vše funguje jak má. Kdybych to udělal na ID, fungovalo by to? |
||
Tomášeek Profil |
#6 · Zasláno: 4. 11. 2017, 13:50:01
Ikki:
Čti, co ti píšu. Chyba v podmínce JE - je pravdivá pro jakýkoliv string na pravé straně. „Kdybych to udělal na ID, fungovalo by to?“ Proč to nezkusíš? |
||
Ikki Profil |
#7 · Zasláno: 4. 11. 2017, 13:58:42
Chyba v podmínce opravdu nebyla, chyba byla v tom že SQL dotaz všechno určoval pouze podle prvního řádku se splněnými podmínkami.
Přidal jsem tedy sloupce ID kde se samozřejmě ID automaticky zvyšuje a do SQL dotazu přidal DESC, nyní už to funguje tak jak má a podmínka zůstala stejná. Každopádně ti děkuju, bez tvých odpovědí bych na tuto variantu úplně zapomněl. |
||
Tomášeek Profil |
#8 · Zasláno: 4. 11. 2017, 14:02:35
Ikki:
„Chyba v podmínce opravdu nebyla“ Když myslíš... asi je zbytečné na tebe reagovat dále, je to ztráta času. Přeji mnoho úspěchů v programování :-) |
||
Časová prodleva: 7 let
|
0