Avatar billede oppermann Nybegynder
24. april 2006 - 14:00 Der er 10 kommentarer og
1 løsning

Fejlmeddelelse i forbindelse med session

Hej Eksperter.

Jeg har et script hvor jeg skal bruge en session som er registreret i på et tidligere tidspunkt.

Jeg har naturligvis startet sessions med session_start(); og jeg har så gemt min session med $_SESSION['variabel'] = værdi og henter så den pågældende session ud senere med $_SESSION['variabel'].

Det virker umiddelbart, men jeg får en fejlmeddelelse i bunden af den første side hvor sessionen hentes ud.

Fejlmeddelelsen er som følgende:

"Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0"

Det skal siges at jeg ikke har mulighed for at ændre på serverens opsætning.
Avatar billede jakobdo Ekspert
24. april 2006 - 17:14 #1
Er der nogen steder i din kode du bruger: session_register("variabel"); ??
Avatar billede oppermann Nybegynder
24. april 2006 - 19:30 #2
Nej, bruger ikke session_register("variabel"); nogen steder.
Avatar billede jakobdo Ekspert
24. april 2006 - 19:32 #3
Kan vi se koden på den side som giver fejlen?
Avatar billede oppermann Nybegynder
24. april 2006 - 19:46 #4
Det er sådan set bare den første side der skal bruge sessions efter man har oprettet sessionen.

Det er i forbindelse med et login system. Hvis koden er rigtig, registrer den en session:  $_SESSION["adgang"] = 1;

Den første side man går videre til der skal bruge sessionen skriver fejlen i bunden af siden. Det virker som det skal, men den grimme fejlmeddelelse ville jeg gerne undvære ;)
Avatar billede jakobdo Ekspert
24. april 2006 - 19:52 #5
Vis nu bare lidt kode, måske det kan give et svar.
Avatar billede oppermann Nybegynder
24. april 2006 - 20:05 #6
Her sætter jeg mine sessions: (jeg har session_start(); med i min index fil hvor denne bliver included)

<?php
if($_SESSION['access'] != 1)
  {

require("mysql.php");

if(is_array($HTTP_POST_VARS)) {
  $pass_sendt = $HTTP_POST_VARS['pass_sendt'];
  $navn_sendt = $HTTP_POST_VARS['navn_sendt'];
} elseif (is_array($_POST)) {
  $pass_sendt = $_POST['pass_sendt'];
  $navn_sendt = $_POST['navn_sendt'];
}

$pass_md5 = md5($pass_sendt);

aabn_forbindelse_og_vaelgdb();

$res = mysql_query("SELECT navn, pass FROM profiler WHERE navn='$navn_sendt' AND pass='$pass_md5'");

$row = mysql_fetch_array($res);
if(mysql_num_rows($res)>0) {

luk_forbindelse();

    $_SESSION['access'] = 1;
    $_SESSION['navn'] = $navn;
    $_SESSION['pass_md5'] = $pass_md5;   
    header("Location: ?side=admin");

} else {
echo "Forkert navn eller password!";
}
}else{ header("Location: ?side=admin");
}
?>
Avatar billede jakobdo Ekspert
24. april 2006 - 20:10 #7
Det ser nu fornuftigt nok ud.

Prøv lige om denne kode giver samme fejl:

<?php
if($_SESSION['access'] != 1)
{
    require("mysql.php");
    aabn_forbindelse_og_vaelgdb();
  $navn_sendt = mysql_real_escape_string($_POST['navn_sendt']);
    $pass_md5 = md5($_POST['pass_sendt']);
    $res = mysql_query("SELECT navn, pass FROM profiler WHERE navn='$navn_sendt' AND pass='$pass_md5' LIMIT 1");

    if(mysql_num_rows($res)==1)
    {
        $row = mysql_fetch_array($res);
        luk_forbindelse();
    $_SESSION['access'] = 1;
    $_SESSION['navn'] = $row['navn'];
    $_SESSION['pass_md5'] = $pass_md5; 
    header("Location: ?side=admin");
    exit();
    }
    else
    {
        echo "Forkert navn eller password!";
    }
}
else
{
    header("Location: ?side=admin");
    exit();
}
?>
Avatar billede oppermann Nybegynder
24. april 2006 - 20:39 #8
Det ser ud til at virke nu!

Kan du forklare mig hvori fejlen lå ?
Avatar billede jakobdo Ekspert
24. april 2006 - 20:40 #9
Nej! :o)
Den største ændring jeg ser er denne:
if(is_array($HTTP_POST_VARS))
{
  $pass_sendt = $HTTP_POST_VARS['pass_sendt'];
  $navn_sendt = $HTTP_POST_VARS['navn_sendt'];
}

og så har jeg smidt exit(); efter dine header()'s.

og et svar.
Avatar billede oppermann Nybegynder
25. april 2006 - 09:48 #10
Jamen tak for hjælpen!
Avatar billede jakobdo Ekspert
25. april 2006 - 12:49 #11
Takker for point.
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