Sessies beveiligen met een array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Glenn Beerten

Glenn Beerten

18/08/2012 01:20:30
Quote Anchor link
Hallo iedereen,

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);
}


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
 
PHP hulp

PHP hulp

24/11/2024 16:57:33
 
Marco PHPJunky

Marco PHPJunky

18/08/2012 01:53:47
Quote Anchor link
kijk eens wat er precies in beide staat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?PHP
echo '<pre>';
echo var_dump($_SESSION['rights']);
echo '</pre>';
?>

en
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?PHP
echo '<pre>';
echo var_dump($rights_adminpannel);
echo '</pre>';
?>


hier is een klein voorbeeldje (hoe hij ook op php.net staat (bijna dan :P ))
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?PHP
$os
= array("Mac", "XP", "DOS", "NOVEL");
if ( in_array("DOS", $os) ):
    echo "Got DOS";
endif;

?>
Gewijzigd op 18/08/2012 01:56:24 door Marco PHPJunky
 
Eddy E

Eddy E

18/08/2012 09:32:32
Quote Anchor link
Ipv rang 8 en 9 kan je ook zeggen dat de minimale rang 8 is.
9 is het hoogst, 1 het laagst.
Met een WHERE user_rang >= needed_rang kom je dan een heel eind.
 
Php knipper

php knipper

18/08/2012 09:36:44
 
Glenn Beerten

Glenn Beerten

18/08/2012 09:41:23
Quote Anchor link
@Marco dit staat er in mijn array als ik dat doe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
array(1) { [0]=> string(4) "1, 9" }
?>

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 ;)
 
- SanThe -

- SanThe -

18/08/2012 09:49:24
Quote Anchor link
$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().
 
Glenn Beerten

Glenn Beerten

18/08/2012 11:30:24
Quote Anchor link
- 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().


Ik heb toch meerdere waardes in mijn db staan?
 
Obelix Idefix

Obelix Idefix

18/08/2012 11:48:03
Quote Anchor link
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.
 
Glenn Beerten

Glenn Beerten

18/08/2012 11:52:22
Quote Anchor link
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.


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 :)
 
Obelix Idefix

Obelix Idefix

18/08/2012 11:54:06
Quote Anchor link
En wat als je 1 en 9 apart in een databaseveld zet (2 records dus) en niet in 1 veld.

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
 
John Berg

John Berg

18/08/2012 11:54:28
Quote Anchor link
Query aanpassen naar zoiets als

"SELECT * FROM user_config where rights_adminpannel IN (8,9)"
Gewijzigd op 18/08/2012 11:58:38 door John Berg
 
Glenn Beerten

Glenn Beerten

18/08/2012 11:58:35
Quote Anchor link
@Obelix en Idefix,
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 ;)
 
Obelix Idefix

Obelix Idefix

18/08/2012 12:43:41
Quote Anchor link
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.
 
Glenn Beerten

Glenn Beerten

18/08/2012 12:49:24
Quote Anchor link
@Obelix,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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" } }
?>
Gewijzigd op 18/08/2012 16:27:28 door Glenn Beerten
 
- SanThe -

- SanThe -

18/08/2012 19:37:55
Quote Anchor link
- 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().


$rights_adminpannel = explode(',', $config_row2->rights_adminpannel);
Zo is het een array().
 
Glenn Beerten

Glenn Beerten

18/08/2012 21:15:52
Quote Anchor link
Zo werkt het inderdaad :D
Heel erg bedankt @- San The -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.