webForumDet fria alternativet

Problem med Sessions

5 svar · 218 visningar · startad av Gein

GeinMedlem sedan sep. 20005 700 inlägg
#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!

MatteMedlem 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.

GeinMedlem 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...
MatteMedlem 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;
}
GeinMedlem 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.

MatteMedlem sedan aug. 20002 975 inlägg
#6

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

135 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)