WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Fundering om sessioner (https://www.wn.se/forum/showthread.php?t=20509)

balinet 2007-04-10 12:08

Hej!
Jag har 1 webbhotellkonto med 2 domäner till.

sub1.doman.se och sub2.doman.se

Dom är inte skapade som subdomäner i kontrollpanelen, utan som domäner.

Om jag använder mig av en session i sub1.doman.se gäller den även i sub2.doman.se eller hur fungerar det?

Mvh
Christian

balinet 2007-04-10 13:15

Nej, får det inte att fungera... Googlade och hittade session.cookie_domain, men verkar som att den skall ställas in i php.ini. Jag kör webbhotell från scorpiondata och kan väl då inte ändra i php.ini, finns det något annat sätt att fixa det på?

Mvh
Christian

eliasson 2007-04-10 15:00

Well, är det viktigt att dom separeras för annars kan du ju skapa en array för varje sida.
T ex:
$_SESSION['sida_1']['id'] = 1;
$_SESSION['sida_2']['id'] = 14;
och sen hämtar du rätt värde då beroende på vilken sida du surfar ifrån.
Well, finns säkert bättre sätt men vi fick ju inte specielt mycket information hur det är uppbyggt.
Hur som helst bör de olika sidorna inte komma åt varandras sessions -- om det är ett bra webhotell och ingen hobbyskit då.

balinet 2007-04-10 15:12

Om jag loggar in på hemsida 1 (sub1.doman.se) så vill jag automatiskt också vara inloggad på hemsida 2 (sub2.doman.se)...

Mitt problem ligger i när jag sätter session på hemsida 1, så kan jag inte läsa den på hemsida 2.

Mvh
Christian

fors 2007-04-10 16:01

Det är som sagt session.cookie_domain du skall ändra. Man kan normalt ändra denna genom funktionen ini_set.

Exempel:
Kod:

ini_set('session.cookie_domain', '.example.com');
Punkten före domänen är till för att indikera att det gäller alla subdomäner, den kan man hoppa över om man vill det.

balinet 2007-04-10 18:35

Kod:

<?PHP
session_start();
ini_set('session.cookie_domain', '.balinet.se');
$_SESSION['inloggad']="kalle";

echo "Då ska vi se ".$_SESSION["inloggad"]."";
?>

När jag kör detta så visas: kalle

men när jag går över till den andra domänen och kör följande:

Kod:

<?PHP
session_start();
echo "Då ska vi se ".$_SESSION["inloggad"]."";
?>

så får jag inte fram: kalle

kan det ha betydelse vart ini_set placeras i koden?

balinet 2007-04-10 20:21

I det första scriptet bytte jag plats på ini_set och session_start...

Kod:

<?PHP
ini_set('session.cookie_domain', '.balinet.se');
session_start();
$_SESSION['inloggad']="kalle";

echo "Då ska vi se ".$_SESSION["inloggad"]."";
?>

I det andra scriptet lade jag till ini_set....

Kod:

<?PHP
ini_set('session.cookie_domain', '.balinet.se');
session_start();
echo "Då ska vi se ".$_SESSION["inloggad"]."";
?>

Men det fungerar inte för det, fick fram när jag googlade att man skulle göra som jag nu gjort... Något förslag?

fors 2007-04-10 21:31

Citat:

Originally posted by balinet@Apr 10 2007, 20:21
I det första scriptet bytte jag plats på ini_set och session_start...
Kod:

?PHP
ini_setsession.cookie_domain, .balinet.se;
session_start;
_SESSIONinloggad=kalle;
echo Då ska vi se ._SESSIONinloggad.;
?

I det andra scriptet lade jag till ini_set....
Kod:

?PHP
ini_setsession.cookie_domain, .balinet.se;
session_start;
echo Då ska vi se ._SESSIONinloggad.;
?

Men det fungerar inte för det, fick fram när jag googlade att man skulle göra som jag nu gjort... Något förslag?

Testa med att rensa kakorna för domänen (dvs, session-kakan). Jag tror nämligen den inställningens sätts då session-kakan skapas första gången.

Oj, EDIT.
Givetvis skall inställningen sättas innan man anropar funktionen session_start.

balinet 2007-04-11 19:18

Vad jag förstår så är det session.abandon() som jag skall använda då. Men vart i koden placerar jag session.abandon()?

Kan det också räcka med att byta namn från "inloggad" till "inlogg"? För då måste det väl vara en ny kaka som bildas?

Mvh
Christian

fors 2007-04-11 20:38

Citat:

Originally posted by balinet@Apr 11 2007, 19:18
Vad jag förstår så är det session.abandon() som jag skall använda då. Men vart i koden placerar jag session.abandon()?
Kan det också räcka med att byta namn från inloggad till inlogg? För då måste det väl vara en ny kaka som bildas?
Mvh
Christian

Det vet jag inte vad det är för funktion, aldrig sett den förut och hittar inget om den på php.net. Den borde således vara egendefinerad eller så är jag helt enkelt blind. I vilket fall som helst så fungerar exemplet ovan för mig (eller ja, har inte testat just det exemplet). Svaret på den andra frågan är att det är samma kaka. För i kakan sparas nämligen enbart ett session-id, som det kallas. All data sparas lokalt på server.


Alla tider är GMT +2. Klockan är nu 22:33.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson