Avatar billede krk Nybegynder
14. marts 2006 - 22:16 Der er 18 kommentarer og
1 løsning

session følger ikke med header??

Hej
Hvorfor virker min session ikke sammen med header, men virker fint hvis jeg laver et alm. link. <a href...>
Er der nogen der kender svaret?

Findes der evt en anden måde at løse problemet?
Avatar billede Slettet bruger
14. marts 2006 - 22:18 #1
Vi bliver nok nød til at se noget kode, for det lyder mystisk :-)
Avatar billede krk Nybegynder
14. marts 2006 - 22:24 #2
jeg har en side upload.php som indeholder en form til upload billeder. Ved "submit" kommer man til gem.php
Jeg har prøvet forskellige løsninger som du kan se i koden

gem.php kode:
<? session_start(); ?>
<?php
if($_SESSION["login"] == ok) {
?>


<?php
    bla.bla.. ligger data i database
       
        //virker IKKE
        header("location:../?page=markede");   
               
        //virker, men trælst med et link
        print"<a href='../?page=markede'>link</a>";
               
               
        virker men så skal jeg trykke F5 for at opdatere
        print '<script>history.back(-1);</script>';

              }
Avatar billede krk Nybegynder
14. marts 2006 - 22:26 #3
session kommer fint med hvis jeg laver et link, men jeg vil jo helst at det sker automatisk, altså header
Avatar billede Slettet bruger
14. marts 2006 - 22:27 #4
Ergo er det ikke gem.php fejlen ligger i, da den sagtens kan huske din session.
Hvad med indholdet af filen du redirecter til ?
og hvad sker der hvis du benytter en header() til at redirecte ?
Avatar billede krk Nybegynder
14. marts 2006 - 22:32 #5
hvis jeg bruger header("location:../?page=markede"); så bliver jeg godt nok sendt til den rigtige side markede.php - men uden session.
Hvis jeg bare går direkte til markede.php så virker session fint.

Skal måske lige nævne at jeg har en index.php der includere de underliggende sider (bl.a markede.php), men siden gem.php bliver ikke inkluderet på index.php siden.
Giver det nogen mening
Avatar billede krk Nybegynder
14. marts 2006 - 22:33 #6
prøver lige igen.
hvis jeg bruger header("location:../?page=markede"); så bliver jeg godt nok sendt til den rigtige side markede.php - men uden session. jeg får af vide at jeg ikke er logget in.
Avatar billede Slettet bruger
14. marts 2006 - 22:35 #7
Og du husker både i index.php og markede.php at lave en session_start(); umiddelbart i starten af filen ?
Avatar billede krk Nybegynder
14. marts 2006 - 22:37 #8
jep
Avatar billede krk Nybegynder
14. marts 2006 - 22:38 #9
i min index.php ligger <? session_start(); ?> lige efter <BODY>. Er det godt nok?
Avatar billede Slettet bruger
14. marts 2006 - 22:49 #10
Du skal starte din session før noget output, dvs som det første du gør - eller i hvert fald før du spytter noget ud til browseren.
Avatar billede krk Nybegynder
14. marts 2006 - 22:50 #11
men det kan jo heller ikke være det der er galt når det virker fint hvis jeg laver et alm. link
Avatar billede krk Nybegynder
14. marts 2006 - 23:16 #12
er det simpelhen fordi man ikke kan sende en session med en header. Jeg kan se at der er andre der tidligere har haft det samme problem uden at finde en løsning (http://www.eksperten.dk/spm/475709)
Avatar billede stig-b Nybegynder
14. marts 2006 - 23:30 #13
Jeg har ikke haft problemer med session variable. Det eneste hensyn jeg tager, er at have dette allerøverst på de sider, der bruger sessions (før <!DOCTYPE ...):
<?php
session_start();

    kode
    kode
    og mere kode

?>
Hvis jeg har brug for andre scripts, bruger jeg require_once("filnavn.filendelse"); lige før session_start()

Virker både i IE, FF, og Opera
Avatar billede pidgeot Nybegynder
14. marts 2006 - 23:35 #14
Du kan ikke lave header() efter der har været noget output - dvs. du ikke må have linieskift eller mellemrum udenfor dine <? ?>-blokke før den blok hvor din header() ligger, ligesom der heller ikke må være print eller echo inden dit kald til header().

Undtagelsen er dog hvis du bruger output buffering - se http://dk2.php.net/manual/en/ref.outcontrol.php.
Avatar billede stig-b Nybegynder
14. marts 2006 - 23:37 #15
Hvis det skal være rigtigt efter bogen bruger jeg
if(!isset($_SESSION['mystart']))
{
    $_SESSION['mystart'] = 1;
    $_SESSION['variabel2'] = etellerandet;
    $_SESSION['variabel3'] = etellerandet;
    Her initaliserer jeg alle de variable, jeg bruger i en session
}
Ved logud bruger jeg følgende:

    $_SESSION = array();
    session_destroy();
    unset($_COOKIE[session_name()]);

Måske det kan bruges

}
Avatar billede stig-b Nybegynder
14. marts 2006 - 23:39 #16
UPS! Selvfølgelig skal der være
session_start();
før variablene initaliseres
Avatar billede krk Nybegynder
15. marts 2006 - 10:33 #17
min header virker egentlig fint nok - den bringer mig ihverfald frem til den side jeg ønsker, men den vil ikke sende session med. Det betyder at jeg så får beskeden "ikke logget ind" (jeg bruger session til en login). Så header virker fint hvis jeg ikke bruger session.
Ud fra det jeg kan læse i spg. http://www.eksperten.dk/spm/475709 kan det heller ikke lade sig gøre at sende en session med en header - ihverfald ikke i 2004
Avatar billede krk Nybegynder
15. marts 2006 - 11:11 #18
Er der nogen der ved om det kan/ikke kan lade sig gøre at sende en session me en header???
Avatar billede krk Nybegynder
22. marts 2006 - 15:34 #19
okay, jeg lukker
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