Gå til innhold

Hjelp til innlogging med sessions!


Anbefalte innlegg

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
Videoannonse
Annonse

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 av Runar0
Lenke til kommentar

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 av AnaXyd
Lenke til kommentar

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
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 av WiRRE
Lenke til kommentar

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
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
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

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. :p

Lenke til kommentar

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

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 av AnaXyd
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...