Hallo allemaal,

Ik ben net 2 maanden eigenaar op Camwijsfan.nl
En loop tegen tegen dit probleem aan Je bent geen admin. als beheerder en als admin niet.
Kan iemand helpen?
Alvast bedankt

Met vriendelijke groet
Morris

   <div class="bllok">
         <div class="titel">Credits Beheren</div>
<?php

if(isset($_SESSION['admin']) || isset($_SESSION['nieuwsreporter']) || isset($_SESSION['promoter']) || isset($_SESSION['beheerder']) || isset($_SESSION['moderator'])) {
	echo "Je bent geen admin.<br /><a href='#' onclick='history.go(-1)'>Ga terug</a>";
	die();
}

if(isset($_POST['toevoegen'])) {
	if($_POST['som'] == "af") {
		$aantal = mysql_real_escape_string(substr($_POST['aantal'],0,10));
		$member_id = mysql_real_escape_string($_POST['member_id']);
		mysql_query("UPDATE leden SET muntjes= muntjes - ".$aantal." WHERE member_id='".$member_id."'");
		if(mysql_error() == "") {
			echo "<font color=\"green\"><b>Succesvol bijgewerkt!</b></font>";
		}else{
			echo "<font color=\"red\"><b>Niet bijgewerkt!</b></font>";
		}
	}elseif($_POST['som'] == "bij") {
		$aantal = mysql_real_escape_string(substr($_POST['aantal'],0,10));
		$member_id = mysql_real_escape_string($_POST['member_id']);
		mysql_query("UPDATE leden SET muntjes = muntjes + ".$aantal." WHERE member_id='".$member_id."'");
		if(mysql_error() == "") {
			echo "<font color=\"green\"><b>Succesvol bijgewerkt!</b></font>";
		}else{
			echo "<font color=\"red\"><b>Niet bijgewerkt!</b></font>";
		}
	}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?p=admin_muntjes" method="post">
<table>
    <tr>
        <td>Naam:</td>
        <td>
            <?php
                $sql = mysql_query("SELECT * FROM leden ORDER BY gebruikersnaam ASC");
                echo'<select name="member_id">';
                while($user = mysql_fetch_assoc($sql)){
                    echo'<option value="'.$user['member_id'].'">'.htmlspecialchars($user['gebruikersnaam']).'</option>';
                }
                echo'</select>';
            ?>
        </td>
    </tr>
    <tr>
        <td>Credits</td>
        <td><select name="som"><option value="af">Eraf</option><option value="bij" selected="selected">Erbij</option></select></td>
    </tr>
    <tr>
            </select>
        </td>
    </tr>
    <tr>
        <td>Aantal:</td>
        <td><input type="text" name="aantal" value="200"></td>
    </tr>
    <tr>
        <td> </td>
        <td><input type="submit" name="toevoegen" value="Verzend"></td>
    </tr>
</table>
</form>

</div>

Blijkbaar komt één van die statussen niet overeen, of mist er een initialisatie van de sessies met: session_start();

Verder zie ik een GROTE klassieke fout in dit rechtensysteem doordat je de statussen in de sessies opslaat. Deze kunnen dus niet zomaar direct ingetrokken worden, en vervallen dus pas als de browser af wordt gesloten.

Het beste is om de vanuit de database te controleren welk recht iemand heeft, en daar de controle op baseren. Het zou erg vervelend zijn dat je een iemand (bijv. een 'rotte appel') in je team hebt, die zijn werk nog kan doen nadat jij de rechten intrekt.

Verder wil ik graag zeggen dat de oude mysql_*()-functies zullen verdwijnen op termijn. Er wordt aangeraden om MySQLi of PDO te gebruiken.
ja dit systeem is niet door mij zelf gebouwd door vriend van me en die is er mee gestopt en toen moest ik het verder overnemen
De boodschap is misleidend denk ik, het if-statement begint toch echt met

if ([color=#ff0000]$_SESSION['admin'][/color] || ...).

Deze code is redelijk brak. De manier waarop wordt vastgesteld met wat voor type gebruiker je te maken hebt zou ik anders aanpakken.

Daarnaast:
- mysql_.... functies
- statische HTML echo'en

Meh :/.

EDIT: En zoals Aar aangeeft zul je eerst een sessie moeten starten/voortzetten met de functie session_start(). Dit doe je bij voorkeur aan het begin van de opbouw van een pagina, nog voordat er output is verstuurd (dus idealiter voor enige !DOCTYPE declaratie).
Ikzelf zou het roer omgooien, en kijken naar een RBAC-systeem. Je kijkt dan naar wie 'wat' mag doen, en niet naar wat 'wie' mag doen.
Ik weet niet of je het kan, maar zoals onze Aar al aangeeft is het handig om met een RBAC te werken, hierdoor kan je per administrator instellen wie wat kan doen. Zo een systeem inbouwen is niet lastig, je moet het alleen even kunnen.

Succes!

Reageren