Telkens Je bent geen admin. als beheerder

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Morris Jacobs

Morris Jacobs

13/10/2015 16:18:32
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
   <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>

- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 13/10/2015 16:23:27 door - Ariën -
 
PHP hulp

PHP hulp

21/11/2024 19:50:04
 
- Ariën  -
Beheerder

- Ariën -

13/10/2015 16:26:01
Quote Anchor link
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.
Gewijzigd op 13/10/2015 16:28:34 door - Ariën -
 
Morris Jacobs

Morris Jacobs

13/10/2015 16:28:17
Quote Anchor link
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
 
Thomas van den Heuvel

Thomas van den Heuvel

13/10/2015 16:29:00
Quote Anchor link
De boodschap is misleidend denk ik, het if-statement begint toch echt met

if ($_SESSION['admin'] || ...).

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).
Gewijzigd op 13/10/2015 16:31:27 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

13/10/2015 16:30:50
Quote Anchor link
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.
Gewijzigd op 13/10/2015 16:32:57 door - Ariën -
 
Koen Hollander

Koen Hollander

13/10/2015 22:19:09
Quote Anchor link
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!
 



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.