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?
Sessionscookie fungerar ej
34 svar · 411 visningar · startad av Smultron
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.
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?
Så kan det bli i IE6 om du har en domän i adressfältet och en annan i din frame.
PHP-version?
Kod?
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");
}
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.
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?
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.
mm det ska fungera men jag får inga felmeddelanden, och det funkar as bra om jag har .SID i header(localtion)
Har du kollat session.use_cookies i php.ini ?
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
Vilken webbserver använder du?
IIS 5.0
mm ska dte funka nu eller?
Fungerar det ?
det gör iaf inte det...
men vad kan det vara för något fel egentligen?
nej det fungerar inte
va fan kan felet vara?
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.