Avatar billede adis Nybegynder
22. februar 2007 - 21:29 Der er 15 kommentarer og
1 løsning

sætte cookies med varabel

hej... vil gerne med et link, som f.eks. index.php?lang=uk, sætte sprog til engelsk. Som så gemmes i cookies sprog. Det har jeg fået til at virke, men problemet er at man skal klikke 2 gange på dette link før det vil virke... :(

er der nogen der kan hjælpe?

ps.
har sat cookies sådan:
setcookie ("sprog", "$lang", 0);

og jeg kalder på den sådan:
include "lang/".$sprog.".php";
Avatar billede gentlebug Nybegynder
22. februar 2007 - 21:33 #1
jeg ved ikke hvad det skyldes, men du kan da bare første gang, når cookien sættes hente lang ud fra GET, da den jo også er taget derfra og sat i cookien.
Avatar billede challenge Praktikant
22. februar 2007 - 21:51 #2
prøv at fjerne " før og efter $lang...
Avatar billede jakobdo Ekspert
22. februar 2007 - 21:51 #3
Eller også kan du efter du har lavet setcookie(), så kan du lave:
header('Location: index.php?lang=uk');
exit();
Avatar billede jakobdo Ekspert
22. februar 2007 - 22:13 #4
Problemet er en cookie ikke kan sættes og læses i samme kald til en side.
Derfor med header() kalder du siden anden gang, og der kan den så læse siden som blev sat lige før.
Avatar billede adis Nybegynder
22. februar 2007 - 22:21 #5
:( ingen af de forslag vil virke
Avatar billede adis Nybegynder
22. februar 2007 - 22:27 #6
det med header() kan jeg slet ikke åbne siden :(
Avatar billede showsource Seniormester
23. februar 2007 - 08:16 #7
En lille "bøf" du kan bruge med setcookie, uden at reloade siden, ( Og sæt ALTID gerne en path på! )
<?php

setcookie ("sprog", $lang, (time()+5184000, "/"); // cookie skal vel gælde for længere tid end bare mens browser er åben? "/" er fra roden af domain

// bøffen .....
$_COOKIE["sprog"] = $lang;


if(isset($_COOKIE["sprog"])) {
............
}
Avatar billede showsource Seniormester
23. februar 2007 - 08:17 #8
Hov, mangler jo en ) i udregning af tid cookie skal gælde !!!
Avatar billede adis Nybegynder
23. februar 2007 - 08:47 #9
hej showsource

med denne del af koden så gemmer den sproget i alt for lang tid og vil ikke skifte til andet sprog... vid ikke om den måske skal så slettes på et eller anden måde før jeg skifter til andet sprog...

for da jer prøver at teste den, så skifter variabel $lang men cookie sprog forbliver min første valg, og selv om jeg prøvet i flere omgange at ændre den så forbliver cookie den samme...

<?php

setcookie ("sprog", $lang, (time()+5184000), "/"); // cookie skal vel gælde for længere tid end bare mens browser er åben? "/" er fra roden af domain

// bøffen .....
$_COOKIE["sprog"] = $lang;


if(isset($_COOKIE["sprog"])) {
............
}
Avatar billede jakobdo Ekspert
23. februar 2007 - 10:06 #10
Prøv følgende kode:

<?php
//http://www.eksperten.dk/spm/764199

$sLang = '';
$gLang = strtolower($_GET['lang']);
$aLang = array('se','uk','no','dk');

if(empty($gLang))
{
    if(isset($_COOKIE['sprog']))
    {
        $sLang = $_COOKIE['sprog'];
    }
    else
    {
        $sLang = 'dk';
        setcookie('sprog', $sLang, (time()+3600), '/');
    }
}
else
{
    if(!in_array($gLang, $aLang))
    {
        $sLang = 'dk';
    }
    else
    {
        $sLang = $gLang;
    }
    setcookie('sprog', $sLang, (time()+3600), '/');
}

echo 'Du har valgt f&oslash;lgende sprog: ' . $sLang . '<br />';
echo '<hr />';
$output = array();
foreach($aLang AS $lang)
{
    $output[] = '<a href="' . $_SERVER['PHP_SELF'] . '?lang=' . $lang . '">' . strtoupper($lang) . '</a>';
}
echo implode('&nbsp;|&nbsp;', $output);

?>
Avatar billede adis Nybegynder
23. februar 2007 - 11:43 #11
hej jakobdo

har på en måde fået det til at virke men nu får jeg vist en warning:

Warning: Cannot modify header information - headers already sent by (output started at /customers/palic.dk/palic.dk/httpd.www/test/test.php:9) in /customers/palic.dk/palic.dk/httpd.www/test/test.php on line 38


hvor linje 38 er:
    setcookie('sprog', $sLang, (time()+3600), '/');

her er link til test siden:
http://www.palic.dk/test/test.php
Avatar billede jakobdo Ekspert
23. februar 2007 - 11:54 #12
Du har garanteret output eller html kode over setcookie() det må du ikke have.
Avatar billede adis Nybegynder
23. februar 2007 - 11:55 #13
hej jakobdo, igen

har fået den til at virke med denne kode...

smid svar...
Avatar billede adis Nybegynder
23. februar 2007 - 11:56 #14
nej det havde jeg ikke men brugte den i min virkeligt kode o så virkede den :P underligt nok...
Avatar billede jakobdo Ekspert
23. februar 2007 - 11:57 #15
Svar!
Avatar billede jakobdo Ekspert
23. februar 2007 - 12:17 #16
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester