webForumDet fria alternativet

hjälp session

21 svar · 465 visningar · startad av jboy_87

jboy_87Medlem sedan aug. 20011 099 inlägg
#1

varför måste jag ställa in säkerhetsinställningarna i internet explorer till lägsta nivå för att kunna logga in i min sida? kan man inte tillåta sessions direkt.

här har ni alla info:
http://proximus.campus.luth.se/~proximus/test.php

MatteMedlem sedan aug. 20002 975 inlägg
#2

Själv kör jag på inställningen mellanhög för sekretess, och har inga problem med sessionscookies.

Med däremot kan IE6 ge problem när du har en domän i ditt adressfält, och sedan har ett frameset där du i en frame har din sida som ligger på en annan domän.
Då kan säkerhetsinställningarna i IE vägra att sätta sessionscookien.

jboy_87Medlem sedan aug. 20011 099 inlägg
#3

det måste gå ju https://www.silverplanet.se kör ju med php och sessions funkar?

namnlös.gif
jboy_87Medlem sedan aug. 20011 099 inlägg
#4

när jag kör med mitt domän namn så funkar inte sessions damn vad konstigt vad har sessions med domän namnet att göra? Och hur ska jag ta mig till?

MatteMedlem sedan aug. 20002 975 inlägg
#5

Ja, men silverplanet har inte en annan domän i sin frame.
Det går även med annan domän i en frame, men det kräver lite mer arbete vid kodning.

Om du testar med en annan webbläsare (t.ex Mozilla eller Opera), gör det någon skillnad då ?

Har du någon länk till din sida där det inte går ?

MatteMedlem sedan aug. 20002 975 inlägg
#6

jboy_87 skrev:

när jag kör med mitt domän namn så funkar inte sessions damn vad konstigt vad har sessions med domän namnet att göra? Och hur ska jag ta mig till?

Förstår jag dig rätt nu att du har en domän i adressfältet och en domän i en frame?

Säkerhetsinställningarna i standardinställning för IE6 tillåter inte att du sätter cookies då.

jboy_87Medlem sedan aug. 20011 099 inlägg
#7

jepp kör med det!
hmm hur ska jag göra då byta domän eller?

jboy_87Medlem sedan aug. 20011 099 inlägg
#8

..

MatteMedlem sedan aug. 20002 975 inlägg
#9

Kan du inte få domänet att peka på servern har du en litet problem, eller rättare sagt ett större arbete framför dig.

Först. Du måste ha session_start() överst på ALLA sidor. Bryts kedjan i dina länkar (en sida utan session_start) så tappar du sessionen.

Jag förmodar att du inte har rätt att gå in och ändra i php.ini.
Annars kunde du ändrat session.use_trans_sid till On.
Detta går även att göra med en htaccess-fil om du kör windows/Linux, men hur den ska se ut vet jag tyvärr inte.

Om du inte kan ändra i php.ini så får du lägga till sessionsid på alla länkar och liknande:

<!-- HTML-läge -->
<a href="sida.php?<?=SID ?>">Länk</a>

<?php
// PHP-läge
echo "<a href=\"sida.php?".SID."\">Länk</a>";

Men jag tror det borde finnas någon här som kan hjälpa dig sätta ihop en sådan htaccess-fil (under förutsättning du kör Unix/Linux).

Sedan, oberoende inställning av session.use_trans_sid, så är sannolikheten stor att du behöver lägga till det på olika former av redirect med PHP eller javascript:

<!-- javascript -->
<script type="text/javascript">
<!--
  document.location.href = 'sida.php?<?=SID ?>';
// -->
</script>

<?php
// PHP-läge
header("Location: sida.php?".SID);
jboy_87Medlem sedan aug. 20011 099 inlägg
#10

jag har tillgång till filen kör linux ska jag bara sätta session.use_trans_sid till on. kommer det och funka då?

MatteMedlem sedan aug. 20002 975 inlägg
#11

Ja om du lägger till SID på dina redirect typ header("Location: ") i PHP eller någon form av redirect i javascript. Se senare delen av mitt tidigare inlägg.

Nu kommer du att föra sessionsid vidare i URL-en, så det är viktigt att din besökare inte går på en sida som inte har session_start() överst. Då kommer sessionid att försvinna från URL-en och dina besökare kommer att tappa sin session.

Det kan t.ex vara idé att låta externa länkar öppnas i ett eget fönster.

session_start fungerar som så att först kollar den om det finns en sessionscookie. Finns den så är allt ok och sessionen hämtas upp.
Finns ingen cookie så kollar session_start om sessions-namn/id finns i URL-en. Finns den det så hämtas sessionen upp, och på sidan läggs sessionsid till på alla länkar innan sidan skickas från webservern.

Gör du på detta viset så borde det fungera för dig, även med högre säkerhet i webbläsarinställningarna.

OBS! Efter ändringar i php.ini så måste du starta om webservern för att ändringarna ska gälla.

-

jboy_87Medlem sedan aug. 20011 099 inlägg
#12

session_start kör jag på alla sidor, sidan funkar ju när jag skriver in ip adressen!
hmm men jag vill ju inte få bort domännamnet den kommer väll gå bort och ip adressen kommer och visas när jag kör då via redirect?

MatteMedlem sedan aug. 20002 975 inlägg
#13

Redirecten körs ju i en frame, så den kommer inte att påverka det du har i adressfältet. Du laddar alltså bara om innehållet i framen med ny sida.
Ditt domännamn kommer att stå kvar i adressfältet.

jboy_87Medlem sedan aug. 20011 099 inlägg
#14

om man köper en riktig domän dvs utan pekning kommer det och funka då utan redirect?

jboy_87Medlem sedan aug. 20011 099 inlägg
#15

varför dör session efter nåra min? vill göra så att den aldrig dör bara när användaren stänger webbläsaren!

kan det vara det här?
session.cache_expire = 180

MatteMedlem sedan aug. 20002 975 inlägg
#16

Har du en domän som pekar på din webservers IP-nummer så ska det fungera med cookies.

Som det är nu har du en domän som pekar mot ett ip-nummer. Här har du ett frameset där din sida, med en annan domän, ligger i en frame.

MatteMedlem sedan aug. 20002 975 inlägg
#17

jboy_87 skrev:

varför dör session efter nåra min? vill göra så att den aldrig dör bara när användaren stänger webbläsaren!

För det mesta tycker jag problemet verkar vara tvärtom :)

Det som reglerar cookiens livslängd är session.gc_maxlifetime, eller som det står i php.ini:

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.

Det ska alltså till 24 minuters inaktivitet för att sessionen ska rensas bort. Detta värde (1440 sekunder) kan du öka.
Nu är inte detta hela sanningen, för det påverkas också av gc_probability och gc_divisor. Är dessa 1 respektive 100 så innebär det att det är en chans på hundra att utrensningen av för gamla sessioner kommer att göras när session_start körs. Det innebär att när du har lite trafik på servern så kan sessionen leva en bra stund längre.

Sen är det ju ditt val, men personligen kan jag inte förstå varför det ska finnas för anledning till att sessionen ska leva längre. Så länge personen är aktiv så kommer ju sessionen att fortleva. Och går de från datorn, så är det ju ett sätt att fixa en automatisk utloggning (om du nu har inloggning i din session).

jboy_87Medlem sedan aug. 20011 099 inlägg
#18

jag kör ett annat trix med automatisk utloggning!

MatteMedlem sedan aug. 20002 975 inlägg
#19

Ser att jag var trött igår, eller så var det sviter av fredagen :)

Jag skrev så här:

Det som reglerar cookiens livslängd är session.gc_maxlifetime

Det ska naturligt visa vara

Det som reglerar sessionens livslängd är session.gc_maxlifetime

Cookien lever så länge webläsaren är igång.

jboy_87Medlem sedan aug. 20011 099 inlägg
#20

nu har jag session.use_trans_sid = on varför funkar det inte!

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)