[PHP] Session veranderd zomaar van waarde?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb een functie geschreven die, als de user zijn gegevens in een inlog schermpje heeft ingevuld, dus $_POST variabelen checkt met de database, en als ze kloppen ze weg te schrijven naar $_SESSION variabelen..
de volgende reload worden de $_SESSION veriabelen geraadpleegd, en blijf ik ingelogged, maar nadat de inlog check is geweest veranderd de inhoud van mijn $_SESSION['user'] variabele.. in mijn geval wordt Kage Aage?
dit is de code van mijn inlog en password functie's:
PHP:
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
  function LoggedIn() {
   /* check of er cookies of sessions aanwezig zijn met de login data, zoja controleer ze met de db */
    if(isset($_POST['user']) && isset($_POST['pass'])) {
        $pass = MD5($_POST['pass']); // het ingevoerde wachtwoord is nog niet MD5 gecodeerd, dit wordt nu gedaan
        if(CheckPassword($_POST['user'],$pass)) {      
            if(isset($_POST['cookie'])) {
                setcookie("user",$_POST['user'],time()+2592000);
                setcookie("pass",$pass,time()+2592000);
            } else {
                $_SESSION['user'] = $_POST['user'];
                $_SESSION['pass'] = $pass;
            }
            $logged_in = TRUE;
        } else {
        $logged_in = FALSE; // check password onjuist
        }
    } elseif(isset($_COOKIE['user']) && isset($_COOKIE['pass'])) {
        $logged_in = CheckPassword($_COOKIE['user'],$_COOKIE['pass']);
    } elseif(isset($_SESSION['user']) && isset($_SESSION['pass'])) {
        $logged_in = CheckPassword($_SESSION['user'],$_SESSION['pass']);
   /* indien er geen cookies of sessions zijn check $_POST variabelen, aanwezig > controleren > registeren als cookie of session */
    } else {
        $logged_in = FALSE; // cookie, session en post check failed > false
    }
    return $logged_in;
 }


 
 function CheckPassword($nick,$pw) {
   $query = mysql_query("SELECT * FROM kage_user WHERE nick = '$nick' AND pw = '$pw'");
   if(MYSQL_NUM_ROWS($query) < 1) { 
     /* indien geen resultaten return FALSE */
     global $login_error;
     $login_error = "Wachtwoord en/of user-name klopt niet<br>";
     return FALSE; 
   } else {
     /* wel resultaten > haal user data uit db en zet het in een global array, return TRUE */
     $row = MYSQL_FETCH_ARRAY($query);
     $user = array();
     global $user;
     $user['name'] = $row['nick'] ;
     $user['id'] = $row['id'];
     $user['rechten'] = parse_rechten($row['rechten']);
     return TRUE;
   }
 }

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
en als je niet reload, maar naar een andere pagina klikt?
en check je niet toevallig gewoon $user, waardoor ie bijv. de waarde van $_POST['user'] ofzo aanneemt. Er is vrij weinig over te zeggen als je niet meer code geeft

Acties:
  • 0 Henk 'm!

Verwijderd

Geloof niet dat wat er fout gaat in de code zit die je gepost hebt alhoewel het misschien niet helemaal doet wat je denkt.
/* indien er geen cookies of sessions zijn check $_POST variabelen, aanwezig > controleren > registeren als cookie of session */
Want dat die je precies andersom.. je kijkt steeds eerst naar de postvars. Begrijp ook niet waarom bij elke request checkpassword gebruikt. Kun je niet beter die global user array die je (vult in checkpassword(..)) in de sessie zetten en daarna controlleren if die geset is? Tis maar een gedachte.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 25 november 2003 @ 22:55:
Geloof niet dat wat er fout gaat in de code zit die je gepost hebt alhoewel het misschien niet helemaal doet wat je denkt.


[...]


Want dat die je precies andersom.. je kijkt steeds eerst naar de postvars. Begrijp ook niet waarom bij elke request checkpassword gebruikt. Kun je niet beter die global user array die je (vult in checkpassword(..)) in de sessie zetten en daarna controlleren if die geset is? Tis maar een gedachte.
ik zat zelf te denken van dat kan de gebruiker de cookie aanpassen naar een andere username, maar dat is natuurlijk op te vangen door de cookie een keer te controleren en dan verder te gaan met een sessie.. ik zal m eens over nieuw doen :)