ZeRKoX Skrevet 19. november 2007 Del Skrevet 19. november 2007 (endret) Hei. Jeg har et problem med sessions. Jeg har laget et loginscript, som fungerer helt fint når jeg kjører det hos start.no, men når jeg kjører det på mitt webhotell (som er hos one.com), så blir sessionen "glemt" når jeg går til neste side. Er det noen som vet hva som forårsaker dette? Her er eksempler på scriptene. Du logger på i høyre meny med brukernavn og passord "test". Når du har gjort det, så prøv å klikk på kontakt eller på hjem, da vil du se at på obrestad.org, så forsvinner session-variablene, og du er logget ut. Det gjør dem ikke på start.no sine serverer. Er det noen som har peiling på hvorfor dette sjer, og hvordan jeg kan unngå dette? Start.no ww2.obrestad.org PS! diskusjonen starter på post 22 Endret 21. november 2007 av obrestad Lenke til kommentar
Peter Skrevet 19. november 2007 Del Skrevet 19. november 2007 Problemet mitt er bare det at det virker som om $_SESSION variablene blir husket når jeg går til en ny side. Er det noen kjente feil som gjør dette? Hva mener du egentlig her? Kan nesten se ut som du mangler ikke. Dersom det er tilfellet, sjekk at du kaller session_start() i toppen av scriptet. (Ser ikke ut som du gjør det her) Lenke til kommentar
TheClown Skrevet 19. november 2007 Del Skrevet 19. november 2007 Husk også at session_start(); må være det aller første i scriptet <?php session_start(); ?> er en fin løsning. Lenke til kommentar
Peter Skrevet 19. november 2007 Del Skrevet 19. november 2007 Husk også at session_start(); må være det aller første i scriptet <?php session_start(); ?> er en fin løsning. Det er en sannhet med modifikasjoner. session_start() må kalles FØR du begynner å jobbe med sessions (naturlig nok), og FØR det gjøres noe output til browseren. (Noe som ofte skjer i slutten av scriptet når man bruker output buffering) Lenke til kommentar
ZeRKoX Skrevet 19. november 2007 Forfatter Del Skrevet 19. november 2007 (endret) Scriptet er lagt til i index.php med include(), og derfor er session_start() i index.php... Noen andre forslag på hva som kan være feil? Endret 19. november 2007 av obrestad Lenke til kommentar
ZoRaC Skrevet 19. november 2007 Del Skrevet 19. november 2007 Hva gir: <pre> <?php var_dump($_SESSION); ?> ? Lenke til kommentar
ZeRKoX Skrevet 20. november 2007 Forfatter Del Skrevet 20. november 2007 Den gir: array(0) { } før jeg logger på, og etter at jeg har prøvd å gå til en ny side, og den gir array(2) { ["bruker"]=> string(4) "test" ["id"]=> string(1) "1" } Rett etter at jeg har logget på. Lenke til kommentar
ZoRaC Skrevet 20. november 2007 Del Skrevet 20. november 2007 Da blir i hvertfall session-variablene "husket" mellom sidene - så da er problemet ditt et annet sted. Kan du utdype mer hva konkret problemet er? (feilmeldinger og kildekode f.eks) Lenke til kommentar
ZeRKoX Skrevet 20. november 2007 Forfatter Del Skrevet 20. november 2007 (endret) Du kan se på hjemmesiden min hvordan det virker i praksis. Bare logg deg på med test som brukernavn og passord, og se at du er innlogget (sjekk session variablene til høyre), klikk så på kontakt, og du er logget av igjen. Hvordan kan jeg "holde" brukeren pålogget? Her er selve loginscriptet slik det ser ut nå: <h3>Logg deg på:</h3> <?php if (isset($_SESSION['bruker'])) echo '<p>Du er nå logget på, <a href="index.php?side=logut">Logg av</a></p>'; else { $bruker = "test"; $passord = "test"; if (isset($_REQUEST['bruker'])) { if ($bruker == $_REQUEST['bruker'] && $passord == $_REQUEST['passord']) { $_SESSION['bruker']= 'test'; $_SESSION['id']= '1'; } else echo 'Feil brukernavn eller passord'; } else { echo " <form method='post' action='index.php?side=hjem'> Brukernavn:<br> <input name='bruker' type='text'><br> Passord:<br> <input name='passord' type='password'><br> <input type='submit' value='Logg deg på'> </form>"; } } ?> Endret 20. november 2007 av obrestad Lenke til kommentar
ZoRaC Skrevet 20. november 2007 Del Skrevet 20. november 2007 if (isset($_SESSION['bruker'])) include('logut.php'); "Hvis pålogget, logg ut" ?? Der er nok feilen din Lenke til kommentar
ZeRKoX Skrevet 20. november 2007 Forfatter Del Skrevet 20. november 2007 jeg endret den, men i den logut filen var det ingenting... Lenke til kommentar
ZoRaC Skrevet 20. november 2007 Del Skrevet 20. november 2007 Har du "session_start();" øverst i index.php? Lenke til kommentar
ZeRKoX Skrevet 20. november 2007 Forfatter Del Skrevet 20. november 2007 (endret) Ja. index.php: <?php session_start(); error_reporting(E_ALL); ini_set("display_errors", true); ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="default.css"> <title>Obrestad.org</title> </head> <body> <div id="outer"> <div id="outer2"> <div id="header"> <h1>Obrestad.org</h1> <h2></h2> </div> <div id="menu"> <?php include('meny.php') ?> </div> <div id="content"> <div id="column1"> <?php include('include.php') ?> </div> <div id="column2"> <?php include('login.php'); ?> <?php include('side.php'); ?> </div> </div> <div id="footer"> <p>Copyright © 2007 Obrestad.org.</p> </div> </div> </div> </body> </html> Endret 1. mai 2008 av obrestad Lenke til kommentar
ZoRaC Skrevet 20. november 2007 Del Skrevet 20. november 2007 Prøv å kommenter ut alle includes untatt den for login.php - ønsker å se om det er noen av de andre php-filene som kanskje "ødelegger" sessionen din... Lenke til kommentar
ZeRKoX Skrevet 20. november 2007 Forfatter Del Skrevet 20. november 2007 (endret) Hva mener du nå? EDIT: Her kan du se includsa: meny.php <ul> <li><a href="index.php?side=hjem">Hjem</a></li> <li><a href="index.php?side=kontakt">Kontakt</a></li> </ul> include.php <?php switch ($_GET['side']) { case 'hjem': include('sider/index.php'); break; case 'kontakt': include('sider/kontakt.php'); break; case 'logut': session_destroy(); break; default: include('sider/index.php'); } ?> side.php <br> <h3>var_dump($_SESSION);</h3> <pre> <?php var_dump($_SESSION); ?> </pre> Endret 20. november 2007 av obrestad Lenke til kommentar
ZoRaC Skrevet 20. november 2007 Del Skrevet 20. november 2007 Ny index.php: <?php session_start(); error_reporting(E_ALL); ini_set("display_errors", true); ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="default.css"> <title>Obrestad.org</title> </head> <body> <div id="outer"> <div id="outer2"> <div id="header"> <h1>Obrestad.org</h1> <h2>Av Eigil Obrestad</h2> </div> <div id="menu"> <?php //include('meny.php') ?> </div> <div id="content"> <div id="column1"> <?php //include('include.php') ?> </div> <div id="column2"> <?php include('login.php'); ?> <?php //include('side.php'); ?> </div> </div> <div id="footer"> <p>Copyright © 2007 Obrestad.org.</p> </div> </div> </div> </body> </html> Lenke til kommentar
ZeRKoX Skrevet 20. november 2007 Forfatter Del Skrevet 20. november 2007 det hjelpte ingenting å kommentere ut includene Lenke til kommentar
ZoRaC Skrevet 20. november 2007 Del Skrevet 20. november 2007 Da tror jeg ikke jeg har flere ideer, beklager... Siste jeg kan komme på er å endre session.save_path til noe annet... Lenke til kommentar
ZeRKoX Skrevet 20. november 2007 Forfatter Del Skrevet 20. november 2007 hvordan kan dette gjøres? Lenke til kommentar
ZoRaC Skrevet 20. november 2007 Del Skrevet 20. november 2007 http://no2.php.net/manual/en/function.session-save-path.php Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå