Versio

Login-systeem, wil niet werken.

Overzicht Reageren

Koen Muismat

Koen Muismat

02/01/2010 11:40:00
Quote Anchor link
Hoi mensen, Milo van dit forum heeft me al enorm geholpen, maar ik vrees dat ik er niet uitkom. Mijn site blijft me continue redirecten naar logout.php waar alle sessions gedelete worden. Dit terwijl alles het vanmorgen nog deed.. dus het komt door iets wat ik heb gedaan=P

Hieronder de code van de verschillende paginas.

login.php
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
67
68
69
70
71
72
73
74
75
<?php
// De Sessies starten
session_start();

// Database connectie maken
include('config.php');

// Als er op submit is gedrukt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    // Als er een gebruikersnaam is ingevult
    if(isset($_POST['gebruikersnaam']))
    {

        // Als er een wachtwoord is ingevult
        if(isset($_POST['wachtwoord']))
        {

            // De gebruikersnaam / wachtwoord combinatie uit de database halen
            $sql = mysql_query("SELECT
                                    id,
                                    gebruikersnaam,
                                    wachtwoord
                                FROM
                                    members
                                WHERE
                                    gebruikersnaam = '"
.mysql_real_escape_string($_POST['gebruikersnaam'])."'
                                AND
                                    wachtwoord = '"
.mysql_real_escape_string(md5($_POST['wachtwoord']))."'
                                "
);
                                
            // Als de query succesvol uitgevoerd is
            if($sql)
            {

                // Als er gebruikers zijn met deze combi
                if(mysql_num_rows($sql) > 0)
                {

                    // $rec aanmaken
                    $rec = mysql_fetch_assoc($sql);
                    
                    // De sessie zetten
                    $_SESSION['login'] = $rec['status'];
                    header('Location: vervolg.php');
                    
                }

                // Anders
                else
                {
                    // De gebruikersnaam wachtwoord combi bestaad niet
                    echo 'De ingevoerde gebruikersnaam en wachtwoord combinatie is bij ons niet bekend.';
                }
            }

            // Anders
            else
            {
                // De fout van de query opvangen
                echo 'Er is een fout opgetreden in de query: <br />';
                echo mysql_error();
            }
        }

        // Anders
        else
        {
            // Er is geen wachtwoord ingevult
            echo 'U bent vergeten uw wachtwoord in te vullen';
        }
    }

    // Anders
    else
    {
        // Er is geen gebruikersnaam ingevult
        echo 'U bent vergeten uw gebruikersnaam in te vullen';
    }
}

// Anders
else
{?>
*HTML pagina hier*
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php }?>


vervolg.php:

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
<?php
session_start();
include('config.php');

// Als je ingelogt bent.
if(isset($_SESSION['login']))
{

    // Je gegevens uit db halen
    $sql = mysql_query("SELECT * FROM members WHERE status = '".intval($_SESSION['login'])."'");

    // Als query gelukt is
    if($sql)
    {

        // Als er items zijn
        if(mysql_num_rows($sql) > 0)
        {

            // $rec aanmaken
            $rec = mysql_fetch_assoc($sql);
            
            // Als status 3 is
            if($rec['login'] == 3)
            {

                echo '3. Dit word je admin pannel dinges...';
                include('Register.php');
            }

            // Als status 2 is
            elseif($rec['login'] == 2)
            {

                echo '2. Dit word de persoonlijke pagina';
                include('locked_2.php');
            }

            // Anders
            else
            {
                echo '1. Dit word de persoonlijke pagina';
                include('logout.php');
            }
        }

        // Anders
        else
        {
            // Je moet inloggen
            echo 'U moet ingelogt zijn om deze pagina te bekijken.';
            include('logout.php');
        }
    }

    // Anders
    else
    {
        // Error opvangen
        echo 'Er is een fout opgetreden met de query: <br />';
        echo mysql_error();
        include('logout.php');
    }
}

// Anders
else
{
    echo 'U moet ingelogt zijn om deze pagina te bekijken.';
    include('logout.php');
}

?>


locked_2.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(!isset($_SESSION['login']))
{

    echo 'U moet ingelogt zijn om deze pagina te bekijken';
}

elseif(($_SESSION['login']) != 2){
    print_r($_SESSION);
}

else{
?>
*html pagina*
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}
?>


logout.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
session_unset(); // alle variabelen vrijgeven
session_destroy(); // sessie afsluiten
?>


Database opbouw:
databasenaam: server
1 tabel: members
in die tabel staan 6 kolommen:
- id
- gebruikersnaam
-wachtwoord
- email
-naam
-status


Heeft iemand een idee? :)

Bedankt voor ieder antwoord!

Groetjes

Simolokid
 
PHP hulp

PHP hulp

25/05/2012 08:27:35
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
- SanThe -

- SanThe -

02/01/2010 12:00:00
Quote Anchor link
Dit is op zich erg knap gedaan.
$_SESSION['login'] = $rec['status'];
Je vult de session met iets dat je NIET hebt opgehaald met de query.

Edit: Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Koen Muismat

Koen Muismat

02/01/2010 12:39:00
Quote Anchor link
Ik heb inmiddels de query aangepast, dat ook status wordt opgehaald. Toch blijf ik met het probleem dat ik geredirect wordt.

Nu even boven elke pagina die error reporting code zetten en kijken wat het effect is; - had weinig effect. Ik had alle errors al zichtbaar blijkbaar.

Misschien toch is een overzichtje maken met hoe elke pagina in elkaar zit.. scheelt wat werk met debuggen =P.

Login etc. doet het weer, ik moest simpelweg de query aanpassen.

In iedergeval bedankt, ik ga even kijken of ik het nu verder kan beveiligen tegen navigatie-aanvallen =P (zelf naar 'beveiligde-paginanaam'.php gaan zegmaar ).

Groetjes!
 
- SanThe -

- SanThe -

02/01/2010 12:55:00
Quote Anchor link
Als je inlogt stop jij de status in de session.
Ik neem aan dat er meerdere users dezelfde status zullen hebben.
Dan gaat men naar vervolg.php.
Daar kijk je of de status in de database staat.
Dat kan dus een heel andere user zijn.
Allemaal niet erg logisch en betrouwbaar.
 
Koen Muismat

Koen Muismat

02/01/2010 16:15:00
Quote Anchor link
Technisch gezien, als ik zorg dat het bestandje niet zichtbaar te lezen is (mod_rewrite schijnt dat te zijn ) kan ik het allemaal namen geven als'n3j2k' voor bv. vervolg.php, kan de persoon er zoiezo nooit opkomen dat de pagina zo heet =P.

Heb net even de rest van mijn website in orde gebracht, login-schermpje ook nu bovenin op elke pagina, alleen nu werkt mijn 'hoofd' -account niet meer.. >.> 't is ook altijd wat =P

We gaan vrolijk verder, er zullen vast nog veel meer problemen komen. In iedergeval bedankt voor het antwoord, zal ik zeker wat mee doen, idd niet erg veilig namelijk.
 
Milo

Milo

02/01/2010 17:30:00
Quote Anchor link
Hey, je hebt iets veranderd waar ik niet zo blij mee ben :P:P je zet nu in login een status terwijl daar de gebruikers id in hoort :P:P
 
Milo

Milo

02/01/2010 17:53:00
Quote Anchor link
Hey, je hebt iets veranderd waar ik niet zo blij mee ben :P:P je zet nu in login een status terwijl daar de gebruikers id in hoort :P:P
 



Overzicht Reageren