[PHP] $_SESSION problemen met getallen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 22-08 22:03
Ik probeer om na het inloggen de gebruiker een "level" mee te geven die de gebruiker bepaalde machtigingen verleent. Allereerst is de gebruiker op de default pagina waar hij/zij kan inloggen. Dit inloggen is een form die verwijst naar login.php.

Login.php
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
// sessie beginnen
session_start(); 

// include-file bevat connectie gegevens naar server en database
include ("_connect.php");

// controleer of pagina correct is aangeroepen.
if (!empty($_POST)) {

    $query = "SELECT username, password, level FROM user WHERE username = '".$_POST['username']."'";
    $result = mysql_query($query) or die("Error: " . mysql_error());

    if(@mysql_num_rows($result) > 0){
        while ($row = mysql_fetch_array($result)){
            if ($_POST['password'] != $row['password']) {
                die('Het wachtwoord klopt niet, probeer opnieuw.');
            } else {
                $username = $row['username'];
                $level = $row['level'];
                // sla deze vervolgens op in een sessie
                $_SESSION['username'] = $username;
                $_SESSION['level'] = $level;
                // stuur de gebruiker terug naar de default pagina
                header('location:default.php');
            }
        }
    } else {
        die('De gebruikersnaam bestaat niet');
    } 
} else {
  // pagina was incorrect aangeroepen
  header('location:default.php');
}
?>


Wanneer de gebruiker terug is op default.php en ik echo $_SESSION['level'] dan staat hier ineens AMGG i.p.v. een cijfer. Het is mij geheel onduidelijk waarom dat woord "AMGG" er ineens staat. In de database staat dit overigens nergens. Tevens heb ik getest met een ander cijfer (3, 2, 1) ook hierbij geen succes.

Als iemand een oplossing heeft bijvoorbaat dank!

R B) b

[ Voor 17% gewijzigd door _Rob op 31-03-2004 22:42 ]

Webdeveloping... -counts to 10- Sigh...


Acties:
  • 0 Henk 'm!

  • flexje
  • Registratie: September 2001
  • Laatst online: 12:34

flexje

got-father

Klinkt wel wazig, en wat als je $level nou is echo'ed?

"Try not to become a man of success but rather to become a man of value..."


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Echo eerst de query es, daarna de waardes die je eruit krijgt. Daar zit je probleem denk ik, lijkt me standaard debug werk.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 22-08 22:03
echo($_SESSION['level']); gaat op de login.php goed. Echter op de default.php krijg ik dat rare antwoord "AMGG".


Even nog wat toevoegende informatie. Dit heb ik gedaan op de default.php

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
<?php
session_start();

// Declaratie Database connectie
include("_connect.php");

// Level declaratie identificeert de gebruiker
// ------------------
// 0 = Adminitrator
// 1 = Moderator
// 2 = Gebruiker
// 3 = Guest
// ------------------
// Gebruik $level[$nr]

$level[0] = 'Administrator';
$level[1] = 'Moderator';
$level[2] = 'Gebruiker';
$level[3] = 'Guest';

if (!isset($_SESSION['level'])){
    $nr = 3;
} else {
    $nr = $_SESSION['level'];
}

// Toon alle subjects i.c.m. de user level
if (!isset($_GET['sub'])){
    $sqlsub = "SELECT * FROM subject WHERE level <= '". $nr . "' ORDER BY subject DESC"; 
    
    // de geopende recordset $sql komt in de variabele $result terecht.
    $result = mysql_query($sqlsub) or die (mysql_error());
} else {
    $sqlsub = "SELECT subject FROM subject WHERE level <= '". $nr . "' AND subjectId = '" . $_GET['sub'] . "'";

    // Pinned topics
    $sqltoppin = "SELECT * FROM topic WHERE subjectId = " . $_GET['sub'] . " AND pinned = '1' ORDER BY topic DESC";
    $sqltop = "SELECT * FROM topic WHERE subjectId = " . $_GET['sub'] . " AND pinned = 0 ORDER BY topicId ASC";
    
    // de geopende recordset $sql komt in de variabele $result terecht.
    $result = mysql_query($sqlsub) or die (mysql_error());
    $resulttoppin = mysql_query($sqltoppin) or die (mysql_error());
    $resulttop = mysql_query($sqltop) or die (mysql_error());
}
?>
Ik heb voor de zekerheid ook de query's erbij gedaan (dit is overigens mijn eerste php project, heb hiervoor met asp en asp.net gewerkt)

[ Voor 15% gewijzigd door _Rob op 31-03-2004 22:55 ]

Webdeveloping... -counts to 10- Sigh...


Acties:
  • 0 Henk 'm!

  • Vae Victis
  • Registratie: April 2001
  • Laatst online: 07-09 06:15

Vae Victis

Dark Lord of the Sith

$level[0] = 'Administrator';
$level[1] = 'Moderator';
$level[2] = 'Gebruiker';
$level[3] = 'Guest';
Daar komt de AMGG vandaan. Waar zou de fout zitten? ;)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:52

crisp

Devver

Pixelated

als register_globals aanstaat dan is $level == $_SESSION['level']
oplossing: zet register_globals uit of gebruik in default.php een andere variabele naam ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • RTBravo
  • Registratie: April 2000
  • Laatst online: 10-09 19:00

RTBravo

Verkopen jullie ook jojn?

Je zet blijkbaar al die waarden in een string en pakt overal de eerste letter die je aangeeft met level 1 ofsow?

Acties:
  • 0 Henk 'm!

  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 22-08 22:03
:X Oops. Ik ben geloof ik niet meer zo wakker. Ik ga even die hele variabele veranderen. Bedankt voor de reacties.

Webdeveloping... -counts to 10- Sigh...

Pagina: 1