FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
Hallå alla!
Håller på och uppdaterar min sajt för fulla muggar och försöker hitta lösningar på små och stora buggar... En sak som besökarna klagat på är att när de väl läst klart en tråd i mitt forum och dessutom lagt ner en stund på att skriva ett inlägg så loggas de ut efter att de skickat sitt svar. Jag tror att detta beror på att de suttit vid samma skärm/sida för länge och att php-sessionen helt enkelt dött. Vad jag vet så är det min webhotells-leverantör som begränsar tiden för sessionen och jag har ingen möjlighet att ändra denna. Vad jag undrar är om det finns något scriptexempel för att förnya sessionen tilssamans med en varningsruta typ: "Du loggas ut om 1 minut. Klicka här om du vill fortsätta vara inloggad och stanna kvar på sidan." Har googlat som en galning men inte hittat något vettigt. Antagligen söker jag efter fel saker... Någon som kan hjälpa mig? mvh Affe efterkrigstiden .com |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Mycket flitig postare
|
Du kan lösa det genom att ha en pytteliten (osynlig) iframe på sidan som uppdateras med jämna mellanrum för att hålla sessionen igång.
Edit: Vill du kan du även mäta tiden i denna iframe om du vill visa en varningsruta efter ett visst antal minuter och därefter logga ut användaren. |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Banned
|
Lägg ett javascript som laddar en bild som du startar sessionen i...
Kod:
<script type="text/javascript"> function ReloadImage() { var img = new Image(0,0); img.src = '<ditt php script>'; setTimeout('ReloadImage()', 10000000); } ReloadImage(); </script> |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Citat:
Iframe, javascriptlösningar som ska hålla liv i sessionen är katastrofala förslag. Låt oss säga att en: <? ini_set("session.gc_maxlifetime","1000000"); ?> ...skulle förlänga sessionen. Alternativt lagra session.gc_maxlifetime i .htaccess. En annan aproach vore att ha en kaka som automatiskt loggar in användaren. |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Mycket flitig postare
|
Förstår inte vad det skulle vara för fel att ha en iframe som ligger och laddas om med jämna mellanrum. Visst finns det en nackdelen med att använda Javascript men man kan lika väl använda sig av http-refresh eller vad headern heter.
Om man gör som du och ändrar maxlifetime till 11 dygn för alla betyder ju det att det kommer ligga massvis med session och skräpa utan att användas. Samt att använda en kaka för att automatiskt logga in användare låter inte speciellt bra om folk sitter på publika datorer och använder sidan. Använder man sig av en iframe som laddas om säg var 5:e minut eller något beroende på vad sessionstiden är satt till kommer endast de sessionerna som behövas att förlängas att göras det. |
||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Mycket flitig postare
|
Citat:
Iframe är en workarround, och fult. Jag menar, jag tycker att normallösningen på ett problem där sessionen är för kort att göra den längre. |
|||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Mycket flitig postare
|
zoran: Jag har inget emot dina lösningar. Ville bara påpeka att det finns brister med även dina förslag och att om man läser ditt svar så får man intrycket att en iframe-lösning är helt fel vilket jag verkligen inte tycker det är.
Håller med dig om att om sessionen är för kort att lösningen borde vara att göra den längre men i det här fallet är den för kort i ett specifikt fall och då tycker jag det är bättre att via en iframe förlänga sessionen för de få som har problem med sessionstiden istället för att förlänga sessionen för alla. |
||
![]() |
![]() |
![]() |
#8 | |||
|
||||
Medlem
|
Det finns två principiella sätt att lösa ett problem. Det ena är (zorans metod) att åtgärda själva orsaken, i det här fallet att sessionstiden är för kort. Den andra metoden är på något sätt göra sig oberoende av problemet, exempelvis att kringgå det.
Oftast föredrar jag den första metoden, men om det medför olägeneheter av något slag (vanligen är att tiden eller orken inte räcker) så tillgriper jag nödplanen, den kringgående rörelsen. Det viktiga i det här fallet är väl det ska fungera för alla användare och alltid samt utan sidoeffekter. Om det är principiellt korrekt eller inte har väl underordnad betydelse. |
|||
![]() |
![]() |
![]() |
#9 | |||
|
||||
Medlem
|
Alternativ 1) Öka sessionstiden med variabeln session.gc_maxlifetime
Alternativ 2) Om du har ont om resurser, och vill minimera sessionen om det är möjligt: Göra ett javascript som varnar besökaren att sessionen håller på att gå ut (med settimeout()) - och alternativt fråga om besökaren vill logga ut/stanna kvar? Alternativ 3) Om du har ont om resurser, men vill att alla som har sidan öppen fortfarande skall ha en session: Gör enligt ovan, men med min lilla modifikation: Citat:
|
|||
![]() |
![]() |
Svara |
Ämnesverktyg | |
Visningsalternativ | |
|
|