webForumDet fria alternativet
Logga in / Bli medlem

Problem med Sessions

Webbservrar

5 svar · 218 visningar · startad av Gein

Medlem sedan sep. 20005 700 inlägg
Frågan#1

Då jag inte vet vart problemet ligger så vet jag inte heller om denna tråd ska ligga i php- eller apache-tråden.
Jag gjorde ett snabbt gästboksskript i php, m.h.a. sessioner skulle jag kolla så att inte samma besökare registreras igen om sidan laddas om. (Så hade jag på gamla servern, w2k server / asp och det funkade) Problemet är att den verkar inte hålla kvar sessionen, eftersom det funkade på gamla servern så misstänker jag att det har med inställningar på servern att göra och inte inställningarna hos klienterna, som för övrigt accepterar cookies. För vissa verkar det dock funka, men inte för de flesta. Finns det någon inställning i apache som kan ändra detta?

Gå gärna in själv o titta hur det blir för er!
https://www.knivby.nu
På raden där det står Sessionsvärde ska det vara lika med 1 om det fungerar, är det ingenting så betyder det att sessionen inte existerar och att det alltså inte funkar. OBS! Detta förutsätter att ni uppdaterar sidan minst 1 gång!

Medlem sedan aug. 20002 975 inlägg
#2

Det vore lättare om du kunde visa lite kod du använt.

Några saker som kan bli fel.

1. Du har register_globals=Off i din php.ini och har använt session_register för att sätta dina sessionsvariabler.

2. Du saknar session_start(); överst i skriptet.

3. Katalogen som är angiven för session.save_path (t.ex C:\PHP\sessiondata) finns inte eller så saknas skrivrättigheter till katalogen.

Medlem sedan sep. 20005 700 inlägg
#3

Ah, sorry. Det är en linux dist, debian, jag kör.
Koden ser ut som följer:

<?PHP
session_start();
?>
html-tjafs...

<?PHP
echo "Sessionsvärde = \"".$HTTP_SESSION_VARS['visited']."\"";
$dfile = "visitors.txt";
if(file_exists($dfile)) {
  $inf  = fopen($dfile, "r");
  $visits = fread($inf, 10);
  $visits = (int)$visits;
  fclose($inf);
}
if ($HTTP_SESSION_VARS['visited'] != 1){
  $filename="visitors.txt";
  if ($fd = (fopen($filename, "w"))) {
  $visits++;
  fwrite($fd, $visits);
  fclose($fd);
  } else {
  print("<B>ERROR: cannot open $filename for writing\n");
  }

}else{
  session_register("visited");
  $HTTP_SESSION_VARS['visited'] = 1;}
?>
<?PHP
//echo "Besökare: $visits";
?>

mera html...
Medlem sedan aug. 20002 975 inlägg
#4

Skulle frågat efter PHP-version också. :)

Sitter och tittar på raderna där du sätter sessionen:

else{
session_register("visited");
$HTTP_SESSION_VARS['visited'] = 1;}

PHP-version = 4.0.x
Om register_globals=On:

else{
  session_register("visited");
  $visited = 1;
}

Om register_globals=Off:

else{
  $HTTP_SESSION_VARS['visited'] = 1;
}

PHP-version >= 4.1.0

else{
  $_SESSION['visited'] = 1;
}
Medlem sedan sep. 20005 700 inlägg
#5

Sorry igen ;)
PHP Version 4.1.2
Jag provade ditt sista exempel, verkar funka för mej som klient, det gjorde det visserligen från början oxå, vet inte hur det blir för alla andra nu, alla polare har gått o lagt sej för dagen oxå. Återkommer imorgon, för att se hur det gick.

Medlem sedan aug. 20002 975 inlägg
#6

Då kan du överallt byta ut $HTTP_SESSION_VARS mot $_SESSION

259 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)