Avatar billede mulemule Nybegynder
06. maj 2008 - 16:10 Der er 12 kommentarer og
1 løsning

Hvordan ligger man en (subdomain) cookie med php.

Hej.

Jeg koder ikke selv php, men har behov for at få en jeg samarbejder med til at putte en stump php kode ind i hans system.

Det jeg har bruge for er at han i hans system ligger en subdomain cookie.

Hvis domæne navnet er domainname.dk
Og
cookie navnet er: coknameD10000MN
Variablen i cookien som skal sættet hedder name.
og name skal sættes til en string som er en variabel, som så i hans tilfælde vil være en php string variabel.

I asp ville det se nogenlunde sådan her ud (jeg koder selv asp.net så ved dårligt nok helt præcist hvordan det skal være i asp)

<%
Response.Cookies("coknameD10000MN")("name") = nameVar
Response.Cookies("coknameD10000MN").Domain = ".domainname.dk"
&>

Hvordan ville det se ud i php (husk det skal være en subdomain cookie, så den f.eks. kan læses fra sub.domainname.dk det åbnåes i asp og asp.net ved at skrive det der . foran.

Super hvis nogen kan "fyre" et eller andet af, tak på forhånd.

Mvh
Avatar billede mulemule Nybegynder
06. maj 2008 - 18:49 #1
Jeg har opettet et nye spm.
http://www.eksperten.dk/spm/830473
Da jeg har fundet ud af noget mere, det er lidt unerligt synes jeg.
Mvh
Avatar billede coderdk Praktikant
06. maj 2008 - 18:53 #2
http://dk2.php.net/setcookie - Det står dér - 5. parameter ;)
Avatar billede mulemule Nybegynder
06. maj 2008 - 19:03 #3
nej, det er domain. Det er noget andet jeg er ude efter.

I asp og asp.net er der både noget som hedder cookiename, og så value og valueindhold.

Det ser ud som om at der ikke er noget cookiename i php.
Avatar billede coderdk Praktikant
06. maj 2008 - 19:41 #4
Nej, det er den du er ude efter.

setcookie( "test", "123", strtotime("+1 year"), "/", ".domain.dk" );

Den sætter "test"-cookien til 123, som udløber om ét år og gælder fra roden af domain.dk plus alle sub-domains. Bemærk at den type cookies ikke er kompatible med alle browsere (mener at Safari har problemer med .domain.dk).
Avatar billede coderdk Praktikant
06. maj 2008 - 19:43 #5
Alternativt, laver du bare et associativt array:

$cookie = array();
$cookie['test'] = 123;
$cookie['hej'] = 'med dig';
setcookie( "cookiename", $cookie, strtotime("+1 year"), "/", ".domain.dk" );

Så tilgår du den med:

$_COOKIE['cookiename'] i.e.

$hej = $_COOKIE['cookiename']['hej'];

etc
Avatar billede mulemule Nybegynder
07. maj 2008 - 19:31 #6
Hej tak for svar.


Det er det med arrayen, jeg skal have fat i kan jeg se.

Må vist lige få installeret min egen php maskine, så jeg kan få det testet ordenligt af.

svar i svar for point.

Mvh
Avatar billede coderdk Praktikant
07. maj 2008 - 20:44 #7
Aight :)
Avatar billede mulemule Nybegynder
14. maj 2008 - 23:01 #8
hmm.

jeg synes ikke man kan det du skriver, sidder lige og prøver det.

Den siger at pameter 2 skal være en string.

I dit eksempel
$cookie = array();
$cookie['test'] = 123;
$cookie['hej'] = 'med dig';
setcookie( "cookiename", $cookie, strtotime("+1 year"), "/", ".domain.dk" );

bliver det jo en array.

Ireterende.
Avatar billede coderdk Praktikant
14. maj 2008 - 23:06 #9
Ja, det bliver et array, men hvad er der galt i det? Du kan jo tilgå den som jeg skriver med $_COOKIE['cookiename']['hej'] f.eks... Præcist hvad vil du? :)
Avatar billede mulemule Nybegynder
14. maj 2008 - 23:15 #10
Hej.

men setcookie kan jo ikke spise en array i parameter 2.

System.Web.HttpCookie cookie = new HttpCookie(cookieName);
cookie["name"]=name;
cookie.Domain=room.domainName;
Response.Cookies.Add(cookie);

Det er fordi at jeg skal kopeire ovenståen asp.net kode til php.

I asp.net kan jeg lave en cookie some hedder f.eks. "cookiename" og så bagefter sætte et "name" parameter, og skrive den.

Jeg har brug for at kunne gøre det samme i php. Det er super hvis du kan lave det, sidder lige med det.
Avatar billede mulemule Nybegynder
14. maj 2008 - 23:16 #11
Den kode du skriver giver fejlmeddelselse, om at pamateter 2 skal være en string..

Men super tak indtil videre, det er vist rette vej.
Avatar billede coderdk Praktikant
14. maj 2008 - 23:27 #12
Du har da ret, men det kan omgås med serialize ;)

$cookie = array();
$cookie['name'] = "noget";
$cookie['test'] = 123;
setcookie( "cookiename", serialize($cookie), strtotime("+1 year"), "/", ".domain.dk" );

tilgås så med:

$cookie = unserialize( $_COOKIE['cookiename'] );
echo $cookie['name'] . " og " . $cookie['test'];
Avatar billede mulemule Nybegynder
17. maj 2008 - 17:22 #13
Tak.

Problemet er at cookien skal ligges af php og læses af asp.net.

Men jeg må få ændret den måde asp.net læser den på kan jeg se.

God dag.
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