Kom ihåg mig?
Home Menu

Menu


Varna samt förnya php session - automatiskt?

Ämnesverktyg Visningsalternativ
Oläst 2006-06-17, 10:41 #1
affe_810221 affe_810221 är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2004
Inlägg: 38
affe_810221 affe_810221 är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2004
Inlägg: 38
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
affe_810221 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-17, 12:18 #2
elofssons avatar
elofsson elofsson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2004
Inlägg: 881
elofsson elofsson är inte uppkopplad
Mycket flitig postare
elofssons avatar
 
Reg.datum: Jul 2004
Inlägg: 881
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.
elofsson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-17, 12:32 #3
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
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>
Något sånt här...
hnn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-17, 15:51 #4
zorans avatar
zoran zoran är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2004
Inlägg: 598
zoran zoran är inte uppkopplad
Mycket flitig postare
zorans avatar
 
Reg.datum: Jun 2004
Inlägg: 598
Citat:
Originally posted by hnn@Jun 17 2006, 12:32
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>
Något sånt här...
Men HALLÅ! Lite mer kvalite på era svar, era proffesionella webbmasters.

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.
zoran är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-17, 16:18 #5
WizKid WizKid är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2004
Inlägg: 618
WizKid WizKid är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2004
Inlägg: 618
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.
WizKid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-17, 19:22 #6
zorans avatar
zoran zoran är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2004
Inlägg: 598
zoran zoran är inte uppkopplad
Mycket flitig postare
zorans avatar
 
Reg.datum: Jun 2004
Inlägg: 598
Citat:
Originally posted by WizKid@Jun 17 2006, 16:18
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.
Mitt nummer var bara exempel. Poängen är att indikera ATT det går och inte gissa hur lång sessionen ska vara. Likaså kakor, det går att sätta expire på de också. Hur många är det som som egentligen använder publika datorer egentligen?

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.
zoran är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-17, 19:36 #7
WizKid WizKid är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2004
Inlägg: 618
WizKid WizKid är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2004
Inlägg: 618
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.
WizKid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-18, 21:02 #8
PgDs avatar
PgD PgD är inte uppkopplad
Medlem
 
Reg.datum: Dec 2005
Inlägg: 164
PgD PgD är inte uppkopplad
Medlem
PgDs avatar
 
Reg.datum: Dec 2005
Inlägg: 164
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.
PgD är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-22, 11:39 #9
Blackexs avatar
Blackex Blackex är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 238
Blackex Blackex är inte uppkopplad
Medlem
Blackexs avatar
 
Reg.datum: Jun 2006
Inlägg: 238
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:

<script type="text/javascript">
function ReloadImage()
{
var img = new Image(0,0);
img.src = '<ditt php script som håller igång sessionen>';

setTimeout('ReloadImage()', <?php echo ini_get("session.gc_maxlifetime" ?>-5000);
}

ReloadImage();
</script>
Dvs. fem sekunder innan sessionen dör så laddas den om. (fem sekunder kompenserar för eventuell fördröjning av laddningstid - vilket beror på var på din sida du placerar koden vilket har betydelse för hur lång tid det dröjer innan den exekveras)
Blackex är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 18:31.

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