Okay ik ben met een soort beveiliging bezig, ik weet er zijn misschien betere manieren, maar dit is voor mensen die niet veel verstand hebben van php.
Ik wil een soort beveiliging inbouwen, maar de output blijft het zelfde
ik wil dit inbouwen
<?php
$ID = $_GET['ID'];
if($_SESSION['Level'] == '9') {
echo "je hebt volledige toegang";
} else {
if($_SESSION['ID'] == $ID) {
echo " Je hebt beperkte toegang";
} else {
echo "Je mag niks";
}
echo "Totaal geen toegan";
}
?>
Maar ik krijg elke keer de laatste output.
Terwijl $_SESSION['Level'] en $_SESSION['ID'] wel gezet zijn
Wat doe ik fout?
[size=xsmall]Toevoeging op 06/06/2022 12:50:35:[/size]
PS: het gaat erom dat als een gebruiker ingelogt is en die heeft een sessie level lager dan 9 moet hij alleen dat mogen doen van zijn eigen id.
dat is de bedoeling, want in de adres bar van je brouwser komt de hele link te staan met de id, dus als je de id veranderd, moet hij aangeven dat je daar geen toegang toe hebt.
$_GET heeft niks met de header te maken. Dat komt uit een URL.
Ik zou zeggen, ga alle variabelen eens na met var_dump() en je ziet wat de inhoud is, en je kan zo achterhalen waarom een statement niet goed uitgevoerd wordt.
Dan doe je iets fout!
En echt... lees de manual over hoe functies werken! Niet gokken en hopen dat het werkt, maar begrijpen hoe het werkt. Het klinkt bot, maar anders kan je net zo goed wat anders gaan doen dan dit.
Admin logt in, kan gewoon overal toegang hebben in de editprofile
User logt in en kan zijn eigen profile niet aanpassen terwijl hij wel dat ID heeft die in de $_SESSIE staat en in de $_GET mee komt
Ik zou zeggen, ga alle variabelen eens na met var_dump() en je ziet wat de inhoud is, en je kan zo achterhalen waarom een statement niet goed uitgevoerd wordt.
- Bestaat je $_GET['ID'] wel? Oftewel: heb je dit in je URL staan: ?ID=
- Wat zegt een print_r() op $_SESSION['Level'] (tussen <pre>-tags voor de leesbaarheid)
- Zorg ook voor preventie tegen SQL-injection.
Is al opgelost, var_dump gaf precies aan wat ik fout had gedaan, en ja het had te maken met de $_SESSION['ID']; die was nog niet aangemaakt. Maar dat is nu opgelost.