[PHP] Session werken niet!

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hi

Ik heb sinds een maandje mijn server OS vernieuwd naar windows 2000 waar ik een apache en mysql opdraai. Nu heb ik een website die met sessions werkte!

Ik heb php version 4.3.1 draaien.

Het probleem is als volgt:

Als ik een session registreer wordt de session file wel aangemaakt in de sessiontemp. Echter als ik dan een variable wil registreren en dan check of deze dan ook werkelijk geregistreed is is dat niet het geval.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
session_start();

$query = "SELECT * FROM user WHERE user = '$user' AND password '$md5password'";
          
$result = mysql_query($query);
$row = mysql_fetch_array($result);

if(mysql_num_rows($result) == 1)
 {
   $valid_user = $userid;
   session_register("valid_user");
 }

if (session_is_registered("valid_user"))
{
  echo "valid user";
}
else
{
  echo "geen var valid_user te vinden";
}


Screenie van me session uit php.ini
Afbeeldingslocatie: http://members.lycos.nl/mrmensink/output/images/session.jpg

A.u.b help me hier mee want ik heb echt alles bij mijn weten geprobeerd en ik krijg het niet werkend.

[ Voor 6% gewijzigd door Verwijderd op 06-04-2003 18:12 ]


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
al kennis gemaakt met de term Superglobals? Zo niet, ga er dan wat over lezen.

verder staat hier: http://www.php.net/manual...session-is-registered.php (gewoon op php.net) waarom het niet werkt.

[ Voor 46% gewijzigd door marty op 06-04-2003 17:49 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

ik mis een call naar 'session_start' ?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
marty schreef op 06 April 2003 @ 17:48:
al kennis gemaakt met de term Superglobals? Zo niet, ga er dan wat over lezen.

verder staat hier: http://www.php.net/manual...session-is-registered.php (gewoon op php.net) waarom het niet werkt.
Ben bekent met superglobals en daarmee werkt het ook niet. Heb je link door gelezen(kende hem al wel) misschien hab ik iets over het hoofd gezien. Heb het nog een keer voor de zekerheid uit geprobeerd wat daar stond maar, het werkt nog niet!!!
ACM schreef op 06 April 2003 @ 17:52:
ik mis een call naar 'session_start' ?
8)7 Sorry vergeten hier bij te zetten staat wel boven aan het document!!

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

doe es:
$result = mysql_query($query) or die(user_error("Error in query: $query : " . mysql_error()));

ipv je huidige select.
gaat die select dus wel goed? Want dat controleer je verder helemaal niet.

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 06 April 2003 @ 18:12:
[...]


Ben bekent met superglobals en daarmee werkt het ook niet. Heb je link door gelezen(kende hem al wel) misschien hab ik iets over het hoofd gezien. Heb het nog een keer voor de zekerheid uit geprobeerd wat daar stond maar, het werkt nog niet!!!
Wat heb je uitgeprobeerd dan? dit?:
Note: If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, use isset() to check a variable is registered in $_SESSION.
want dat hoor je namelijk te doen. Al dat soort functies, net als session_unregister(), etc. behoren tot de verleden tijd met de php versie die je nu draait

btw: session_register moet je dus ook niet meer gebruiken!!!

[ Voor 6% gewijzigd door marty op 06-04-2003 18:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

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

$md5password = md5($userpassword);

$query = "SELECT 
           *
          FROM 
          user 
          WHERE user = '$user' 
          AND 
          password = '$md5password'";
          
$result = mysql_query($query);
$row = mysql_fetch_array($result);

 if(mysql_num_rows($result) == 1)
    {
     $valid_user = $row["userid"];
     $_SESSION["valid_user"] = $valid_user;
    }

if (isset($_SESSION["valid_user"]))
{
   echo "valid user"; 
} 
else 
{ 
  echo "geen var valid_user te vinden"; 
}
?>


Je bedoelt zo??? Werkt ook niet !!!! Hij zet gewoon niks in de session file!!

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
je code klopt ook niet helemaal. Deze gaat er van uit dat er altijd maar 1 user wordt gevonden en controleert verder helemaal niet of er misschien 0 of meerdere rows gevonden worden. En dan is het een beetje voorbarig om aan de hand van wat er in de sessie zit te concluderen of er 1 valid user is.
je gebruikt bijvoorbeeld ook $user en $userpassword in je query - maar als register_globals op off staat, en user komt uit een formulier (wat ik vermoed), dan heeft die dus geen waarde en levert je query niets op
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
session_start();

$md5password = md5($userpassword); /* gebruik hier evt $_POST['userpassword'] */

$query = "SELECT 
           *
          FROM 
          user 
          WHERE user = '".$user."' /* gebruik hier dus evt $_POST['user'] */
          AND 
          password = '".$md5password."'";
          
if (!$result = mysql_query($query))
{
    echo "geen geldige query";
}
else
{
    if (mysql_num_rows($result) == 0)
    {
        echo "combinatie username / password is ongeldig<br>\n";
    }
    elseif (mysql_num_rows($result) > 1)
    {
        echo "Er is iets mis met je database design<br>\n";
    }
    elseif (mysql_num_rows($result) == 1)
    {
        $row = mysql_fetch_assoc($result);
        $_SESSION['valid_user'] = $row['userid'];
    }
}

if (isset($_SESSION['valid_user']))
{
    echo "valid user"; 
} 
else 
{ 
    echo "geen var valid_user te vinden"; 
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
*schopt zich zelf* 8)7 Compleet vergeten register_global vars aan te zetten.

Kerel hartstikke bedankt voor je help! Als je een vrouw was had ik je een kus gegeven :P

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 07 April 2003 @ 00:20:
*schopt zich zelf* 8)7 Compleet vergeten register_global vars aan te zetten.

Kerel hartstikke bedankt voor je help! Als je een vrouw was had ik je een kus gegeven :P
Gauw weer uitzetten en doen wat marty ook suggereerd; namelijk $_POST['user'] en $_POST['userpassword'] gebruiken. Die setting staat niet voor niets default op off :)

Intentionally left blank

Pagina: 1