Sessie of (mijn) script fout??

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bart Scheltinga

Bart Scheltinga

29/01/2009 16:00:00
Quote Anchor link
Ik zal eerst de situatie schetsen:

Ik heb een website gemaakt met een cms systeem waardoor iedere gebruiker 1 tabblad van de site kan beheren.

Er word dus ingelogt en er word dan een sessie weggeschreven met o.a. gebruikernaam/userlevel. Als iemand dus wat wilt aanpassen kan dat alleen aan de tabel gelijknamig aan zijn of haar gebruikersnaam. ook bepaalde opties zijn pas beschikbaar indien het een correct userlevel staat ingesteld.
Dit werkt normaal gesproken ook goed.
Alleen komt het af en toe op eens voor dat er een menu wegvalt en dat ik opeens ingelogd lijkt te zijn onder een andere naam. ik dus alleen bij de links van mijn buurman/vrouw...erg raar lijkt mij, hoe kan er nou opeens een waarde veranderen aan de $_SESSION, tegelijk ben ik dus voor de helft uitgelogd. ik kan het niet anders meer omschrijven.

ik heb ook met de hosting gebeld maar die weten ook niet wat het kan zijn, ze hebben wel windows hosting en het zou eventueel te maken kunnen hebben volgens hun dat ik alles gemaakt heb in apache. (???)

Ik hoop dat iemand mijn probleem snapt en als er vragen zijn dan beantwoord ik die uiteraard graag.

Indien er code gewenst is dan graag duidelijk welke...

Alvast bedankt,

Groeten Bart

------------------------
dit is mijn authenticatie, hier staat ook dat menu'tje in die tevoorschijnkomt als je bent ingelogd, die dus zomaar opeens foetsie is...

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

//als er gegevens ingevult zijn vergelijk deze dan met de database

if (isset($_POST['gebruiker'], $_POST['wachtwoord'])){
    //mysql
    $sql = "SELECT * FROM user WHERE USERNAME = " . "'" . $_POST['gebruiker'] . "'";
    $resultaat = mysql_query($sql);        
    if (mysql_num_rows($resultaat) > 0){
        $rij = mysql_fetch_array($resultaat);
        $gebruiker = $_POST['gebruiker'];
        $wachtwoord = md5($_POST['wachtwoord']);
        $username = $rij['USERNAME'];
        $password = md5($rij['PASSWORD']);
        $level = $rij['LEVEL'];
        if ($gebruiker == $username){
            if ($wachtwoord == $password){
                if ($level == "0"){
                    $_SESSION['gebruiker'] = $username;
                    $_SESSION['wachtwoord'] = $password;
                    $_SESSION['level'] = $level;
                }

                if ($level == "1"){
                    $_SESSION['gebruiker'] = $username;
                    $_SESSION['wachtwoord'] = $password;
                    $_SESSION['level'] = $level;
                }
            }
else { echo "<p><b>Uw wachtwoord is niet correct</b></p>"; }
        }
else {  echo "<p><b>Gebruikersnaam is niet correct</b></p>"; }        
    }
else {  echo "<p><b>Gebruiker niet gevonden</b></p>"; }
}


//als er een sessie aanwezig is controleer deze dan

if (isset($_SESSION['gebruiker'])){
    //mysql
    $sql = "SELECT * FROM user WHERE USERNAME = " . "'" . $_SESSION['gebruiker'] . "'";
    $resultaat = mysql_query($sql);        
    if (mysql_num_rows($resultaat) > 0){
        $rij = mysql_fetch_array($resultaat);
        $level = $_SESSION['level'];
        if($_SESSION['gebruiker'] == $rij['USERNAME']){
            if($_SESSION['wachtwoord'] == md5($rij['PASSWORD'])){
                echo "<div id=\"uitloggen\">";
                echo "&nbsp;<a href=\"http://www.wijkwaard.nl\">[www.wijkwaard.nl]</a>";
                echo "&nbsp;<a href=\"ibs.php\">[hoofdmenu]</a>";
                echo "&nbsp;<a href=\"uitloggen.php\">[uitloggen]</a>";
                echo "</div>";
                if ($level == "0"){            
                    echo "<div id=\"status_rechts\">Uw bent ingelogd als:<b> \"" . $_SESSION['gebruiker'] . "\"</b>";
                    echo " met gebruikers rechten.</div>";
                }

                if ($level == "1"){            
                    echo "<div id=\"status_rechts\">Uw bent ingelogd als:<b> \"" . $_SESSION['gebruiker'] . "\"</b>";
                    echo " met administratie rechten.</div>";
                }

                echo "</div>";
            }
        }
    }
}
else { require ('login_form.php'); }

?>


en hier komen bijvoorbeeld de links te staan welke hij/zij kan verwijderen/bewerken:

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
<?php
if($_SESSION['level'] == "1"){
                if (isset($_GET['sorteer'])){
                    if ($_GET['sorteer'] == "categorie_az") {
                        $sql = "SELECT * FROM categorie JOIN titel ON titel.cat_id = categorie.cat_id ORDER BY `CAT_NAAM` ASC";
                    }

                    if ($_GET['sorteer'] == "categorie_za") {
                        $sql = "SELECT * FROM categorie JOIN titel ON titel.cat_id = categorie.cat_id ORDER BY `CAT_NAAM` DESC";
                    }
                
                    if ($_GET['sorteer'] == "naam_az") {
                        $sql = "SELECT * FROM categorie JOIN titel ON titel.cat_id = categorie.cat_id ORDER BY `TITEL_TEKST` ASC";
                    }

                    if ($_GET['sorteer'] == "naam_za") {
                        $sql = "SELECT * FROM categorie JOIN titel ON titel.cat_id = categorie.cat_id ORDER BY `TITEL_TEKST` DESC";
                    }

                    if ($_GET['sorteer'] == "naam_new") {
                        $sql = "SELECT * FROM categorie JOIN titel ON titel.cat_id = categorie.cat_id ORDER BY `TITEL_ID` DESC";
                    }

                    if ($_GET['sorteer'] == "naam_old") {
                        $sql = "SELECT * FROM categorie JOIN titel ON titel.cat_id = categorie.cat_id ORDER BY `TITEL_ID` ASC";
                    }                                                                                        
                }

                else {
                    $sql = "SELECT * FROM categorie JOIN titel ON titel.cat_id = categorie.cat_id ORDER BY `CAT_NAAM` ASC";
                }
            }


            if($_SESSION['level'] == "0"){
                $presql = mysql_query("SELECT * FROM categorie WHERE CAT_NAAM='". $_SESSION['gebruiker'] ."'");
                $prerij = mysql_fetch_array($presql);
            
                if (isset($_GET['sorteer'])){
                    if ($_GET['sorteer'] == "az") {
                        $sql = "SELECT * FROM `titel` WHERE CAT_ID='". $prerij['CAT_ID'] ."' ORDER BY `TITEL_TEKST` ASC";
                    }

                    if ($_GET['sorteer'] == "za") {
                        $sql = "SELECT * FROM `titel` WHERE CAT_ID='". $prerij['CAT_ID'] ."' ORDER BY `TITEL_TEKST` DESC";
                    }

                    if ($_GET['sorteer'] == "new") {
                        $sql = "SELECT * FROM `titel` WHERE CAT_ID='". $prerij['CAT_ID'] ."' ORDER BY `TITEL_ID` DESC";
                    }

                    if ($_GET['sorteer'] == "old") {
                        $sql = "SELECT * FROM `titel` WHERE CAT_ID='". $prerij['CAT_ID'] ."' ORDER BY `TITEL_ID` ASC";
                    }                                                
                }

                else {
                        $sql = "SELECT * FROM `titel` WHERE CAT_ID='". $prerij['CAT_ID'] ."' ORDER BY `TITEL_ID` DESC";
                    
                  
                }
            }

            $resultaat = mysql_query($sql);
            while ($rij = mysql_fetch_array($resultaat)) {
                        
                echo "<tr id=\"ibs_row_dynamic\">";
                echo "<td id=\"\">". $rij['TITEL_ID'] ."</td>";
                echo "<td id=\"\">". $rij['TITEL_TEKST'] ."</td>";
                if($_SESSION['level'] == "1"){
                    echo "<td id=\"\">". $rij['CAT_NAAM'] ."</td>";
                }

                echo "<td id=\"\"><a href=\"ibs_links.php?actie=bewerken&id=" . $rij['TITEL_ID'] . "\" >bewerken</a></td>";
                echo "<td id=\"\"><a href=\"ibs_links.php?actie=verwijder&id=" . $rij['TITEL_ID'] . "\" onClick=\"return bevestiging(4)\">verwijder</a></td>";
                echo "</tr>";
            }

            ?>
Gewijzigd op 01/01/1970 01:00:00 door Bart Scheltinga
 
PHP hulp

PHP hulp

25/11/2024 04:20:50
 

29/01/2009 16:07:00
Quote Anchor link
Bart schreef op 29.01.2009 16:00:
ik heb ook met de hosting gebeld maar die weten ook niet wat het kan zijn, ze hebben wel windows hosting en het zou eventueel te maken kunnen hebben volgens hun dat ik alles gemaakt heb in apache. (???)

Ik heb geen id, zou het zo ook niet weten, post eens wat relevante code zou ik zeggen. Maar wat je daar zegt lijkt me sterk. Apache draait ook gewoon onder Windows, verder zou er in princiepe heel weinig verschil moeten zijn tussen php op linux en windows.
 
Bart Scheltinga

Bart Scheltinga

29/01/2009 18:16:00
Quote Anchor link
Karl schreef op 29.01.2009 16:07:
Bart schreef op 29.01.2009 16:00:
ik heb ook met de hosting gebeld maar die weten ook niet wat het kan zijn, ze hebben wel windows hosting en het zou eventueel te maken kunnen hebben volgens hun dat ik alles gemaakt heb in apache. (???)

Ik heb geen id, zou het zo ook niet weten, post eens wat relevante code zou ik zeggen. Maar wat je daar zegt lijkt me sterk. Apache draait ook gewoon onder Windows, verder zou er in princiepe heel weinig verschil moeten zijn tussen php op linux en windows.


Tja...dat leek mij ook al sterk, maar op dit moment kan je me alles aanpraten..
 
Bart Scheltinga

Bart Scheltinga

30/01/2009 19:16:00
Quote Anchor link
niet allemaal tegelijk...:-)
 
- SanThe -

- SanThe -

30/01/2009 19:34:00
Quote Anchor link
Ik zou eerst je script eens goed gaan nalopen. Er zitten heel wat overbodige regels in. Verder zijn je query's sql-injection lek. Er zitten backtics in de query's. Die horen daar niet. Je copiëert nutteloos variabelen. Bij een echo is het veel slimmer om enkele quotes te gebruiken zodat je de html-dubbele quotes niet hoeft te escapen. Oftewel, je hebt nog zat te doen. Misschien lost het jouw probleem ook nog op.

Edit:
Volgens mij doet dit precies hetzelfde als jouw eerste scriptje.
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
<?php
session_start();
if (isset($_POST['gebruiker'], $_POST['wachtwoord']))
{

    $sql = "SELECT *
            FROM user
            WHERE USERNAME = '"
. mysql_real_escape_string($_POST['gebruiker']) . "'
            AND PASSWORD = MD5('"
. mysql_real_escape_string($_POST['wachtwoord']) . "'";
    $resultaat = mysql_query($sql);
    if ($resultaat)
    {

        if(mysql_num_rows($resultaat) == 1)
        {

            $rij = mysql_fetch_array($resultaat);
            $_SESSION['gebruiker'] = $rij['USERNAME'];
            $_SESSION['level'] = $rij['LEVEL'];
        }

        else
        {
            session_destroy();
            echo '<p><b>Uw inloggegevens zijn niet correct</b></p>';
        }
    }

    else
    {
        echo 'Query Error'; // Zelf iets moois van maken
    }
}


if (isset($_SESSION['gebruiker']))
{

    echo '<div id="uitloggen">
            &nbsp;<a href="http://www.wijkwaard.nl">[www.wijkwaard.nl]</a>
            &nbsp;<a href="ibs.php">[hoofdmenu]</a>
            &nbsp;<a href="uitloggen.php">[uitloggen]</a>
        </div>'
;
    switch ($_SESSION['level'])
    {
        case
1:        $tekst = ' met administratierechten.';
        break;
        default :
    $tekst = ' met gebruikersrechten.';
        break;
    }

    echo '<div id="status_rechts">U bent ingelogd als:<b> "' . $_SESSION['gebruiker'] . '"</b>' . $tekst . '</div>';
}

else
{
    require ('login_form.php');
}

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



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.