Edit script Beveiliging

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 volgende »

Jelle -

Jelle -

18/05/2006 10:54:00
Quote Anchor link
Debug eens

zet dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
echo "***."$_SESSION['rank']."***<br />";
onder
include("config.php");
 
PHP hulp

PHP hulp

26/12/2024 03:09:53
 
Crazyme

Crazyme

18/05/2006 11:03:00
Quote Anchor link
ik haat witte pagina's :P

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
include("config.php");

echo "***."$_SESSION['rank']."***<br />";

if($_SESSION['rank'] == "admin"){
echo "lol";
}
else{
echo "fun";
}
    ?>
Pagina = wit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
include("config.php");

echo "***."$_SESSION['rank']."***<br />";

?>
Pagina = wit
 
Jelle -

Jelle -

18/05/2006 11:09:00
Quote Anchor link
error reporting zette
zet dit bovenaan je pagina:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting( E_ALL );
ini_set("display_errors", 1);
?>
 
Jelle -

Jelle -

18/05/2006 11:16:00
Quote Anchor link
Hieronder zie je hoe mijn 'ranken/opties' systeem werkt.
misschien heb je er wat aan ;-)

Uitleg van het idee
Als eerste geef je elke optie die je als gebruiker kan doen een id
Vb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Standaart als je member bent:  0
Replies plaatsen:              1
kan replies edite:             2
kan users deleten:             3
alle andere admin opties:      4


Nu gaan we het juiste getal uitrekenen
dat doen we door: 2^(het id)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Members pagina bekijken:       2^0 = 1
Replies plaatsen:              2^1 = 2
kan replies edite:             2^2 = 4
kan users deleten:             2^3 = 8
alle andere admin opties:      2^4 = 16


nu geef je een gebruiker een getal met wat hij allemaal mag,
Bv
Als je wilt dat iemand deze opties kan,
- Member (getal 1)
- Kan users deleten (getal 8)
- Alle andere admin opties (getal 16)
dan geef je deze persoon het getal 25 (1+8+16 = 25)

Volgende stap:
Om te controleren of je gebruiker 'Member' opties heeft (voor bv het bekijken van een pagina)
doe je dit:
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
<?php
// Je functies enzo includen die de gegevens ophalen van je member
// In dit voorbeeld staat het 'getal/je rang opties' in $user['rang']

// nu kijken of de gebruiker een 'member' status heeft

if (($user['rang'] & 1) == 1)
{

  // jeej je mag de pagina zien
  echo "Hey hey<br />";
}

else
{
  // Niet de juiste rang
  echo "Doei doei<br />";
}

?>


Als je wilt kijken of deze persoon users kan deleten doe je dit:
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
<?php
// Je functies enzo includen die de gegevens ophalen van je member
// In dit voorbeeld staat het 'getal/je rang opties' in $user['rang']

// nu kijken of de gebruiker een 'member' status heeft

if (($user['rang'] & 8) == 8)
{

  // Joepie we mogen users deleten
  echo "Ga je gang :-)<br />";
}

else
{
  // Niet de juiste rang
  echo "U bent de zwakste schakel; totziens.<br />";
}

?>


Eerder deze uitleg had ik rang 25 (1+8+16 = 25)
dus ik mag beide dingen zien.
had ik rang 17 gehad (1+17) dan had ik geen users mogen deleten

ik hoop dat deze uitleg duidelijk is en dat je er wat aan hebt,
persoonlijk vind ik dit toch 1 van de betere 'rang systemenen' aangezien je oneindig veel opties kan maken. en omdat je over elke gebruike tot in de details kan laten besilissen wat hij wel of niet kan.
Gewijzigd op 01/01/1970 01:00:00 door Jelle -
 
Crazyme

Crazyme

18/05/2006 13:27:00
Quote Anchor link
hey bedankt voor je uitlegt.

ik heb nu dit script

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
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

include("config.php");

if ($id ['rank'] & 1) == 1)
{


  echo "Hey hey<br />";
}

else
{

  echo "Doei doei<br />";
}

?>


en in de db de user rank 4 gegeven en krijg nu een error hier volgend me inlog script maby ligt het hieraan:

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
<?php

include("config.php");

if(!isset($_POST['submit']))
    {

        echo ('<form action='.$_SERVER['PHP_SELF'].' method="post">
        Gebruikersnaam:<br><input type="text" name="gebruikersnaam" size="25"><br>
        Wachtwoord:<br><input type="password" name="wachtwoord" size="25"><br>
        <br><input type="submit" value="submit" name="submit"><br>
        </form>'
);
    }

    else
    {
        $user = $_REQUEST['gebruikersnaam'];
        $pass = $_REQUEST['wachtwoord'];
        $user = strip_tags($user);
        $pass = strip_tags($pass);
        $user = str_replace(" ","",$user);
        $pass = str_replace(" ","",$pass);
        $user = str_replace("%20","",$user);
        $pass = str_replace("%20","",$pass);
        $user = addslashes($user);
        $pass = addslashes($pass);
        $pass = md5($pass);
        $request = "SELECT * FROM users WHERE wachtwoord='".$pass."' AND gebruikersnaam='".$user."'";
        $results = mysql_query( $request ) or die ( mysql_error() );
        if(mysql_num_rows($results))
            {

                $getid = "SELECT * FROM users WHERE gebruikersnaam='".$user."' LIMIT 1";
                $getidexec = mysql_query($getid) or die (mysql_error() );
                while($r=mysql_fetch_array($getidexec))
                    {

                        $id = $r['id'];
                        $rank = $r['rank'];
                    }

                $_SESSION['id'] = $id;
                $_SESSION['rank'] = $rank;
                echo 'User Logged in.<META HTTP-EQUIV=Refresh CONTENT="2; URL=editcontent.php">';
            }

            else
            {
                echo 'Username and password do not match.
                 <META HTTP-EQUIV=Refresh CONTENT="2"; URL="'
.$_SERVER['PHP_SELF'].'">';
                exit();
            }
    }

?>


hier mij db

CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`gebruikersnaam` varchar(32) NOT NULL default '',
`wachtwoord` varchar(32) NOT NULL default '',
`email` text NOT NULL,
`rank` int(2) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


ik snap het echt niet meer...
Gewijzigd op 01/01/1970 01:00:00 door Crazyme
 
Jelle -

Jelle -

18/05/2006 13:34:00
Quote Anchor link
wat geeft je error weer?
 
Jelle -

Jelle -

18/05/2006 13:34:00
Quote Anchor link
$id ['rank']

moet zijn
$id['rank']

geen spatie ertussen
edit:
sorry voor dubbele post.

edit2
ik ben slordig geweest met de haakjes

($id ['rank'] & 1) == 1)

moet zijn

(($id ['rank'] & 1) == 1)
Gewijzigd op 01/01/1970 01:00:00 door Jelle -
 
Crazyme

Crazyme

18/05/2006 13:42:00
Quote Anchor link
jordy:
wat geeft je error weer?


ik heb de spatie weg gehaalt hielp niet veel. de fout melding is nu

de error was toen Notice: Undefined variable: user /www/htdocs/tijdelijk/editcontent.php on line 46
Doei doei
?>

script is nu

if (($user['rank'] & 1) == 1)
{
// jeej je mag de pagina zien
echo "Hey hey<br />";
}
else
{
// Niet de juiste rang
echo "Doei doei<br />";
}

hij kent de variables niet zegt tie maar variable id kent hij ook niet... het login script staat in een post hiervoor..
 
Jelle -

Jelle -

18/05/2006 13:47:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if(($rank & 1) == 1)
{

// jeej je mag de pagina zien
echo "Hey hey<br />";
}

else
{
// Niet de juiste rang
echo "Doei doei<br />";
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Jelle -
 
Crazyme

Crazyme

18/05/2006 13:53:00
Quote Anchor link
en we hebben weer een nieuw foutmelding :P

Notice: Undefined variable: rank in /www/htdocs/wwwinfrc/http/tijdelijk/editcontent.php on line 46
Doei doei
?>


script is:

if(($rank & 1) == 1)
{
// jeej je mag de pagina zien
echo "Hey hey<br />";
}
else
{
// Niet de juiste rang
echo "Doei doei<br />";
}

alvast heel erg bedankt voor je hulp!!!
 
Jelle -

Jelle -

18/05/2006 14:06:00
Quote Anchor link
ik neem aan dat je niet ingelogt bent?
want hij weet niet van het bestaan van $rank.
terwijl als je legaal bent ingelogt wordt $rank aangemaakt.

zet dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if(isset($_SESSION['rank']))
  $rank = $_SESSION['rank'];
else
  $rank = 0;
?>

ergens in je config.php

nu zeg je standaart dat de gebruiker helemaal geen rechten heeft. als deze zich inlogt (of al ingelogt heeft en dat staat nog in een sessie)
dan krijgt hij zijn rank.
 
Crazyme

Crazyme

18/05/2006 14:12:00
Quote Anchor link
ok we zijn verder het werkt nu alleen als ik de rank van de user 4 maak dan laat hij doei doei zien heeft de user met rank 4 geen toegang tot het gene wat user met rank 1 wel kan zien?
Gewijzigd op 01/01/1970 01:00:00 door Crazyme
 
Jelle -

Jelle -

18/05/2006 14:17:00
Quote Anchor link
inderdaad

een user met rank 4 kan alleen hetgeen bij optie 4 zien. als je wilt dat de user optie 4 en 1 kan. moet je hem rank 5 (1+4) geven.

hieronder nogmaals me voorbeeldje
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Members pagina bekijken:       2^0 = 1
Replies plaatsen:              2^1 = 2
kan replies edite:             2^2 = 4
kan users deleten:             2^3 = 8
alle andere admin opties:      2^4 = 16

(een rank die alles kan zou dus 31 zijn (1+2+4+8+16)
rank 16 (16) kan alleen
'Alle andere admin opties'
terwijl iemand met rank 15 (1+2+4+8) deze dingen kan
'Replies plaatsen'
'kan replies edite'
'kan users deleten'
je kan natuurlijk helemaal zelf bepalen waar elke optie voor staat. dit is alleen een voorbeeldje.
je kan ook oneindig doorgaan.
Gewijzigd op 01/01/1970 01:00:00 door Jelle -
 
Crazyme

Crazyme

18/05/2006 14:21:00
Quote Anchor link
ok bedankt dat deel begrijp ik nu. Na het veranderen van de tekst die zichtbaar is werkt het niet meer... het script is nu

if(($rank & 1) == 1)
{
// jeej je mag de pagina zien
echo "Welkom<br />";
}
else
{
// Niet de juiste rang
echo "U bent niet ingelogt!<br />";
}


en de user heeft rank 1 wat is het probleem?
 
Jelle -

Jelle -

18/05/2006 14:25:00
Quote Anchor link
- Wat is de waarde van rank
- Wat krijg je in beeld
- Wat is de fout

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
<?php

echo $rank."<br />"; // Waarde van rank laten zien

if(($rank & 1) == 1)
{

// jeej je mag de pagina zien
echo "Welkom<br />";
}

else
{
// Niet de juiste rang
echo "U bent niet ingelogt!<br />";
}

?>
 
Jelle -

Jelle -

18/05/2006 14:27:00
Quote Anchor link
Me school is uit. Ik moet nu naar huis dat kan je de komende 1 a 2 uur niet helpen.
Daarna zal ik je weer verder helpen.
misschien kom je er in de tussentijd zelf wel uit ;-)

succes!
 
Crazyme

Crazyme

18/05/2006 14:30:00
Quote Anchor link
waarde van de rank blijkt 1 te zijn dit wijst erop dat het login script dit niet doorgeeft??

huidige script:

error_reporting(E_ALL);
ini_set("display_errors", 1);

include("config.php");

if(isset($_SESSION['rank']))
$rank = $_SESSION['rank'];
else
$rank = 0;

echo $rank."<br />"; // Waarde van rank laten zien

if(($rank & 1) == 1)
{
// jeej je mag de pagina zien
echo "Welkom<br />";
}
else
{
// Niet de juiste rang
echo "U bent niet ingelogt!<br />";
}

login script:

include("config.php");

if(!isset($_POST['submit']))
{
echo ('<form action='.$_SERVER['PHP_SELF'].' method="post">
Gebruikersnaam:<br><input type="text" name="gebruikersnaam" size="25"><br>
Wachtwoord:<br><input type="password" name="wachtwoord" size="25"><br>
<br><input type="submit" value="submit" name="submit"><br>
</form>');
}
else
{
$user = $_REQUEST['gebruikersnaam'];
$pass = $_REQUEST['wachtwoord'];
$user = strip_tags($user);
$pass = strip_tags($pass);
$user = str_replace(" ","",$user);
$pass = str_replace(" ","",$pass);
$user = str_replace("%20","",$user);
$pass = str_replace("%20","",$pass);
$user = addslashes($user);
$pass = addslashes($pass);
$pass = md5($pass);
$request = "SELECT * FROM users_infraspecials WHERE wachtwoord='".$pass."' AND gebruikersnaam='".$user."'";
$results = mysql_query( $request ) or die ( mysql_error() );
if(mysql_num_rows($results))
{
$getid = "SELECT * FROM users_infraspecials WHERE gebruikersnaam='".$user."' LIMIT 1";
$getidexec = mysql_query($getid) or die (mysql_error() );
while($r=mysql_fetch_array($getidexec))
{
$id = $r['id'];
$rank = $r['rank'];
}
$_SESSION['id'] = $id;
$_SESSION['rank'] = $rank;
echo 'User Logged in.<META HTTP-EQUIV=Refresh CONTENT="2; URL=editcontent.php">';
}
else
{
echo 'Username and password do not match.
<META HTTP-EQUIV=Refresh CONTENT="2"; URL="'.$_SERVER['PHP_SELF'].'">';
exit();
}
}
 
Frank -

Frank -

18/05/2006 14:48:00
Quote Anchor link
Waarom ontbreken alle { en } ? Op die manier leer je nooit netjes scripten.
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
<?php
// Jouw versie
if(isset($_SESSION['rank']))
$rank = $_SESSION['rank'];
else
$rank = 0;

// of
if(isset($_SESSION['rank'])){
    $rank = $_SESSION['rank'];
}

else {
    $rank = 0;
}

?>

Verder is echo geen functie, daar horen dus geen ( en ) bij te staan. Het is tevens niet handig om de ene keer dubbele quotes in je php-code te gebruiken en de andere keer enkele. Er zit bij jou geen enkele logica in. Ik gebruik in php altijd enkele quotes, behalve om een query (die heb jij ook goed staan). In html moet je dubbele quotes gebruiken, daar heb je geen keuze in.
 
Crazyme

Crazyme

18/05/2006 14:59:00
Quote Anchor link
bedankt voor de tip!

het script werkt ondertussen en hij laat zien aan elke user wat hij moet laten zien.

er is echter nog 1 probleem er zitten natuurlijk nog andere functies in het script ik heb bijvoorbeeld de volgende link <a href="editcontent.php?mode=edit&id='.$r['id'].'">Edit</a> als je daarop drukt krijg je een edit gedeelte te zien je blijft in dezelfde pagina hij is echter de user vergeten en je moet weer opnieuw inloggen... het sluit de sessie ofzo.. hoe zorg ik ervoor dat de sessie open blijft?
 
Jelle -

Jelle -

18/05/2006 15:40:00
Quote Anchor link
@ Frank
Als je maar 1 ding hebt in een lus hoef je daar niet helemaal haakjes bij te zetten
Persoonlijk vind ik bij 1 optie het overzichtelijker om geen haakjes te plaatsen. als je goed met tabs werkt zie je alles in 1 opzicht. en het wordt daardoor niet rommelig met al die haakjes.

Voorbeeld:
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
<?php

// Met haakjes
if($getal == 1)
{

  echo "1";
}

elseif($getal == 2)
{

  echo "2";
}

elseif($getal == 3)
{

  echo "3";
}

elseif($getal == 4)
{

  echo "4";
}


// Of zonder haakjes
if($getal == 1)
  echo "1";
elseif($getal == 2)
  echo "2";
elseif($getal == 3)
  echo "3";
elseif($getal == 4)
  echo "4";

// In dit geval vind ik zonder haakjes overzichtelijker
// Let op: het is alleenmaar wat ik vind ;-)

?>


@ Crazyme
Goed dat het werkt (Y)

Zet
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
session_start();
?>

helemaal bovenin je config file.
 

Pagina: « vorige 1 2 3 4 volgende »



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.