Jag vet inte vad jag gör för fel... har säkert missat något enkelt (jag e lite trött) men jag börjar bli smått galen på detta.
Jag kan inte sätta cookies... de registreras helt enkelt inte. Detta är den kod jag använder för att sätta cookien (det funkar på en annan sida jag har):
if($_POST['autologin']==1){
$year = date("Y")+1;
setcookie("mm_yid","666",strtotime("1 January ".$year));
setcookie("mm_name","banan",strtotime("1 January ".$year));
}
Någon som ser något galet?
MatteMedlem sedan aug. 20002 975 inlägg Möjlig orsak.
setcookie() är en header, och som alla headers måste den sättas före något skickas till webbläsaren.
Du får alltså inte ha output före setcookie. Som output räknas HTML-kod, echo eller print. Även mellanslag eller radbrytning före PHP-taggen räknas som output.
Detta gäller även för inkluderade filer. Har du en inkluderad fil före setcookie så är det noga att det inte finns några dolda tecken typ mellanslag eller radbrytning efter den avslutande PHP-taggen.
Nope... inget sånt. Så här ser hela sidan ut:
<?PHP
session_start();
if(isset($_POST['login'])){
$_SESSION['yid'] = "banan";
$_SESSION['uName'] = "snus";
if($_POST['autologin']==1){
$year = date("Y")+1;
setcookie("mm_yid","666",strtotime("1 January ".$year));
setcookie("mm_name","banan",strtotime("1 January ".$year));
}
header("location: ../");
exit;
}
header("location: ../?loc=error");
exit;
?>
MatteMedlem sedan aug. 20002 975 inlägg Vilken webserver kör du, och vilken version av PHP ?
I någon version av IIS finns det en bug som gör att man inte kan sätta en cookie på samma sida som man skickar en header("Location").
Om du byter ut dina header() mot länkar, fungerar det då ?
Det borde inte vara det som är problemet för att jag testar även scriptet på mitt webhotell som kör linuxserver med den senaste stabila versionen av php... jaja... jag får pilla vidare så hör jag av mig om jag löser det.
Ig firstir ikke.
Den kommer in i:
if($_POST['autologin']==1){
$year = date("Y")+1;
setcookie("mm_yid","666",strtotime("1 January ".$year));
setcookie("mm_name","banan",strtotime("1 January ".$year));
}
Men den sätter ingen kaka... jag får spel.
MatteMedlem sedan aug. 20002 975 inlägg Sätt på visning av allt vad felmeddelande och notiser där finns, så kanske du kan få någon hjälp på vägen.
Lägg följande överst i skriptet:
<?php
error_reporting(E_ALL);
ini_set("Display_errors", "1");
session_start();
Ok... nu sätter den en kaka... (på min server i alla fall) vet itne varför, kanske gjorde det tidigare.
Jag använder nu detta för att kolla om man har satt cookies och då skall den varna när man loggar ut:
<?PHP
if(isset($_COOKIE['mm_yid']) AND isset($_COOKIE['mm_name'])){
?>
<script type="text/javascript" language="javascript">
function CheckLogout(){
return confirm("Du har valt att logga ut. Detta kommer radera dina cookies.\n\nVill du ändå logga ut?");
}
</script>
<form action="actions/logout.php" method="post" name="userlogout" onsubmit="return CheckLogout();">
<?PHP
}
else{
?>
<form action="actions/logout.php" method="post" name="userlogout">
<?PHP
}
?>
Och kakan finns men den skriver ut alternativ 2... kan det vara så att kakan bara är tillgänglig i det direktivet den satts?
MatteMedlem sedan aug. 20002 975 inlägg Cookien är bara giltig i den katalog, eller underkataloger till den katalog där cookien sätts.
Är inte detta webroten, och du vill ha cookien giltig på hela webbplatsen, så får du lägga till parametern "/".
Tackar tackar... nu har jag lärt mig något nytt :D