Restricted pagina's voor admin

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Loescinda Boersma

Loescinda Boersma

18/08/2015 13:55:49
Quote Anchor link
Hoi,

Ik probeer wat aan te passen in mijn loginscript maar lukt niet helemaal. Het login script werkt perfect maar ik wil dat er bepaalde links alleen zichtbaar zijn als iemand met de 'role' admin is ingelogd. Ik weet eigenlijk niet waar ik moet beginnen, zou iemand mij opweg kunnen helpen? Ik ben helaas nog een beginner met PHP.

Login
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
<?php
    require('db.php');
    session_start();
    // If form submitted, insert values into the database.
    if (isset($_POST['username'])){
        $username = $_POST['username'];
        $password = $_POST['password'];
        $username = stripslashes($username);
        $username = mysql_real_escape_string($username);
        $password = stripslashes($password);
        $password = mysql_real_escape_string($password);
    //Checking is user existing in the database or not
        $query = "SELECT * FROM `klanten` WHERE username='$username' and password='".md5($password)."'";
        $result = mysql_query($query) or die(mysql_error());
        $rows = mysql_num_rows($result);
        if($rows==1){
            $_SESSION['username'] = $username;
            header("Location: index.php"); // Redirect user to index.php
            }else{
                echo "<div class='form'><h3>Username/password is incorrect.</h3><br/>Click here to <a href='login.php'>Login</a></div>";
                }
    }
else{
?>


Auth
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
session_start();
if(!isset($_SESSION["username"])){
header("Location: login.php");
exit(); }
?>
 
PHP hulp

PHP hulp

18/05/2024 09:06:44
 
Thomas van den Heuvel

Thomas van den Heuvel

18/08/2015 14:06:42
Quote Anchor link
De netste manier zou waarschijnlijk het aanmaken van een user object zijn, die je elke page-access vult vanuit de database op grond van een user id in je sessie.

De snelste manier zou waarschijnlijk het toevoegen van deze rol(len) aan je sessie zijn, waar je op controleert op een soortgelijke wijze als je in "Auth" doet.

In dit laatste geval liggen je rechten/rollen vast gedurende je sessie. Als je deze tussentijds verandert worden deze pas effectief als je opnieuw inlogt.

Als je nieuwe functionaliteit schrijft: gebruik MySQLi of PDO, maar geen mysql_functies meer. Deze gaan op niet al te lange termijn voorgoed verdwijnen.
 
- Ariën  -
Beheerder

- Ariën -

18/08/2015 14:09:25
Quote Anchor link
Waar en hoe defineer je die rollen? Is het een veld in de usertable die aangeeft of iemand admin is?

Verder nog wat opmerkingen:
- De MySQL-functies zijn verouderd, gebruik MySQLi of PDO
- md5() is verouderd om wachtwoorden te crypten. Gebruik liever password_verify en password_hash()
- Een password hoef je niet te escapen met mysql_real_escape_string. Uit het resultaat kan toch geen SQL-injection voortkomen.
- or die() is geen goede afhandeling. Niemand gaat dood als je iets fout doet. Zorg gewoon voor een goede afhandeling met if-else of exceptions als je met classes werkt.
Gewijzigd op 18/08/2015 14:10:15 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

18/08/2015 14:18:05
Quote Anchor link
Quote:
- Een password hoef je niet te escapen met mysql_real_escape_string. Uit het resultaat kan toch geen SQL-injection voortkomen.

Het kan handiger zijn om alle strings te escapen en numerieke waarden te filteren.

Anders moet je je elke keer afvragen als je een niet ge-escapete string ziet of dit:
- vergeten is
- bewust niet gedaan is

Het lijkt mij dan eenvoudiger om deze (wellicht ten overvloede) altijd te escapen.
 



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.