[php] cookies opgehaalde waarde anders dan gesette waarde

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 04-09 16:39
Omdat de search niet echt veel oplevert m.b.t mijn specefieke probleem, hier mijn post.

In een login systeem doe ik het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
function set_user_cookie($user_id,$user_naam,$pass_hash) 
{
    global $domain;
   // test 
   $user_id = "1";
   $user_naam = "test";
   $pass_hash = sha1("test");

    $info = base64_encode($user_id.":".$user_naam.":".$pass_hash);
    setcookie("user","$info",time()+2592000,"/","$domain",0);
}


Als je print($info); doet dan zie je ook gewoon een base64_encoded string.

Vervolgens doe ik
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function cookiedecode($user) 
{
    global $dbi;
    $user = base64_decode($user);
    $cookie = explode(":", $user);
    if($cookie)
    {
        $result = sql_query("SELECT pass_hash FROM users WHERE name='$cookie[1]'", $dbi);
        list($pass) = sql_fetch_row($result, $dbi);
        if ($cookie[2] == $pass && $pass != "") 
        {
            return $cookie;
        } 
        else 
        {
            del_cookie("user");
            unset($cookie);
            unset($user);
        }
    }
}



Maar als ik print($cookie); doe krijg ik dit:
$cookie[0] == "leeg" // echt leeg, geen waarde
$cookie[1] == "®"
$cookie[2] == "-"

Dus wat klopt hier niet?

edit:


Heb net even naar de inhoud van het cookie gekeken en dat ziet er goed uit
[code]
user
MTp0ZXN0OjA5OGY2YmNkNDYyMWQzNzNjYWRlNGU4MzI2MjdiNGY2
127.0.0.1/
1024
937272192
29583148
1070683552
29577113
*
[/code]

Dus er zal ergens iets fout zitten in cookiedecode($user);

[ Voor 27% gewijzigd door Suepahfly op 22-07-2003 11:18 ]


Acties:
  • 0 Henk 'm!

  • The_Eternal
  • Registratie: Oktober 2001
  • Laatst online: 26-08 16:59
als je $info echoed en bij decode die $user (voor decode). krijg je dan hetzelfde? :)
en is de waarde van $user na de decode hetzelfde als die van de te encoden string?

dat zou ik eerst even bekijken :)

Uhm... ja


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Heeft het misschien te maken met:
Uit: http://www.php.net/manual/en/function.setcookie.php
Cookies will not become visible until the next loading of a page that the cookie should be visible for. To test if a cookie was successfully set, check for the cookie on a next loading page before the cookie expires. Expire time is set via the expire parameter. A nice way to debug the existence of cookies is by simply calling print_r($_COOKIE);.

Acties:
  • 0 Henk 'm!

  • The_Eternal
  • Registratie: Oktober 2001
  • Laatst online: 26-08 16:59
osiris: hoezo hebben ze dan uberhaupt een waarde? :)
en na een refresh zou het wel goed weergegeven moeten zijn.

Uhm... ja


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Waarom wil je je cookie uberhaupt bae64_encoden? Je kan de waarden ook in een array stoppen en die vervolgens serializen.

En in je set_cookie hoef je $info niet tussen quotes te zetten. :)

Sundown Circus


Acties:
  • 0 Henk 'm!

  • The_Eternal
  • Registratie: Oktober 2001
  • Laatst online: 26-08 16:59
ik dacht zelfs dat je een array rechtstreeks in een cookie kon opslaan (stond volgens mij ook op php.net voorgedaan hoe dat ging) moest op een beetje andere manier dan er rechtstreeks een array aan op te geven.

En idd, base64_encode is niet nuttig behalve natuurlijk het 'verstoppen' van de gegevens. maja da's nou niet echt een veiliger manier ;)

(ik zou zowiezo NOOIT password gerelateerde informatie in een cookie gooien (zelfs niet een hash van het password) sessions zijn wat dat betreft veel veiliger.
als iemand eenmaal een password (hash) weet kan hij theoretisch altijd inloggen.. met een sessie id alleen maar tijdelijk (tot de sessie afloopt / afgebroken wordt)

[ Voor 3% gewijzigd door The_Eternal op 22-07-2003 16:25 . Reden: verduidelijkt ]

Uhm... ja


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 04-09 16:39
Het probleem is inmiddels opgelost. Ik heb de variable $user er helemaal uitgegooid

[ Voor 41% gewijzigd door Suepahfly op 23-07-2003 09:47 ]

Pagina: 1