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.
Zet de code netjes onder elkaar en je zult zien dat als je geen level 9 hebt, je nooit toegang hebt.

 <?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"; // nog een g op het eind toevoegen
}
?>
Als je goed kijkt, als je geen level 9 hebt moet hij kijken of je wel de sessie id hebt waar je wel toegang toe hebt
Je hebt wel een session_start(); bovenaan in je code staan?
Ja die wordt door de header.php aangeroepen, alles gaat goed, tot ik de $_SESSION['Level'] deed inbouwen

[size=xsmall]Toevoeging op 06/06/2022 13:02:05:[/size]

$_SESSION['ID'] deed hij het wel, maar ik als admin moet tot alles toegang hebben, dus bouwde ik de $_SESSION['Level'] extra erbij in, zodat hij eerst kijkt of de persoon het gewenste level heeft, zoniet kijk of hij wel de juiste id heeft waar hij wel toegang toe heeft.
Zonder $_SESSION['Level'] deed ie het, maar als admin kon ik niet bij andere komen waar ik ook toegang toe moet hebben.
Als je de melding: "Totaal geen toegan(g)" ziet, dan is die level 9 niet in de sessie geplaatst.
De controle $_SESSION['ID'] == $ID is overigens een los statement in je else van je $_SESSION['Level'] == '9' statement.

Persoonlijk zou ik geen levels in een sessie opslaan. Als je iemand level verlaagt, dan blijft die in zijn sessie bestaan tot hij uitlogt. Voor zulke dingen zou ik beter de database gebruiken.

Dat met in en uitloggen weet ik, maar daar ga ik nog een update opmaken, daar is een manier voor om de sessies mee bij te houden live

[size=xsmall]Toevoeging op 06/06/2022 13:04:45:[/size]

- Ariën - op 06/06/2022 13:02:28

Als je de melding: "Totaal geen toegan(g)" ziet, dan is die level 9 niet in de sessie geplaatst.
De controle $_SESSION['ID'] == $ID is overigens een los statement in je else van je $_SESSION['Level'] == '9' statement.

Persoonlijk zou ik geen levels in een sessie opslaan. Als je iemand level verlaagt, dan blijft die in zijn sessie bestaan tot hij uitlogt. Voor zulke dingen zou ik beter de database gebruiken.

PS: sessie level is wel in de sessie mee opgenomen






[size=xsmall]Toevoeging op 06/06/2022 13:05:48:[/size]

Bij een andere pagina gebruik ik hem ook en daar werkt het wel

<?php
if($_SESSION['Level'] == '9') {
echo "<td colspan='4' align='right'><a href='index.php?menu=editprofile&ID=".$info['ID']."'>Edit</a></td>";
} else {

if($_SESSION['Name'] == $info['Name']) {
echo "<td colspan='4' align='right'>You can <a href='index.php?menu=editprofile&ID=".$info['ID']."'>Edit</a> your profile</td>";
} else {
echo "<td colspan='4' align='right'>You cannot edit this profile</td>";
}
}
?>
Ik snap niet waarom je een $_GET['id'] gebruikt voor een inlogsysteem?

Tipje: Je kan je code ook netter maken door het script in je een <td> te plaatsen.
Dat scheelt weer een hoop herhalen van de zelfde opmaak.
Maar daar gaat het nu niet om, waarom werkt de code bij een andere page wel en bij de andere niet?
Misschien omdat session_start() mist?
Sessie niet aangemaakt?
zoasl ik al zie, die wordt door de header aangeroepen, dus dat is niet het probleem

Reageren