2rmartin Skrevet 5. februar 2007 Skrevet 5. februar 2007 (endret) Heisann! Holder på å kode et lite publiseringssystem og har nå støtt på et problem med $_SESSION variabler. Problemet er at jeg ikke får tilgang til variablene på sider som er hentet med include() og siden alle sider blir hentet inn i index.php (se utdrag av kode under) er dette blitt et ganske stort problem. Jeg har ikke så fryktelig lyst til å måtte skrive om hele strukturen på siden, så derfor håper jeg at noen her kan hjelpe meg med å finne en løsning på problemet. Klikk for å se/fjerne innholdet nedenfor <body> <div id="wrapper"> <div id="header"> <a href="/"> <img src="..." /> </a> </div> <div id="menu"> <?php menu_insert(); ?> </div> <div id="contentwrapper"> <div id="sidebar"> <?php sidebar_insert(sidebar_get($_SESSION['side'], $_SESSION['kat'])); ?> </div> <div id="content"> <?php include(page_include($_SESSION['side'], $_SESSION['kat'])); ?> </div> </div> </div> </body> Problemet er vel at headere allerede er sendt før jeg får satt session_start() i den inkluderte filen, men jeg skjønner ikke helt hvordan jeg skal kunne omgå dette. Er det noen annen måte å få sendt $_SESSION til den inkluderte siden slik at jeg kan hente ut verdier der? Kan vel også nevne at jeg bruker mod_rewrite til å få finere urls (example.com/fin/url) så jeg vil helst unngå å sende/motta variable med GET. Begynner å bli passe frustrert nå og begynner å komme farlig nært dødelig dosering av kaffe så alle tips mottas med takk! - Tor Endret 5. februar 2007 av 2rmartin
itsmebth Skrevet 5. februar 2007 Skrevet 5. februar 2007 Putt PHP <?php session_start(); ?> HELT øverst i index.php
2rmartin Skrevet 5. februar 2007 Forfatter Skrevet 5. februar 2007 (endret) Har selvfølgelig satt session_start() i index.php, og der fungerer $_SESSIONS helt fint. Problemet er at koden i filene som inkluderes ikke har tilgang til noen session-variable. - Tor Edit: Skjønner ikke bæret lenger... Skal ikke en inkludert fil ha tilgang til alle variable som er tilgjengelig der den kalles fra? When a file is included, the code it contains inherits the variable scope of the line on which the include occurs. Hvordan kan det da ha seg at den inkluderte filen ikke har tilgang til $_SESSION når det faktisk brukes session-variable i selve kallet av filen? Kode før header i index.php: <?php ob_start(); session_start(); require_once('./include/db.config.php'); require_once('./include/db.functions.php'); require_once('./include/functions.php'); (isset($_GET['side'])) ? $_SESSION['side'] = clean_var($_GET['side']) : $_SESSION['side'] = 'startside'; if ($_SESSION['side'] == 'admin') { $_SESSION['kat'] = 'admin'; $_SESSION['side'] = 'start'; } else { (isset($_GET['kat'])) ? $_SESSION['kat'] = clean_var($_GET['kat']) : $_SESSION['kat'] = ''; } $style = '/style/sensurert.css'; if ($_SESSION['kat'] == 'admin' && !check_login()) header ("Location: /login"); ?> Kanskje jeg bare trenger litt søvn, for akkurat nå skjønner jeg ingenting. Har kodet 14 timer i strekk, og blodårene mine transporterer omtrent 90% kaffe nå. Endret 5. februar 2007 av 2rmartin
itsmebth Skrevet 5. februar 2007 Skrevet 5. februar 2007 Session burde være tilgjengelig fra en inkludert side så lenge session_start står før det har blitt sendt data, uansett hvor det står.
2rmartin Skrevet 5. februar 2007 Forfatter Skrevet 5. februar 2007 Det var det jeg også mente, men av en eller annen grunn så fungerer det ikke. Prøver en enkel <?php echo $_SESSION['side']; ?> på første linje i den inkluderte filen, men ingen data er tilgjengelig. Må jo være noe feil i koden min et eller annet sted da, men jeg greier ikke å se hvor det kan være. - Tor
2rmartin Skrevet 5. februar 2007 Forfatter Skrevet 5. februar 2007 Etter noen timers søvn tok det meg ca 2 minutter å finne løsningen selv, så nå fungerer alt som det skal. Problemet var at jeg brukte statiske adresser i includen (http://subdomene.example.com/ettellerannet.php) i stedet for relative (./ettellerannet.php). Jeg skjønner fremdeles ikke helt hvorfor dette ikke fungerte, så hvis noen har en forklaring ville jeg satt pris på det. - Tor (som heretter skal ta litt flere pauser)
ZoRaC Skrevet 5. februar 2007 Skrevet 5. februar 2007 Tenkte på det, men i koden du postet så gjør du jo ikke det? Hvorfor det ikke virker: Prøv f.eks å inkluder https://www.diskusjon.no/functions.php (eller noe sånt) Tror du du da får tilgang til variablene og funksjonene i den? Nei, for den er parset og vises kun som HTML. Når du bruker ./ettellerannet.php er det det samme som å si c:/www/public_html/ettellerannet.php Ser forskjellen?
2rmartin Skrevet 5. februar 2007 Forfatter Skrevet 5. februar 2007 Aha! Da lærte jeg noe nytt i dag også. Skjønner jo at sider som hentes fra et annet domene parses først, men tenkte at det ikke hadde noe å si når jeg inkluderte fra samme subdomene.domene. Grunnen til at det ikke vises i koden jeg la ut er at adressen hentes fra database via en funksjon i functions.php, og jeg tenkte ikke så langt som at feilen kunne ligge der. Men nå fungerer uansett alt som det skal, så da ligger alt til rette for enda en lang natt med programmering. - Tor
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å