AnaXyd Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 Har lett uhoverlig mye på google nå, og har funnet noe som funker nogenlunde. Men det funker ikke på de sidene jeg skal beskytte med en session kode, og jeg får bare noe som: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /sti/til/fil/index.php:1) in /sti/til/fil/fil/index.php on line 2 Warning: Cannot modify header information - headers already sent by (output started at /sti/til/fil/fil/index.php:1) in /sti/til/fil/fil/index.php on line 4 Her er koden jeg bruker på de sidene jeg skal beskytte: <? session_start(); if(!session_is_registered(myusername)){ header("location:/login1/index.php"); } ?> Men det fungerer rett og slett ikke å beskytte. Noen som veit om noen script som fungerer? Eller, går det an å fikse scriptet jeg bruker slik at det fungerer 100%? Om ønskelig kan jeg oppgi resten av scriptet også. Lenke til kommentar
Runar0 Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 (endret) Prøvde du søkefunksjone før du postet? Som du vil finne så kommer denne feilen av at du allerede har send tekst til browseren og dermed så kan ikkje header informasjonen som session_start trenger sendes. Du finner sikkert ein bedre forklaring vist du prøver å søke. Endret 19. januar 2008 av Runar0 Lenke til kommentar
AnaXyd Skrevet 19. januar 2008 Forfatter Del Skrevet 19. januar 2008 (endret) Fant noe rart, men ikke en endelig forklaring på dette her. Fikk for meg at jeg skulle legge til ob_start() øverst i koden som verifiserer sessionsene. Er det riktig? Men det jeg egentlig lurte på, var om dere visste om ett script som fungerte...? Endret 19. januar 2008 av AnaXyd Lenke til kommentar
jokkakim Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 (endret) ob_start() <?phpob_start(); session_start(); if(!session_is_registered(myusername)){ header("location:/login1/index.php"); } ob_end_flush(); ?> Endret 19. januar 2008 av jokkakim Lenke til kommentar
AnaXyd Skrevet 20. januar 2008 Forfatter Del Skrevet 20. januar 2008 Det samme skjer nå også.. Prøver å finne et annet script jeg kan bruke, eller så må jeg til å feilsøke det jeg bruker nå grundig.. Lenke til kommentar
jokkakim Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 det funket fint her, ble sendt til "/login1/index.php". hvilke feilmelding får du nå? Lenke til kommentar
AnaXyd Skrevet 20. januar 2008 Forfatter Del Skrevet 20. januar 2008 Hmm, kanskje det er noe annet da, for jeg fikk samme feilen.. Lenke til kommentar
itsmebth Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 Hva med å forklare hva som er galt istedenfor å bare gi h*n en workaround (Spesielt på en måte som for det til se ut som det er den "riktige" løsningen). Feilen her er (som Runar0 sa) at du allerede har sendt tekst. Sørg for at session_start er foran all output (ikke bare echo, men også områder som ikke er PHP-kode). PS: Så vidt jeg husker, er session_is_registered deprecated (det anbefales å ikke bruke den). sett error_reporting(E_ALL | E_NOTICE); øverst for å finne sånne "feil". Lenke til kommentar
WiRRE Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 (endret) Har lett uhoverlig mye på google nå, og har funnet noe som funker nogenlunde. Men det funker ikke på de sidene jeg skal beskytte med en session kode, og jeg får bare noe som: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /sti/til/fil/index.php:1) in /sti/til/fil/fil/index.php on line 2 Warning: Cannot modify header information - headers already sent by (output started at /sti/til/fil/fil/index.php:1) in /sti/til/fil/fil/index.php on line 4 Her er koden jeg bruker på de sidene jeg skal beskytte: <? . session_start(); if(!session_is_registered(myusername)){ header("location:/login1/index.php"); } ?> Men det fungerer rett og slett ikke å beskytte. Noen som veit om noen script som fungerer? Eller, går det an å fikse scriptet jeg bruker slik at det fungerer 100%? Om ønskelig kan jeg oppgi resten av scriptet også. Lagrer du filene dine i utf8? Hvis du gjør det, så prøv å lagre de uten "BOM".. Hadde store problemer med dette selv... Husk at det ikke må være noen blanke linjer før php koden, som sender info til browseren. Eks: . <--ting her... <? session_start(); if(!session_is_registered(myusername)){ header("location:/login1/index.php"); } ?> Endret 20. januar 2008 av WiRRE Lenke til kommentar
AnaXyd Skrevet 20. januar 2008 Forfatter Del Skrevet 20. januar 2008 Jepp, ser ut som akkurat den er litt utdatert... Php koden med session greiene er helt øverst i html'en også, slik som den skal være.. Når jeg slang inn error_reporting linja fikk jeg følgende feil: Notice: Use of undefined constant myusername - assumed 'myusername' in /bane/til/fil/index.php on line 5 Line 5 er: if(!session_is_registered(myusername)){ Lenke til kommentar
AnaXyd Skrevet 20. januar 2008 Forfatter Del Skrevet 20. januar 2008 Lagrer du filene dine i utf8? Hvis du gjør det, så prøv å lagre de uten "BOM".. Hadde store problemer med dette selv... Husk at det ikke må være noen blanke linjer før php koden, som sender info til browseren. Eks: . <--ting her... <? session_start(); if(!session_is_registered(myusername)){ header("location:/login1/index.php"); } ?> Jeg lagrer det i utf8 ja, og prøvde akkurat uten BOM signaturen. Det er heller ingenting før "<?", så jeg kan ikke skjønne hva dette kommer av. (Funker ikke uten BOM heller..) Lenke til kommentar
Peter Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 Feilmeldingen du skrev over blir skrevet ut, dermed kan ikke flere headere bli sendt. Du burde vurdere å rette opp feil... Når det er sagt så skal header("Location: ...") ha en absolutt uri, ikke en relativ en. Lenke til kommentar
WiRRE Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 Lagrer du filene dine i utf8? Hvis du gjør det, så prøv å lagre de uten "BOM".. Hadde store problemer med dette selv... Husk at det ikke må være noen blanke linjer før php koden, som sender info til browseren. Eks: . <--ting her... <? session_start(); if(!session_is_registered(myusername)){ header("location:/login1/index.php"); } ?> Jeg lagrer det i utf8 ja, og prøvde akkurat uten BOM signaturen. Det er heller ingenting før "<?", så jeg kan ikke skjønne hva dette kommer av. (Funker ikke uten BOM heller..) Filsøkings metoden her er ganske enkel.. begyn med: <?php sesion_start(); ?> så bygger du på til du får feilmeldinga di... Lenke til kommentar
itsmebth Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 Du bør bruke $_SESSION istedenfor session_register. session_register virker bare hvis register_globals er på, noe som det ofte ikke er (og bør ikke være). Lenke til kommentar
Wackamole Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 Tror du kan bruke javascript til og sende bukeren videre, du sender ut to headere nå... <? session_start(); if(!session_is_registered(myusername)){ header("location:/login1/index.php"); } ?> og Peter har helt rett i at det skal være en full url, det skal ikke stå bare /login/index.php Det skal stå f.eks. http://www.mylocalhost/login/index.php ./Famen Lenke til kommentar
LoS Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 Altså, headers blir sent i /sti/til/fil/index.php og feilen kommer i /sti/til/fil/fil/index.php. Med mindre du har surra med feilene dine litt så vil det si at headears allerede blir sent i include-scriptet ditt eller hva det når er. Det kan være en ekstra space etter ?> der f.eks. Bruker du ikke to filer så se bare bort ifra denne posten. Lenke til kommentar
AnaXyd Skrevet 20. januar 2008 Forfatter Del Skrevet 20. januar 2008 Hmm, jeg får det virkelig ikke til. Kanskje jeg rett og slett legger inn koden feil? For dette fungerte nemlig i testsiden jeg lagde når jeg fulgte guiden jeg brukte. Slik ser begynnelsen av koden min ut: <? session_start(); if(!session_is_registered(myusername)){ header("location: http://min.host.no/login/index.php"); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nb-no" lang="nb-no"> <head> Den første <? er på linje 1, og det er absolutt ingenting foran den. Men jeg lurer på et par ting, for det er noe som virker litt mystisk... Hvordan kan den vite hva (myusername) er fornoe? Må ikke dette defineres? Dette defineres kun i .php koden som logger inn brukeren og setter de ulike sessionsene. Er dette nok til at den skjønner hva det er? Og hva gjør egentlig "header("location: http://min.host.no/login/index.php");" ? Lenke til kommentar
Wackamole Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 Og hva gjør egentlig "header("location: http://min.host.no/login/index.php");" ? Den sender deg videre til siden, vis du ikke trenger den, så kan du jo bare ta den vekk, og sette en "exit;" istedenfor. ./Famen Lenke til kommentar
AnaXyd Skrevet 20. januar 2008 Forfatter Del Skrevet 20. januar 2008 Aha! Så det er den som sender deg tilbake til f.eks loginsida om du ikke har en registrert session? Lenke til kommentar
AnaXyd Skrevet 20. januar 2008 Forfatter Del Skrevet 20. januar 2008 (endret) Jøss, det funker faktisk med denne koden i samme mappe som det andre login greiene: <? session_start(); if(!session_is_registered(myusername)){ header("location: http://min.host.no/login/index.php"); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> LOGIN SUKSESS!! </body> </html> For jeg har lagt login scriptet i en annen mappe enn selve sidene som skal skjules, så jeg går utifra at dette er problemet? Hvorfor er det isåfall slik? Endret 20. januar 2008 av AnaXyd 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å