Avatar billede mik789 Nybegynder
05. maj 2003 - 09:26 Der er 6 kommentarer og
1 løsning

opdatere session værdi med URL

Jeg kan ikke forstå hvorfor jeg ikke kan opdatere værdier i sessionen via en URL.

Jeg har kogt problemet ned til disse to dokumenter:

1

<?php session_start(); $test=1.1; session_register("test"); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>$test = <?php echo $test; ?></p>
<p><a href="session_test02.php">Gå til næste side</a></p>
</body>
</html>

2

<?php session_start(); session_register("test"); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>$test = <?php echo $test; ?></p>
<p><a href="<?php print $PHP_SELF."?test=1.2\""; ?>>Reload side</a></p>
<p><a href="<?php print $PHP_SELF."?test=1.3\""; ?>>Reload side</a></p>
<p><a href="<?php print $PHP_SELF."?test=1.4\""; ?>>Reload side</a></p>
<p><a href="<?php print $PHP_SELF."?test=1.5\""; ?>>Reload side</a></p>
<p><a href="<?php print $PHP_SELF."?test=1.6\""; ?>>Reload side</a></p>
</body>
</html>

Hvorfor opdateres værdien af $test ikke når side 2 reloades med nye værdier? I kan se en demo på www.dahr.dk/Web/session_test01.php

Det drejer sig om en server der har register_globals sat til "on"

//mik
Avatar billede fri-hash Nybegynder
05. maj 2003 - 09:38 #1
prøv at ændre
<?php session_start(); $test=1.1; session_register("test"); ?>

til

<?php session_start();
  if(isset($_GET["test"])){
      $test = $_GET["test"];
  }else{
      $test=1.1;
      session_register("test");
  }
?>
Avatar billede fri-hash Nybegynder
05. maj 2003 - 09:40 #2
selvom register globals er sat "ON", så vil denne linie
$test=1.1;
sætte $test til 1.1 uanset hvad der er med i URL'en
Avatar billede fri-hash Nybegynder
05. maj 2003 - 09:54 #3
eller indsæt dette i 2'eren
<?php session_start();
  if(isset($_GET["test"])){
      $test = $_GET["test"];
  }else{
      $test=1.1; 
  }
  if(!session_is_registered("test"){
      session_register("test");
  }
?>
så behøver du slet ikke 1'eren
Avatar billede fri-hash Nybegynder
05. maj 2003 - 09:55 #4
if(!session_is_registered("test")){
      session_register("test");
  }

even
Avatar billede mik789 Nybegynder
05. maj 2003 - 10:15 #5
fri-hash> 1'eren er kun lavet her for at efterligne den reelle situation hvor 1'eren er nødvendig. Det drejer sig om et tidsskrift med forskellige artikler. Fra hver artikel skal man kunne gå til et forum med bemærkninger til netop denne artikel hvis art.ID er den variabel der sættes i sessionen. Forskellige artikler leder således til forumet med hver deres indlæg, overskrift osv. Samtidig skal man fra selve forumsiden også kunne skifte forum (altså til en artikelt forum) uden at skulle tilbage omkring artiklerne.

Under alle omstændigheder: det virker nu. Jeg brugte din kode i dit første svar med lidt tilpasning. super! tak skal du ha'
Avatar billede mik789 Nybegynder
05. maj 2003 - 10:19 #6
en artikelt forum == "en andens artikels forum"
Avatar billede fri-hash Nybegynder
05. maj 2003 - 10:20 #7
you're welcome ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester