ØysteinI Skrevet 6. april 2003 Del Skrevet 6. april 2003 Jeg sitter her og sliter litt med noen (for meg) uforklarlige problemer med sessions. Jeg har en side, hvor det skal være en del informasjon til alle, samt et "administratorpanel" som kun spesielle brukere får se. Videre ønsker jeg ikke å avkreve vanlige brukere passord/brukernavn på noen som helst måte, FØR de prøver å gå inn i Administratorpanelet. Og når korrekt brukernavn/passord er skrevet inn, skal også disse brukerene få vandre fritt fra om tilbake mellom vanlige sider/administratorpanelet uten å bli avkrevd brukernavn/passord igjen. Filene er som følger : index.php ("hovedfil") : denne filen er på en måte hele rammen for siden. Den slenger opp en logo øverst, viser meny og innhold avhengig av hvilke linker brukeren har klikket på. Alt blir gjort med include("sideX.php");. if(!PHPSESSID) { // Starter en session hvis den ikke allerede eksisterer session.start(); session.register('loginstatus); } ... ... includedir/administratorpanel.php : // Sjekke brukernavn & passord. Om det stemmer: $_SESSION['loginstatus'] = 1; ellers $_SESSION[loginstatus'] = 0; ... // Login suksess. Viser "hemmelige siden" if($_SESSION['loginstatus'] == 1) { ... Siden for autentiserte ... } // feilet loggin eller ikke forsøkt å logge inn. Viser "vanlig side" else if($_SESSION['loginstatus'] == 0 || !$_SESSION['loginstatus']) { ... Siden for ikke-autentiserte ... } Men av en eller annen grunn får jeg ikke skrevet noe som helst til $_SESSION['loginstatus']-variablen fra includedir/administratorpanel.php, kun fra index.php. Og etter flere timer prøving/feiling og søking på mang en rar .php-side; er det bare sånn det er? eller begynner mine "search-skillz" å svikte meg? Lenke til kommentar
rudolfrock Skrevet 6. april 2003 Del Skrevet 6. april 2003 if(!PHPSESSID) { // Starter en session hvis den ikke allerede eksisterer session.start(); session.register('loginstatus); } ... ... det er session_start() og session_register(), ikke med punktum... Lenke til kommentar
alexholm Skrevet 6. april 2003 Del Skrevet 6. april 2003 Hmm, jeg trodde session_start måtte kjøres uansett før man gjorde noe som helst som var relatert med sessions. Fra manual: session_start() creates a session or resumes the current one based on the current session id that's being passed via a request, such as GET, POST, or a cookie. Lenke til kommentar
alexholm Skrevet 6. april 2003 Del Skrevet 6. april 2003 Også litt mer Caution 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. Caution If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered() and session_unregister(). Les mer på http://no.php.net/manual/en/ref.session.php Uansett, du kan ikke både bruke både session_register og $_SESSION på den måte du gjør. (Hvertfall ifølge manual) Du kan like greit droppe session_register og bare bruke $_SESSION['loginstatus'] = etellerannet over hele koden din istedet. Lenke til kommentar
ØysteinI Skrevet 7. april 2003 Forfatter Del Skrevet 7. april 2003 Fikk det til nå. Feilen lå, som du sa, i at jeg ikke "resumet" sessionen. Det var kun første gangen at session_start(); ble kjørt. Videre går det faktisk fint å bruke $_SESSION['loginstatus'] samtidig med at jeg registrerer session-variablen 'loginstatus' med session_register('loginstatus');. Så i bunn og grunn fjernet jeg den øverste if-setningen i index.php, og så funka hele greia. Tenke seg til ... lurt av et eksempel a gett Jaja... Nå funker alt, og jeg er glad. Tusen takk for hjelpen 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å