Avatar billede spiri Nybegynder
20. september 2001 - 21:25 Der er 5 kommentarer og
2 løsninger

Session uden cookies

Jeg er ved at lave en butik med sessions og UDEN cookies.

Jeg har dog lige et fjollet problem, som jeg ikke lige kan se løsningen på.

Når en bruger f. eks. sender et link videre til en anden bruger f.eks:
www.butik.dkindex.php?PHPSESSID=hfhdk474h3k6dshf37

Hvordan kan jeg så undgå at den \"nye\" bruger arbejder videre på denne session, men får tildelt en ny?

Jeg har prøvet med at gemme IP nummeret som en sessionvariable, som jeg så checker på hvergang, men for det første fik jeg det umiddelbart ikke til at virke + jeg synes det er en dårlig løsning. Det må kunne gøres på en nem måde.
Avatar billede angelod Novice
21. september 2001 - 01:31 #1
En mulig løsning er simpelthen at se hvor personen blev sendt hen til URLen fra, sådan her:

// Eksempel til PHP 4.0b3 og senere
$pos = strpos($HTTP_SERVER_VARS[\"HTTP_REFERER\"], \"www.butik.dk\");
if ($pos === false) {  // Bemærk 3 lighedstegn
  // Giv bruger et nyt ID
}

// Eksempel til PHP før 4.0b3
$pos = strpos($HTTP_SERVER_VARS[\"HTTP_REFERER\"], \"www.butik.dk\");
if (is_string($pos) && !$pos) {
  // Giv bruger et nyt ID
}


Håber dette kan hjælpe dig. :o)
Avatar billede spasser30 Nybegynder
21. september 2001 - 14:48 #2
hvad betyder 3 lighedstegn ?
Avatar billede angelod Novice
21. september 2001 - 14:53 #3
To lighedstegn sammenligner værdierne, mens 3 lighedstegn også tester om de er af samme type. :o)
Avatar billede spiri Nybegynder
21. september 2001 - 15:01 #4
Jo den er vel god nok, men $HTTP_REFERER er så vidt jeg har forstået ikke helt sikker, da ikke alle browserer sender disse oplysningerne med.

Dvs. at der hos nogle brugere vil blive startet en ny session ved hvert kald, selvom de har en session i forvejen.


Så må man vel desværre konkludere at denne metode ikke helt holder vand.

Der må findes en \"ikke-krævende\" metode til at checke det på. Den metode jeg bruger nu, er denne:

if (getenv(HTTP_X_FORWARDED_FOR)){
$ip=getenv(HTTP_X_FORWARDED_FOR);
}
else {
$ip=getenv(REMOTE_ADDR);
}


session_start();

if ($sessip!=$ip) {
    $new_id = md5($ip.time());
    session_id($new_id);
    session_start();
    session_register(\"sessip\");
    $sessip=$ip;
}

...hvilket da også virker, men ikke er optimalt, så vidt jeg kan se.
Avatar billede angelod Novice
21. september 2001 - 15:09 #5
Hmm.. Okay jeg prøver lige at kigge på sagen.. Jeg skriver hvis jeg kommer på en anden løsning.
Avatar billede spiri Nybegynder
05. oktober 2001 - 10:04 #6
Det kommer vi vist ikke videre med lige nu...
Avatar billede angelod Novice
05. oktober 2001 - 10:50 #7
Nej okay.. Takker for point. :o)
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