Rasks Skrevet 15. januar 2007 Skrevet 15. januar 2007 Jeg har en side hvor jeg starter en session (feks $_SESSION['eks'] = "sant". Når jeg prøvde med: echo $_SESSION['eks']; på en side på en annen server fikk jeg ingen ting. Gjør jeg det feil eller er det pga av sikkerhetsmessige årsaker?
ZoRaC Skrevet 15. januar 2007 Skrevet 15. januar 2007 Det er ikke mulig å hente ut sessions på tvers av servere. Ganske enkelt fordi sessionen lagres på serveren, ikke klienten. Dvs at $_SESSION['eks'] ligger lagret på server 1 og da kan selvfølgelig ikke server 2 lese denne.
Ståle Skrevet 15. januar 2007 Skrevet 15. januar 2007 Men kanskje hvis du bruker cookies derimot. Siden disse lagres på brukerens PC.
Anders Moen Skrevet 15. januar 2007 Skrevet 15. januar 2007 (endret) Ja, kanskje det. Kan du plassere en kjeks i denne koden, så når man kommer tilbake til sida uten å logget ut? Eller modifisere den litt? Eller rett og slett gi et annet script som er sikrere osv <?php session_start(); ?> <html> <head> <title>Logg inn :)</title> <style type="text/css"> body { color: black; font-size: 12pt; font-family: tahoma,arial; background-colr: white; } a:link, a:active, a:visited { color: black; font-size: 12pt; font-family: tahoma,arial; background-color: transparent; } a:hover { color: red; font-size: 12pt; font-family: tahoma,arial; background-color: transparent; } </style> </head> <body> <?php $db=mysql_connect("localhost", "brukernavn", "passord"); mysql_select_db("database", $db); $bruker = htmlentities($_POST['bruker']); $pass = htmlentities($_POST['pass']); $bruker = mysql_real_escape_string($bruker); $pass = mysql_real_escape_string($pass); $query = mysql_query("SELECT bruker, pass FROM tabell WHERE bruker = '$bruker' AND pass = '$pass'"); if(mysql_num_rows($query) == 1 OR $_SESSION['online'] == true ) { $_SESSION['online'] = true; echo " <meta http-equiv='refresh' content='1;url=leggtil.php'> Velkommen $bruker! "; } elseif(isset($_POST['navn']) && mysql_num_rows($query)== 0) echo " <span style='color: red;'>Feil brukernavn eller passord</span> <br /> <form action='' method='post'> <p>Brukernavn</p> <input type='text' name='bruker' /> <p>Passord:</p> <input type='password' name='pass' /> <input type='submit' value='Logg inn' /> </form> "; else { echo " <br /> <form action='' method='post'> <p>Brukernavn</p> <input type='text' name='bruker' /> <p>Passord:</p> <input type='password' name='pass' /> <input type='submit' value='Logg inn' /> </form> "; } mysql_close($db); ?> edit: glemte å ta bort brukernavn og passord fra koden Endret 15. januar 2007 av Andy-Pandy
Ernie Skrevet 15. januar 2007 Skrevet 15. januar 2007 (endret) Men kanskje hvis du bruker cookies derimot. Siden disse lagres på brukerens PC. 7727911[/snapback] ev. bruke database-basert session. Edit: Det går jo selvsagt ikke. Cookie kan jo aldri "overtas" av en annen server. Dvs. man kan jo forsåvidt det, men da må man sette en 3.parts cookie på forhånd, og det liker ikke endel nettlesere. Endret 15. januar 2007 av Ernie
Torbjørn Skrevet 16. januar 2007 Skrevet 16. januar 2007 Hva skal den andre webserveren gjøre med denne SESSIONID'en ?
Peter Skrevet 16. januar 2007 Skrevet 16. januar 2007 Hva skal den andre webserveren gjøre med denne SESSIONID'en ? 7731682[/snapback] Sålenge session-en er tilgjengelig fra den andre serveren, f.eks. ved å bruke en database for å lagre sessions, så ser jeg egentlig ganske mange muligheter...
DarkSlayer Skrevet 16. januar 2007 Skrevet 16. januar 2007 Hva med å legge sessid i url og db, så hvis 2 siter har tilgang til samme db, så er det bare å lage alle url.sessid(). På den måten så blir på en måte sessid med over til den andre siten, om man linker over(noe jeg nesten forventer).
Torbjørn Skrevet 17. januar 2007 Skrevet 17. januar 2007 Hva skal den andre webserveren gjøre med denne SESSIONID'en ? 7731682[/snapback] Sålenge session-en er tilgjengelig fra den andre serveren, f.eks. ved å bruke en database for å lagre sessions, så ser jeg egentlig ganske mange muligheter... 7733086[/snapback] Aha, men det var vel et ganske viktig tilleggspoeng for trådstarteren
Rasks Skrevet 17. januar 2007 Forfatter Skrevet 17. januar 2007 Det var sikkert et godt poeng, men jeg skjønte ikke så veldig mye av det.
Peter Skrevet 17. januar 2007 Skrevet 17. januar 2007 Det var sikkert et godt poeng, men jeg skjønte ikke så veldig mye av det. 7741518[/snapback] Sessions er ikke noen magiske greier. Når du bruker sessions, tildeles brukeren en unik session id. Når dette skjer opprettes en FLATFIL på serveren, som inneholder informasjonen du lagrer i sessionene. Det er alt som skjer. Når du da prøver å bruke denne sessionen på en annen server, så har ikke denne andre serveren tilgang til FLATFILEN som ble opprettet av den første serveren, og resultatet vil ikke bli at det ikke fungerer. Det jeg sa over, er at istedenfor at informasjonen lagres i FLATFILER, så lagres de i en DATABASE som kan nåes utenfor den lokale serveren. På denne måten får du tilgang til innholdet i sessionene uavhengig av hvilen serveren du egentlig jobber på.
Rasks Skrevet 17. januar 2007 Forfatter Skrevet 17. januar 2007 Takk, nå skjønte jeg det. Har brukt litt sessions før, men visste ikke såå mye om det.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå