30. maj 2006 - 11:42Der er
16 kommentarer og 1 løsning
Set en cookie samt ændre indeholdet af den
hej eksperter, jeg vil gerne kunne oprette en cookie hos brugerne, som har indholdet "dk", hvis brugerne trykker på et link skal cookien overskrives så den fx kommer til at hedde "de". Hvordan gør jeg det. Har virkelig bøvl med at få oprettet en sådanne!!!
Anbefaler session cookie (hvis muligt) da indholdet af en variabel fra en cookie skal valideres hver gang man skal bruge en cookie variabel ...
hovedfil.php
<?php session_start(); /* Start af session */
$gyldigesprog=array('da','de');
/* Check om sprog er sat - ellers standard dansk */ if(!isset($_SESSION['sprog']))$_SESSION['sprog']="da";
/* Hvis ?sprog=etellerandet; og sprog er gyldigt så skift sprog */ if((isset($_GET['sprog']))&&(in_array($_GET['sprog'],$gyldigesprog)))$_SESSION['sprog']=$_GET['sprog'];
Det fungere jo fint men vil gerne have at det skal gemmes således at næste gang brugeren besøger siden så skal de gemme variablen. Hvad er forskellen på om det skal valideres eller ej??? og kan jeg bare skifte Session ud med cookie??? fungere det på den måde????
Sessions er kun mens brugeren er på sitet - hvis det skal gemmes til næste gang skal du bruge net-base.dk 's ... Forskellen på validering er kun, at hver gang du henter en variabel med $_COOKIE['etellerandet'] (eller get/post) - skal du teste på om variablen er i et gyldigt format ... f.eks. om den er i array'et ...
^ - Du kan checke på cookie variablen ved re-visit og så gemme den i en session variabel imens besøget varer ... på den måde skal du kun validere på cookie variablen den ene gang den hentes ind ligesom hvis det var en get variabel.
if(!isset($_SESSION['sprog']))$_SESSION['sprog']="da"; kan selvfølgelig udvides så den også er betinget af at der ikke er sat en cookie...
if((isset($_GET['sprog']))&&(in_array($_GET['sprog'],$gyldigesprog)))$_SESSION['sprog']=$_GET['sprog']; kan så også sætte cookie værdien til det samme som session værdien
og efter disse to en kontrol om sproget er sat - hvis ikke så er det fordi vi har en cookie med en sprog værdi - og så skal der lige laves et check om cookie værdien er i array'et (hvis ikke så $_SESSION="da"; ellers så sæt værdien til cookie værdien)
- har aldrig leget med cookies sat af php men det burde være let nok at tilføje om nævnt ovenover hvis det er... kort sagt brug netbase.dk 's og valider hver gang du bruger en cookie variabel eller implementer cookie check i session funktionen ... (er på vej ud af døren ... desværre ... og er først hjemme senere idag)
måske lidt for hurtigt ... nåh først tilbage senere ...
<?php session_start(); /* Start af session */
$gyldigesprog=array('da','de');
/* Hvis ?sprog=etellerandet; og sprog er gyldigt så skift sprog */ if((isset($_GET['sprog']))&&(in_array($_GET['sprog'],$gyldigesprog))){ $_SESSION['sprog']=$_GET['sprog'];if(isset($_COOKIE['sprog']))setcookie('sprog', $_SESSION['sprog'], time()+604800);}
echo "<br>Cookie sprog er: ".$_COOKIE['sprog']."(skifter altid først siden efter skift af sprog)"; echo "<br>Session sprog er: ".$_SESSION['sprog']."<br><br>";
Okay det har du fandme styr på!!! Det var jo faktisk en del overvejelser!!! smidder du ikke et svar. Det er simpelthen genialt??? Kan du forresten huske hvad det er for et tegn der skal stå hvis jeg gerne vil skrive
if ($i går op i 3) så echo...... det er tegnet for går op i????
Har aldrig brugt det ... men i javascript er det % og mener det er det samme i php - tror det er if($i%3==0) ... men skal nok teste senere idag - hvis det ikke virker...
Jeg har prøvet nu, menkan ikke få det til at spille. Vil gerne have det sådan at jeg kan lave links som <a href=""> hvor jeg kan POST variablen kan det ikke lade sig gøre??? Vil gerne give points for det!!!
Du kan ikke lave a href's med GET ... - Så skal du have noget javascript (skjult seperat xml httprequest post) med ... ... det anbefaler jeg dog ikke umiddelbart da det ikke burde være nødvendigt ...
- Hvorfor virker: <a href="fil.php?sprog=da">a</a> ikke? - og hvorfor synes du post er bedre i denne sammenhæng?
... hvis det er p.gr.a. at du er nervøs for spørgsmålstegn og søgemaskiners håndtering af dette så spørg på f.eks.:
- det vil så give noindex hvis ?sprog=etellerandet findes i url'en
...
Det kan også gøres med dette link: <a href="/sprog/da/index.php">a</a> ... men det afhænger lidt af dit sitets opbygning ...
.. Kan komme med den lidt anderledes konstruktions forslag senere iaften - hvis jeg når det - jeg har lige 7 produkter, der skal fotografes og ligges op til salg ... så jeg er ikke på før "senere" iaften ... vil dog gerne høre om det slet ikke går med et link af det format?
det var mere myntet på om jeg kunne få fjernet det fra adresselinjen pga søgemaskine optimering. Har hørt det driller helt vildt!!!! Men fik det til at virke skulle lige have rettet action ordentligt til!!!!
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.