Avatar billede mik789 Nybegynder
17. marts 2003 - 06:40 Der er 3 kommentarer og
2 løsninger

session_register() og $_SESSION

Når man læser php manualen får man at vide at de to metoder (i titlen på mit sp.) er forskellige ved at den sidste tager højde for om variabler er global eller ej.

Men der er også forskel på hvilke variabler de accepterer. Den første opfanger en variabel der er sendt med en querystreng. Dvs. hvis man har sendt variablen 'var' med en querystreng kan man bare registrere den med session_register("var"). Men man kan ikke tilsvarende registrere den med $_SESSION['var']. Hvis man bruger sidste metode skal variablen tilkendes en værdi med $_SESSION['var']=value. Hvof'det? Hvad mere skal man vide om forskellen mellem de to?
Avatar billede schaefner Juniormester
17. marts 2003 - 08:45 #1
Hvis du kigger i manualen under session_register, står der bl.a.:

"If you want your script to work regardless of register_globals, you need to use the $_SESSION array. All $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where register_globals is disabled."

http://www.php.net/manual/en/function.session-register.php
Avatar billede mik789 Nybegynder
17. marts 2003 - 10:44 #2
schaefner> ja, det har jeg set, men hvad betyder det i forhold til muligheden for at registrere variabler der er sendt med en querystreng? Det var det, der var spørgsmålet. Det kan godt være at det ligger i det med om variabler er sat som global eller ej, men så må du lige forklare mig hvordan.
Avatar billede tefcke Nybegynder
17. marts 2003 - 11:21 #3
Jeg tror ikke helt jeg er med på hvad du præcist vil vide, men efter php/4.3.0 og indførelsen af de super globale arrays ($_SERVER, $_ENV, $_SESSION, $_POST, $_GET osv.) er funktionerne session_register() og session_unregister() ikke den optimale måde at registrer variabler på.

Jeg kan se du er klar over hvordan de bruges, men son nævnt, anbefales det, at metoden med $_SESSION bruges!

Ellers kan du jo bare lave din egen register funktion :)

Bruger selv den her i en session class jeg har lavet:
function register( $VAR_NAME, $VAR_VALUE = NULL )
{
  if ( !isset($_SESSION["$VAR_NAME"]) ) {
    $_SESSION["$VAR_NAME"] = $VAR_VALUE;
  }
}
Avatar billede mik789 Nybegynder
18. marts 2003 - 23:04 #4
jeg har fundet ud af det. det var fordi jeg troede man kunne nøjes med at registrere variablen, "v", OG den værdi (som i forvejen var sendt med en querystreng) bare med $_SESSION['v'] (svarende til at man kan gøre det med session_register("v")). Men den går ikke. Hvis man bruger $_SESSION registrerer php ikke variablens værdi, selv om denne er sendt med querystrengen, med mindre man tilkender den denne værdi i udsagnet, dvs. siger: $_SESSIOIN['v']=$v - så virker det.

men tak for tippet, tefcke
Avatar billede mik789 Nybegynder
18. marts 2003 - 23:45 #5
og så lige en rettelse: Det ER faktisk helt logisk. For session_register() er en funktion hvorimod $_SESSION er et array. Derfor vil $_SESSION['v'] kun registre variablen og ikke dens værdi (allerede sendt med querystrengen) hvorimod session_register("v") registrerer både variablen og værdien. Er det ikke rigtigt?
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