PHP læsning af $_COOKIE - værdi indeholdes 2 gange

Tags:    php cookie

<< < 12 > >>
Hej,

Jeg er i gang med at arbejde Quakenet PHP tutorial igennem. Jeg kalder en funktion som tjekker brugerid ved hjælp af en funktion.

Mit problem er at cookiens indholder dens værdi 2 gange.

Hvis jeg udgiver cookiens inhold i filen "index.php" indholder den værdien "3". Kalder jeg funktionen og udgiver cookiens værdi inde fra funktionen, så indeholder cookien "33". Der samme sker med cookien der indeholder adgangskoden. Værdien er der to gange.

Cookien bliver ikke ændret af PHP-koden. Jeg har oprettet login, sat cookien. Lukket browseren. Genstartet browseren direkte med den side hvor der tjekkes om cookien er sat. Det fejler selvfølgelig fordi cookien indeholder samme værdi 2 gange.

Er der nogen her, der har oplevet dette før?

På forhånd tak.

Hilsen,
Hajo



Indlæg senest redigeret d. 11.08.2013 21:39 af Bruger #17681
14 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Det er ikke noget der bare sker, uden at der er lavet en fejl. :o) Måske du skriver $_COOKIE['navn'] .= '3'; eller $_COOKIE['navn'] = $_COOKIE['navn'] . '3';

Du må vise noget kode, så kan vi nok hjælpe dig, mere præcist.



Indlæg senest redigeret d. 11.08.2013 22:03 af Bruger #10216
Jeg vil også mene at det ikke er noget der bare sker. Men...

Koden til funktionen kommer her

Fold kodeboks ind/udPHP kode 

Funktionen kaldes på følgende måde:

if (!$userid = getUserID($db))
{
return NOT_LOGGED_IN;
}

Hvis jeg laver en "echo $_COOKIE['userid']" inden funktionskaldet, er værdien "3". Laver jeg en en "echo" af samme variable i funktionen er værdien "33".

Jeg bruger XAMP og har prøvet det i både Chrome og Internet-explorer.



Indlæg senest redigeret d. 12.08.2013 21:50 af Bruger #17681
Prøv at lav et var_dump($_COOKIE['userid']); hvilket vil give dig indblik i præcis hvad din cookie indeholder. Jeg tænker at du umiddelbart får outputtet din cookie to gange.



Nicklas,

Det kunne du have ret i.

Før kaldet til funktionen viser var_dump

string(1) "3"

I funktionen lige før "if (!isset... )" er resultatet

string(1) "3" string(1) "3"

Kan du eller en anden komme med et bud hvorfor det sker?




Laver du en echo eller print forinden noget af det kode du har smækket ind her?
Du kan lige prøve at smække dit fulde script ind, og så kan vi lige få lavet et clean up på det. Ellers er det bare at du lige tager et tjek efter echo og print, og sørger for kun at have et enkelt output. Umiddelbart fejler din variabel intet, fejlen ligger blot i dit output.

Edit:
Læste lige dit indlæg igen, og var dump og echo skal selvfølgelig kun sættes én gang, ellers får du selvfølgelig duplicates



Indlæg senest redigeret d. 12.08.2013 19:15 af Bruger #17260
Ja, det sættes kun én gang. Jeg har testet før funktionskaldet. Derefter flyttet "var_dump" ind i funktionen. Hver kørsel kun 1 "var_dump".

Index.php ----- start ------

Fold kodeboks ind/udPHP kode 


Index.php ----- slut ------

I den her linie (linje 46) angiver jeg at det er "pm.php" scriptet skal læse.

$ret = include $datafile['pm'];

pm.php ----- start -----

Fold kodeboks ind/udPHP kode 


pm.php ---- slut ----

Funktionen "getUserID($db)" er beskrevet i en tidligere post (12.08.13 06:07).



Indlæg senest redigeret d. 12.08.2013 21:49 af Bruger #17681
Du bliver lige nødt til at smide din aktuelle source når du rent faktisk outputter, før jeg kan se hvor problemet ligger :)



Hele projektet ligger i en rar.fil og kan hentes på her.

Det starter med index.php og kalder filen pmmsgsys/pm.php. Funktionen getUserId($db) ligger i inc/functions.php.

På forhånd tak.

/hajo



Det er umiddelbart ikke smart at smække sine passwords online :)

Laver du dine var_dump og lignende i /index.php eller hvorledes? Prøv at smække det fulde script op når du har forsøgt at outputte COOKIE['userid'] - altså kun scriptet du gør det i.



Det har du fukdstændig ret i. Men koden er tilfældigt genereret til dette turtorial. Derfor gør det ikke noget :)

Jeg har prøvet var_dump i index.php - linje 30.

Fold kodeboks ind/udPHP kode 


og i selve getUserID() funktionen - linje 12. Én af gangen.

Fold kodeboks ind/udPHP kode 





Indlæg senest redigeret d. 15.08.2013 16:56 af Bruger #17681
<< < 12 > >>
t