Avatar billede sebster Nybegynder
30. maj 2006 - 11:42 Der 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!!!

Håber på noget hjælp fra jer!!!!
Avatar billede net-base.dk Nybegynder
30. maj 2006 - 12:33 #1
setcookie("navn","value",time());

sådan her sætter du en cookie...

$_COOKIE["navn"];

Sådan her læser du en cookie.
Avatar billede mclemens Nybegynder
30. maj 2006 - 12:39 #2
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'];

echo'Skift sprog: <br><a href="'.$PHPSELF.'?sprog=da&amp;">Dansk</a><br>'.
'<a href="'.$PHPSELF.'?sprog=de&amp;">Deutch</a><br>';

include 'langfile'.$_SESSION['sprog'].'.php';
?>


og så to sprog filer:
langfileda.php og langfilede.php
Avatar billede sebster Nybegynder
30. maj 2006 - 13:16 #3
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????
Avatar billede mclemens Nybegynder
30. maj 2006 - 13:35 #4
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)
Avatar billede mclemens Nybegynder
30. maj 2006 - 14:09 #5
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);}

else if((!isset($_SESSION['sprog']))&&(isset($_COOKIE['sprog']))&&(in_array($_COOKIE['sprog'],$gyldigesprog)))$_SESSION['sprog']=$_COOKIE['sprog'];


/* Check om sprog er sat - ellers standard dansk */
else if(!isset($_SESSION['sprog']))$_SESSION['sprog']="da";

/* Sæt cookie hvis ingen er sat */
if(!isset($_COOKIE['sprog']))setcookie('sprog', $_SESSION['sprog'], time()+604800);

echo'Skift sprog: <br><a href="'.$PHPSELF.'?sprog=da&amp;">Dansk</a><br>'.
'<a href="'.$PHPSELF.'?sprog=de&amp;">Deutch</a><br>';


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>";

include 'langfile'.$_SESSION['sprog'].'.php';
?>
Avatar billede sebster Nybegynder
31. maj 2006 - 09:34 #6
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????
Avatar billede mclemens Nybegynder
31. maj 2006 - 09:43 #7
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...
Avatar billede mclemens Nybegynder
31. maj 2006 - 09:54 #8
^ - testede lige, joh... den er god nok :)
Avatar billede sebster Nybegynder
31. maj 2006 - 10:04 #9
Jeg takker mange gange. her er dine points velfortjenet!!!!!
Avatar billede mclemens Nybegynder
31. maj 2006 - 10:12 #10
- det var så lidt :)
og tak for point :)
Avatar billede sebster Nybegynder
01. juni 2006 - 13:33 #11
Kunne jeg få lov at spørge hvordan man laver denne funktion med POST, vil hest ikke ha det oppe i adresse linjen!!!
Avatar billede mclemens Nybegynder
01. juni 2006 - 13:54 #12
Ret alle $_GET til $_POST

Og f.eks. så en form i denne stil:

<form action="filnavn.php" method="post">
<input type="hidden" name="sprog" og value="da">
<input type="submit" value="Dansk sprog">
</form>

(ikke testet)
Avatar billede sebster Nybegynder
01. juni 2006 - 16:00 #13
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!!!
Avatar billede mclemens Nybegynder
01. juni 2006 - 18:35 #14
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.:


<?php ...
$robotok="";
if(isset($_GET['sprog']))$robotok="no";
... echo"<meta name=\"robots\" content=\"".$robotok."index, follow\">";
?>

- 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?
Avatar billede mclemens Nybegynder
01. juni 2006 - 18:35 #15
Du kan ikke lave a href's med GET ...
ak, ak :D Du kan ikke lave a href's med POST ...
Avatar billede sebster Nybegynder
02. juni 2006 - 08:27 #16
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!!!!
Avatar billede mclemens Nybegynder
02. juni 2006 - 08:33 #17
ok :)
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