webForumDet fria alternativet
Logga in / Bli medlem

Sessionscookie fungerar ej

PHP

34 svar · 411 visningar · startad av Smultron

Medlem sedan juli 2002423 inlägg
Trådstart#1

Jag har skapat en login som skapar Sessions.
men att om jag itne använder .SID i header("Location"); fungerar ej Sessions, vad kan det vara för fel?

Medlem sedan aug. 20002 975 inlägg
#2

Använder du frames när du har en domän för ditt frameset och en annan i din frame, alternativt anger din frame src med fullständig URL (http://....). Då kan säkerhetsinställningarna i IE hindra cookien från att sättas.

Vilken PHP-version använder du?
register_globals On eller Off ?

Kan du visa hur koden ser ut i filen där du sätter sessionen samt i filen där du ska ta fram din sessionsvariabel.

Medlem sedan juli 2002423 inlägg
#3

jo, men att jag har register_globals On men det funkar om jag har lagt till .SID men om jag tar bort den funakr det inte?

Medlem sedan aug. 20002 975 inlägg
#4

Så kan det bli i IE6 om du har en domän i adressfältet och en annan i din frame.

PHP-version?
Kod?

Medlem sedan juli 2002423 inlägg
#5

PHP Version 4.3.1

Kod för att sätta Session

session_start();
require("conn.inc.php");

        $sql = mysql_query("SELECT * FROM users WHERE username = '$username'");

        $rad = mysql_fetch_array($sql);

		$userlog = 1;
		$usernfo = $rad[0];
		Session_register("userlog");
		session_register("usernfo");

koden för att kolla om Session är registrerad

session_start();

	if($_SESSION["userlog"] <= 0)
	{
		header("Location: index.php");
	}
Medlem sedan aug. 20002 975 inlägg
#6

Du skickas alltså inte vidare till index.php.

Om du gör så här i filen där du kollar sessionen:

<?

error_reporting(E_ALL);
session_start();

echo "<pre>";
print_r($_SESSION);
echo "</pre>";

    if($_SESSION["userlog"] <= 0)
    {
        header("Location: index.php");
    }

Vad får du för utfall då?

Blir det någon skillnad om du gör så här när du sätter sessionen:

<?
session_start();
require("conn.inc.php");

        $sql = mysql_query("SELECT * FROM users WHERE username = '$username'");

        $rad = mysql_fetch_array($sql);
        
        $_SESSION['userlog'] = 1; 
        $_SESSION['usernfo'] = $rad[0];

När du surfar runt på webForum har du då något i stil med
SID=12A75454BF356767..... i adressfältet ?

Jag förutsätter att du inte använder frames eftersom du inte kommenterat det.

Medlem sedan juli 2002423 inlägg
#7

frames på sidan, nej.
och jag har inte det där SID=xxxxxxxxxxxxxxxxxxxxxxxxx
på webforum heller jag har
s=&threadid=72984r
o sånna saker, men hmm vad kan det vara för fel om jag la till det som du hade fungerar det ändå inte?

kan det inte vara någon speciell inställning i php.ini?

Medlem sedan aug. 20002 975 inlägg
#8

Jag hade inte räknat med att det skulle fungera. Men däremot hade jag hoppats på några felmeddelanden som skulle ge mig lite hjälp på vägen.

Fick du några sådana?

Inställningar i php.ini:

Vad står det på session.save_path ?
Finns denna katalog och har den skrivrättigheter ?

session.use_cookies ska vara satt till 1.

Medlem sedan juli 2002423 inlägg
#9

mm det ska fungera men jag får inga felmeddelanden, och det funkar as bra om jag har .SID i header(localtion)

Medlem sedan aug. 20002 975 inlägg
#10

Har du kollat session.use_cookies i php.ini ?

Medlem sedan juli 2002423 inlägg
#11

här är mina inställningar för Sessions i php.ini
och jag har kollat sess.save_path ja

kolla här...:

session
Session Support enabled
Registered save handlers files user

Directive Local Value Master Value
session.auto_start On On
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path C:\PHP\temp C:\PHP\temp
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_dividend 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path C:\PHP\Sess C:\PHP\Sess
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid On On

Medlem sedan aug. 20002 975 inlägg
#12

Vilken webbserver använder du?

Medlem sedan juli 2002423 inlägg
#13

IIS 5.0

Medlem sedan aug. 20002 975 inlägg
#14

Ändra session.cookie_path till:

session.cookie_path = /

Starta om webservern efter du ändrat.

Medlem sedan juli 2002423 inlägg
#15

mm ska dte funka nu eller?

Medlem sedan aug. 20002 975 inlägg
#16

Fungerar det ?

Medlem sedan juli 2002423 inlägg
#17

det gör iaf inte det...
men vad kan det vara för något fel egentligen?

Medlem sedan juli 2002423 inlägg
#18

nej det fungerar inte

Medlem sedan juli 2002423 inlägg
#19

va fan kan felet vara?

Medlem sedan aug. 20002 975 inlägg
#20

Själva sessionen fungerar eftersom det fungerar när du sätter .SID efter din header. Det är något med cookies asom spökar.

Ändringen av session.cookie_path var nödvändig eftersom den utgår från webroten och med de inställningarna du hade för session.cookie_path kunde inte sessionscookies fungera. Och startat om webservern har du gjort.

Jag har i bakhuvudet att jag sett någonstans att det kan vara problem i vissa versioner av IIS med kombinationen sätta cookie och header.
Ett sätt vi kan prova detta på är att du lägger upp flera filer där du använder sessionen och länkar mellan dom med helt vanliga <a href...
Vid inloggningen där du sätter din session använder du .SID men inte på andra ställen.
Hur funkar det om du testar.

257 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)