Sessies beveiligen met een array
Ik ben bezig met een klein project. En ik stoot op volgend probleem, waar ik maar die vanaf kom.
Dit is mijn script:
Quote:
$config_query2 = mysql_query("SELECT * FROM user_config") or die ("<h1>Site down</h1>De site is momenteel niet beschikbaar");
while($config_row2 = mysql_fetch_object($config_query2)) {
$rights_adminpannel = array($config_row2->rights_adminpannel);
}
while($config_row2 = mysql_fetch_object($config_query2)) {
$rights_adminpannel = array($config_row2->rights_adminpannel);
}
En dit heb ik staan op een beveiligede pagina
Quote:
if(in_array($_SESSION['rights'], $rights_adminpannel))
In mijn database heb ik het volgende staan:
Quote:
8, 9
Dit wil zeggen dat mensen met een ulevel recht van 8 of 9 alleen die pagina's moeten kunnen zien. Spijtig genoeg werkt dit alleen als ik slechts 1 getal in mijn database heb staan.
Wat doe ik fout?
Groet,
Glenn
en
hier is een klein voorbeeldje (hoe hij ook op php.net staat (bijna dan :P ))
Code (php)
Gewijzigd op 18/08/2012 01:56:24 door Marco PHPJunky
9 is het hoogst, 1 het laagst.
Met een WHERE user_rang >= needed_rang kom je dan een heel eind.
dat kan je beter niet gebruiken.
http://www.phphulp.nl/php/tutorial/overig/sql-beginners-handleiding/576/
Dus dat klopt al niet.
In mijn $_SESSION['rights'] staat gewoon mijn ulevel. Bij mij nu dus 9
@Eddy, dat zou handig zijn als ik opeenvolgende userlevels zou kunnen gebruiken. Het is de bedoeling dat ik alle combinaties kan maken ;)
Hiermee maak je een array() met één record/waarde.
De waarde uit de database zelf is géén array().
- SanThe - op 18/08/2012 09:49:24:
$rights_adminpannel = array($config_row2->rights_adminpannel);
Hiermee maak je een array() met één record/waarde.
De waarde uit de database zelf is géén array().
Hiermee maak je een array() met één record/waarde.
De waarde uit de database zelf is géén array().
Ik heb toch meerdere waardes in mijn db staan?
Als ik kijk naar je post op 18/08/2012 09:41:23 lijkt het mij dat de array maar 1 waarde heeft.
Obelix en Idefix op 18/08/2012 11:48:03:
Heb je 1 veld met 2 cijfers of 2 velden met elk 1 cijfer?
Als ik kijk naar je post op 18/08/2012 09:41:23 lijkt het mij dat de array maar 1 waarde heeft.
Als ik kijk naar je post op 18/08/2012 09:41:23 lijkt het mij dat de array maar 1 waarde heeft.
Wel dat is juist het probleem :p
Ik heb gewoon de waarde van een array in een db gezet. Maar dat doet hij het niet correct. Hij zou de waarden 1 en 9 in die array moeten zetten :)
off topic: het volledig quoten van een reactie (zeker als die er direct bovenstaat) is niet nodig/heeft geen toegevoegde waarde :-)
Gewijzigd op 18/08/2012 11:54:55 door Obelix Idefix
"SELECT * FROM user_config where rights_adminpannel IN (8,9)"
Gewijzigd op 18/08/2012 11:58:38 door John Berg
Dit zou kunnen, heb ik mezelf ook al eens bedacht. Maar dat zou het probleem nog niet oplossen, want dan zou ik voor elk ulevel dat ik wil toevoegen een record moeten bijmaken. En het is de bedoeling dat ik het manueel met een script kan doen ;)
Glenn Beerten op 18/08/2012 11:58:35:
Maar dat zou het probleem nog niet oplossen,
Vermoedelijk lost dat jouw huidige vraag/probleem wel op.
Glenn Beerten op 18/08/2012 11:58:35:
want dan zou ik voor elk ulevel dat ik wil toevoegen een record moeten bijmaken.
Klopt. Maar nu zul je ook moeten toevoegen/wijzigen.
Glenn Beerten op 18/08/2012 11:58:35:
En het is de bedoeling dat ik het manueel met een script kan doen ;)
Die zin begrijp ik niet. "Manueel met een script"?
Ik stel me voor dat je in je beheersgedeelte een formulier (script) hebt. Daarin kun je userlevels toevoegen/wijzigen/verwijderen.
Ik zal het eens proberen. Maar het zou mijn probleem nagenoeg niet oplossen. Als ik voor elke ulevel en voor elke pagina een record moet toevoegen, dan zou mijn tabel er nogal uit zien :p.
Ik heb inderdaad een script waar ik kan aanduiden welke ulevels de pagina mogen zien ;)
Edit: 16:27
Ik heb het nu anders gedaan. Maar dan krijg ik nog niet het gewenste. Mijn array is nu:
Code (php)
1
2
3
2
3
<?php
array(1) { [0]=> array(11) { ["id"]=> string(1) "1" ["pagename"]=> string(11) "adminpannel" ["ul1"]=> string(1) "1" ["ul2"]=> string(1) "2" ["ul3"]=> string(1) "0" ["ul4"]=> string(1) "0" ["ul5"]=> string(1) "0" ["ul6"]=> string(1) "0" ["ul7"]=> string(1) "0" ["ul8"]=> string(1) "0" ["ul9"]=> string(1) "9" } }
?>
array(1) { [0]=> array(11) { ["id"]=> string(1) "1" ["pagename"]=> string(11) "adminpannel" ["ul1"]=> string(1) "1" ["ul2"]=> string(1) "2" ["ul3"]=> string(1) "0" ["ul4"]=> string(1) "0" ["ul5"]=> string(1) "0" ["ul6"]=> string(1) "0" ["ul7"]=> string(1) "0" ["ul8"]=> string(1) "0" ["ul9"]=> string(1) "9" } }
?>
Gewijzigd op 18/08/2012 16:27:28 door Glenn Beerten
- SanThe - op 18/08/2012 09:49:24:
$rights_adminpannel = array($config_row2->rights_adminpannel);
Hiermee maak je een array() met één record/waarde.
De waarde uit de database zelf is géén array().
Hiermee maak je een array() met één record/waarde.
De waarde uit de database zelf is géén array().
$rights_adminpannel = explode(',', $config_row2->rights_adminpannel);
Zo is het een array().
Heel erg bedankt @- San The -