Autor Zpráva
Ikki
Profil
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
Isset vrací true/false. Nikdy nebude roven stringu.

if (isset($perm['admin_access']) && $perm['admin_access'] === 'users') {}
Ikki
Profil
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
, kdy nevím co s tím.
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';}
Doplnil jsem ti více (resp. konkrétnější) příkladů, mrkni na sandbox.onlinephpfunctions.com/code/5146a5e79a512e75ec42c42721d949e121707f90

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
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
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
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
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í :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: