Gå til innhold

Hjelp til innlogging med sessions!


Anbefalte innlegg

Skrevet

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å. :)

Videoannonse
Annonse
Skrevet (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 av Runar0
Skrevet (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 av AnaXyd
Skrevet

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

Skrevet

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

Skrevet (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 av WiRRE
Skrevet

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

Skrevet
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..)

Skrevet

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.

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

Skrevet

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

Skrevet

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

Skrevet

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

Skrevet

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");" ?

Skrevet (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 av AnaXyd

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