[PHP] session variabele wordt niet meegestuurd

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Hallo,

Ik heb echt een vaag probleem. Ik heb een form die de variabele $gebruikersnaam aanmaakt. Op deze pagina open ik ook de <?session_start();?> functie.

Middels een GET action haal ik de code op die deze inlog functie laat werken.

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
<?php
include ("dbinfo.inc");

mysql_connect( "$hostname", "$username", "$password") or die ("mysql_connect Failed");
mysql_select_db("$database") or die ("mysql_select_db Failed");

if((!$gebruikersnaam) || (!$wachtwoord)){
    header("Location: index.php?menuvar=mwe&error=1");          
        exit();
}
    $query = mysql_query("SELECT * FROM tuser WHERE username='$gebruikersnaam'");
    
    if(mysql_num_rows($query) == "0") 
    { 
        header("Location: index.php?menuvar=mwe&error=2");
            exit();     
    } 
    
        else { 
            $row = mysql_fetch_array($query); 
            $dpassword = $row['password']; 
        
             if ($wachtwoord == $dpassword) 
            {                       
                //set session
                $_SESSION["us"] = "$gebruikersnaam"; 
                
                $query = mysql_query("UPDATE tuser SET ingelogd=1 WHERE username='$gebruikersnaam'");
                 header("Location: index.php?menuvar=cm");
                    exit();         
            } 
            else 
                header("Location: index.php?menuvar=mwe&error=3");
                    exit();                     
        }
?> 


Zoals je ziet maak ik in de sessie de variabele "us" met de waarde van de $gebruikersnaam aan. Die ik dan mee wil sturen naar de index.php?menuvar=cm.

In die code wil ik dan dus de $us gebruiken om bepaalde dingen aftehandelen. Maar het probleem is dat hij hem dan niet meer ziet.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
session_start(); 

include ("dbconnect.php");

if(!$us) 
{       
    echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php?menuvar=er&error=4\" target=\"_top\">";
}
else {
    $query = mysql_query("SELECT * FROM tuser WHERE username='$us'");       
//blablabla
?>

<tr><td height=\"5%\"><p>Een ogenblik geduld, u wordt doorgeschakeld...</P></td></tr>


Wat ik dus krijg als resultaat dat ik door wordt gelinkt naar:
index.php?menuvar=er&error=4 <-- betekent dus dat er geen $us is gevonden.

Ziet iemand wat ik fout doe?

Alvast bedankt

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

superglobals.

Doet iets met Cloud (MS/IBM)


  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Moet het niet zijn:

PHP:
1
2
3
if(!$_SESSION["us"] ) {
// yada
}

[ Voor 19% gewijzigd door Cavorka op 26-02-2004 12:40 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

PHP:
1
$us = $_SESSION['us'];


Dat moet je even voor de if zetten. Je moet de variabele $us weer opnieuw initialiseren als je op een nieuwe pagina komt. In dit geval dus met de waarde van de sessievariabele ['us'].

btw: In het bovenste script zie ik geen session_start()...

[ Voor 19% gewijzigd door mr_obb op 26-02-2004 13:08 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Ik mis ook een session_start() in je eerste script, tenzij die in de include staat.

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

NMe

Quia Ego Sic Dico.

offtopic:
Ik zie dat je je wachtwoorden niet gehasht opslaat in de database. Je kan naar mijn mening beter even de MD5 funtie eroverheen halen.

Verder gebruik je 2 soorten quotes ($dpassword = $row['password'];). Dat is geen handige manier van werken, je verwart jezelf zo na verloop van tijd heel erg. Let er dus liever op dat je maar 1 soort quotes gebruikt.

'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.


Verwijderd

Topicstarter
Bosmonster schreef op 26 februari 2004 @ 13:46:
Ik mis ook een session_start() in je eerste script, tenzij die in de include staat.
Ik haal mijn eerste script op met een GET action met een form waar ik de session_start() heb staan.

Verwijderd

En rename je "dbinfo.inc" bestand ff naar "dbinfo.php".
Als iemand nu dbinfo.inc intypt kan ie je bestand met wachtwoord zo downloaden...lijkt me niet echt handig ;)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op 26 februari 2004 @ 14:48:
[...]


Ik haal mijn eerste script op met een GET action met een form waar ik de session_start() heb staan.
Ja en?

session_start is niet (alleen) om de sessie ansich te starten, maar ook om hem aan het begin van je script beschikbaar te maken. Wil je sessie vars gebruiken in je script, dan zul je ze beschikbaar moeten maken met session_start().

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 26 februari 2004 @ 14:50:
En rename je "dbinfo.inc" bestand ff naar "dbinfo.php".
Als iemand nu dbinfo.inc intypt kan ie je bestand met wachtwoord zo downloaden...lijkt me niet echt handig ;)
.inc.php is een meer gebruikelijke "extensie", zo kun je toch je include file onderscheiden.

'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.


Verwijderd

Topicstarter
Janoz schreef op 26 februari 2004 @ 14:51:
[...]


Ja en?

session_start is niet (alleen) om de sessie ansich te starten, maar ook om hem aan het begin van je script beschikbaar te maken. Wil je sessie vars gebruiken in je script, dan zul je ze beschikbaar moeten maken met session_start().
Ow stom, ja bedankt man, dat was hem ;)

Verwijderd

Topicstarter
NMe84 schreef op 26 februari 2004 @ 13:54:
offtopic:
Ik zie dat je je wachtwoorden niet gehasht opslaat in de database. Je kan naar mijn mening beter even de MD5 funtie eroverheen halen.

Verder gebruik je 2 soorten quotes ($dpassword = $row['password'];). Dat is geen handige manier van werken, je verwart jezelf zo na verloop van tijd heel erg. Let er dus liever op dat je maar 1 soort quotes gebruikt.
Als ik de MD5 functie gebruik, dan kan ik toch bijvoorbeeld in een cms systeem niet aan een user laten zien wat zijn wachtwoord is, omdat deze dus dan anders is opgeslagen? Of zit ik nu verkeerd.

Verwijderd

Als ik de MD5 functie gebruik, dan kan ik toch bijvoorbeeld in een cms systeem niet aan een user laten zien wat zijn wachtwoord is, omdat deze dus dan anders is opgeslagen? Of zit ik nu verkeerd.
Je kan de user inderdaad het wachtwoord niet meer laten zien,
Om het wachtwoord te checken gebruik je dan ook (simpel gezegt):
md5(ingegeven wachtwoord) == (het md5 opgeslagen wachtwoord in de DB)

Een admin kan dan ook alleen maar een nieuw wachtwoord ingeven en hij kan dus niet het oude bekijken (wanneer bijvoorbeeld de user zijn wachtwoord kwijt is)

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Verwijderd schreef op 26 februari 2004 @ 15:14:
[...]


Als ik de MD5 functie gebruik, dan kan ik toch bijvoorbeeld in een cms systeem niet aan een user laten zien wat zijn wachtwoord is, omdat deze dus dan anders is opgeslagen? Of zit ik nu verkeerd.
Dat heb je correct, maar dan doe je het toch zoals ze hier op Tweakers.net doen, gewoon een nieuw wachtwoord sturen. Die kan de gebruiker dan wijzigen.

There's no place like 127.0.0.1


Verwijderd

Topicstarter
Ok, maar dan klopt het niet meer wat ik gedaan heb toch? Dat ik zeg maar de password die opgeslagen is mijn database naast de password leg die een user heeft ingetypt. En als die dan hetzelfde is dan gaat hij/zij door, en anders niet.

Die vergelijking gaat dan toch niet meer op?

Verwijderd

Verwijderd schreef op 26 februari 2004 @ 15:49:
Ok, maar dan klopt het niet meer wat ik gedaan heb toch? Dat ik zeg maar de password die opgeslagen is mijn database naast de password leg die een user heeft ingetypt. En als die dan hetzelfde is dan gaat hij/zij door, en anders niet.

Die vergelijking gaat dan toch niet meer op?
Jawel.
Nu vergelijk je
[ingevoerd: plaintext] met [opgeslagen: plaintext]

Als je over beide MD5() gooit krijg je:
[ingevoerd: MD5(plaintext)] met [opgeslagen MD5(plaintext)]

Waarom zou dit niet werken? Ik gebruik zelf ook md5() voor wachtwoorden.

Verwijderd

Topicstarter
ow ja, dacht verkeerd, maar bedankt
Pagina: 1