Avatar billede michael_c Nybegynder
09. januar 2007 - 18:18 Der er 11 kommentarer

sessions og require

Hej er der nogen der ved om man kan bruge require og stadig beholde sin SESSION variabel.

Umiddelbart kan jeg ikke se andre grunde til at den smider session variablen
Avatar billede showsource Seniormester
09. januar 2007 - 19:44 #1
Du kan sagtens include/require og få fat i din session.
Et problem med at du IKKE får fat i session, kan skyldes at server køre med register_globals = On.
F.eks. vil flg. fejle:

<?php
session_start();

$_SESSION["noget"] = "Hej";

if(isset($_GET["juhu"])) { // bare som ex.
    $noget = "Farvel";
}


if(isset($_SESSION["noget"])) {
echo $_SESSION["noget"];
}else{
echo"NIX";
}
?>

Med andre ord, brug ALTID forskellige navne til dine variabler/superglobals
Avatar billede showsource Seniormester
09. januar 2007 - 19:47 #2
Eller, prøv dette ex.

<?php
session_start();

$_SESSION["noget"] = "Hej";

if(isset($_GET["juhu"])) { // bare som ex.
    $noget = "Farvel";
}


if(isset($_SESSION["noget"])) {
echo $_SESSION["noget"] ."<p>";
}

echo"<a href=\"". $_SERVER["PHP_SELF"] ."?juhu=shit\">Link</a>";
?>
Avatar billede showsource Seniormester
09. januar 2007 - 19:48 #3
Og hov, ex. vil jo kun virke på servere hvor register_globals = On
Avatar billede michael_c Nybegynder
09. januar 2007 - 22:08 #4
Jeg kører faktisk med dem off, men jeg synes ved flere lejligheder at den smider værdien.
Jeg starter værd side med
<?PHP
session_start();
?> og ellers gør jeg ingenting - er det forkert?
Avatar billede michael_c Nybegynder
09. januar 2007 - 22:49 #5
Følgende eksempel virker ikke, og det forstår jeg ikke

fil1.php indeholder følgende:

<?php
session_start();

$_SESSION["noget"] = "Hej";

if(isset($_GET["juhu"])) { // bare som ex.
    $noget = "Farvel";
}


if(isset($_SESSION["noget"])) {
echo $_SESSION["noget"];
}else{
echo"NIX";
}
echo "Nu forlader vi fil 1";
require("fil2.php");
?>

fil 2 indeholder følgende og stadig virker session variablen
<?
echo "Dette er så fil 2";?><br /><?
echo $_SESSION["noget"];
?>tryk <a href="fil3.php">her</a> for at vælge fil 3);

men når jeg så trykker på linket virker session variablen ikke mere,
gør jeg noget forkert eller er det bare sådan det er
Avatar billede michael_c Nybegynder
09. januar 2007 - 23:07 #6
Mine indstillinger i php.ini ser ud som nedenstående, er der noget der som er forkert?

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_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\php\upload C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\php\upload
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
Avatar billede showsource Seniormester
10. januar 2007 - 05:33 #7
Du bruger jo session.auto_start, så skal du ikke bruge session_start(); i dine docs.
Og prøv at definere session.save_path "mere straight" i php.ini

session.save_path = "C:\php\sessions"

Altså til et dir som faktisk findes!
Avatar billede michael_c Nybegynder
10. januar 2007 - 22:05 #8
jeps, det var lige præcis løsningen!
Avatar billede showsource Seniormester
15. januar 2007 - 22:45 #9
et svar så !
Avatar billede michael_c Nybegynder
15. januar 2007 - 23:39 #10
ja men det kommer så her da ....:-)
Avatar billede showsource Seniormester
18. januar 2007 - 13:06 #11
ups
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