Min cookie finns men kan inte läsas av vare sig PHP eller Javascript, varför?

Tråden skapades och har fått 9 svar. Det senaste inlägget skrevs .
1

Tjena,
Nu blir jag snart tokig om jag inte får rätsida på det här. Jag har ett PHP-script på en sajt som jag jobbar med som sätter två cookies med:

setcookie("enkaka", "blabla", time()+3600);
setcookie("annankaka", "blabla", time()+3600);

Jag kan se att dessa cookies finns på plats när jag kollar mina Cookies i Mozilla Firefox, alltså finns de ju där eller hur?
Men detta till trots så kan jag inte läsa dem med vare sig PHP eller Javascript.
Jag försöker med PHP med:

if(isset($_COOKIE['enkaka']){
echo("enkaka=".$_COOKIE['enkaka']);
}else{
echo("ingen kaka");
}

men får ingen output, alltså PHP fattar inte att cookien finns.
Om jag försöker kolla cookien med Javascript med:

function getCookie(name)
{
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}else
begin += 2;
var end = document.cookie.indexOf(";", begin);
if (end == -1)
end = dc.length;
return unescape(dc.substring(begin + prefix.length, end));
}
alert(getCookie("enkaka"));

så funkar inte det heller, utan jag får "null" i alert-boxen.
Men hela tiden så kan jag läsa cookien inne i Privacy-inställningarna i Mozilla Firefox. Är det någon som kan se vad det är som inte stämmer? Jag blir nämligen snart tokig och skjuter vilt omkring mig.
Jag kör för övrigt Apache (vilken version är jag inte helt hundra på men den som följde med OS X) och PHP 4.3.11 på OS X 10.3.9.

Är kakan satt till någon speciell domän eller till någon speciell mapp?

Nej, inte för närvarande. Den var det först men jag tog bort det när jag felsökte strulet innan.
Förresten så upptäckte jag nu att inte heller Session-variabler fungerar. Jag sätter dem precis som vanligt med PHP men de skapas aldrig verkar det som. Det verkar ju som någon sorts rättighetsproblem då va?

  • Medlem
  • 2006-01-02 11:27

Du är med på att cookies (även Session) måste skickas innan någon som helst annan data skickas till webbläsaren? Inte ens whitespaces får gå ut innan cookien skickas.

Jadå, visst är jag det. Jag har jobbat med Sessions och Cookies hur mycket som helst. Det är just därför som detta förbryllar mig så mycket. Scripten som jag använder är nämligen så gott som identiska kopior av saker som redan finns på flera andra sajter jag gjort och där funkar de utmärkt. Därför misstänker jag naturligtvis att det har med min utvecklingsmiljö att göra, alltså att någonting i Apaches eller PHPs conf-filer som inte stämmer. Det är första gången jag utvecklar med webservern, etc. snurrande på en Mac dock.

Problemet är löst. Glöm att jag sa nåt och tack för er tid

Hej, jag väcker denna tråden för att jag har precis samma problem nu och kan inte hitta något svar.

Av någon konstig anledning så ser jag enbart en av två kakor när jag använder javascriptet document.cookie.

Kakan som inte syns har ett namn som börjar på en punkt och "expires at end of session".

  • Medlem
  • Mölndal
  • 2007-05-29 22:59

Punkt i början låter lurigt, men jag känner inte till att det skulle påverka en cookie. Har du möjlighet att döpa om den?

Det är inte så att du använder MS-produkter och har satt flaggan HttpOnly? Isf syns den inte från JavaScript.

  • Medlem
  • Mölndal
  • 2007-05-30 09:22
Ursprungligen av memark:

Det är inte så att du använder MS-produkter och har satt flaggan HttpOnly? Isf syns den inte från JavaScript.

Notera att detta alltså bara gäller i just IE. (Det är ett steg i deras nuskavigöraensäkerwebbläsare-satsning.)

Jag har testat runt lite och upptäckt att punkten åtminstonde stör ut PHPs cookiefunktioner. Men den skall inte påverka javascript (jag har testat med en annan kaka).

Hursomhelst... för att krångla till det lite så har jag genom att testa lite olika webbläsare och utföra javascriptet via dom märkt att felet endast uppstår i Internet explorer! I safari och Firefox så får jag snyggt upp båda kakorna i en alertbox, men i IE så får jag bara upp den ena.

Mycket märkligt!

1
Bevaka tråden