Avatar billede larma Nybegynder
27. marts 2007 - 11:55 Der er 16 kommentarer og
1 løsning

Problemer med login sjekk

Jeg har en veldig nem login sjekk som ser sådan ud:

function login_control(){
    if(!isset($_SESSION['valid_user'])){
        header("Location:http://login.php");
        exit();
    }
    if(isset($_GET['logut'])){
        $_SESSION = array();
        session_destroy();
        header("Location:http:login.php");
        exit();
    }
}
Denne kontrollerer først om brukeren har logget ind, ved å kontrollere om $_SESSION['valid_user'] er satt. Og etterpå kontrollerer den om brukeren har valgt å logge seg ut, ved å trykke på logut linken. Hele funksjonen virker fint når den ligger i en ekstern fil som bare består av denne ene funksjonen. Men når jeg har funksjonen liggende i en fil sammen med mange andre funksjoner, så får jeg en feilmelding når jeg kaller på den: "Warning: Cannot modify header information - headers already sent bla bla.." Det kan jeg ikke forstå når funksjonen og kallet til den er lige det samme, og det er i tillegg den første funksjonen som blir kalt på de aktuelle sidene?

Mvh
LarMa
Avatar billede larma Nybegynder
27. marts 2007 - 11:59 #1
Bare si til at begge header-Location'ene er ens (header("Location:http://login.php"); Ser at "//" ble borte på den nederste, når jeg copy and pastet.
Avatar billede mccookie Seniormester
27. marts 2007 - 11:59 #2
header("Location:http:login.php");

Skal rettes til:

header("Location:http://login.php");

og generelt mangler der et domæne den refererer til!!

ala header("Location:http://mydomain.dk/login.php");
Avatar billede mccookie Seniormester
27. marts 2007 - 12:01 #3
ellers skal du bruge include(); hvis ikke du vil refererer til et domæne!
Avatar billede michael_stim Ekspert
27. marts 2007 - 12:02 #4
eller uden http ;o)
header("Location:login.php");
Avatar billede jkhaledsoueidan Nybegynder
27. marts 2007 - 12:10 #5
Hvis den ligger i samme domæne
header("Location: login.php");

Eller en anden domæne.
header("Location: http://www.domain.com/login");
Avatar billede larma Nybegynder
27. marts 2007 - 12:24 #6
Takk for svar, men jeg glemte og presisere at det ikke er noe forkert med "header-Location", jeg har lige kortet den ned for utseendes skyld. Og burde ha gjort det på en annen måde, sånn at det ikke ble misforståelser. Den består altså av domene og alt er riktig med "linken". Men jeg får altså en Warning beskjed når denne funksjonen ligger i en fil sammen med flere andre funskjoner. Men når jeg plasserer den i en egen fil, helt alene, og kaller den derfra i stedet så virker den fint. Det er det jeg ikke helt kan forstå. For jeg ønsker å samle alle funsksjonene i en fil, uten å måtte ha en hel del filer bestående av små funksjoner.
Avatar billede mccookie Seniormester
27. marts 2007 - 12:26 #7
Arrgh.... den skriver jo:

Warning: Cannot modify header information - headers already sent

Er der en tom linie eller sender du noget tekst for din header?? Har du evt et link eller kan vi se hele filen?
Avatar billede larma Nybegynder
27. marts 2007 - 12:42 #8
Sånn ser altså starten av alle mine filer ut:
<?php
    session_start();
    include "inc_login_control.php";
    login_control();
    include "inc_functions.php";
?>

Og når jeg har login_control() funksjonen liggene alene i inc_login_control.php og kaller den derfra som vist over, så virker alt helt fint. Men mitt ønske er at det skal se sånn her ut:
<?php
    session_start();
      include "inc_functions.php";
    login_control();
?>
Og at jeg kan ha login_control() funksjonen liggende i inc_functions.php - hvor jeg har alle mine andre funskjoner - og kalle den derfra. Men det er da jeg får en Warning. Og det kan jeg ikke forstå, når det er login_control() funksjonen som blir kalt først i begge eksemplene. Vet ikke om dette gir noen bud på hva som kan være forkert?
Avatar billede mccookie Seniormester
27. marts 2007 - 12:50 #9
Hvad ligger der i dine includes filer?
Avatar billede michael_stim Ekspert
27. marts 2007 - 12:53 #10
Du skal lave checket før din include.
Avatar billede larma Nybegynder
27. marts 2007 - 13:25 #11
mccookie: I inc_functions.php ligger det forskjellige funskjoner som jeg kaller fra de sidene som jeg trenger dem. Det er stort sett funksjoner som brukes for å søke igjennom og liste mapper og dokumenter som ligger i et directory.

Og inc_login_control.php inneholder bare login_control() funskjonen.

michael_stim: Mener du at jeg ikke må ha "check-funksjonen" liggene i en ekstern fil  og kalle på den derfra. At jeg i stedet skal ha koden på den siden som skal checkes? Om du mener jeg skal ha kallet til funksjonen før includen, så går jo ikke det når jeg først må includere filen funksjonen ligger i.
Avatar billede michael_stim Ekspert
27. marts 2007 - 14:10 #12
Hvis den eksterne fil sender noget som helst til skærmen, så må du ikke nej. Så skal du ud i noget rod med at lagre outputtet i serverens hukommelse med ob_start()/ob_flush().
Avatar billede larma Nybegynder
27. marts 2007 - 18:35 #13
Ok skjønner, men post et svar, så du kan få litt poeng michael stim.
Avatar billede larma Nybegynder
27. marts 2007 - 18:54 #14
Bare en siste ting, finnes det noe annet alternativ en å bruke header("Location:enside.php"); ?

F.eks i dette tilfellet, har jeg noe annet alternativ en å bruke header-Location?
if(isset($_SESSION['valid_user'])){
    send brukeren videre til forside.php
}
else{
    send brukeren til login.php igjen
}
Avatar billede michael_stim Ekspert
27. marts 2007 - 20:03 #15
Man kan jo smide et javascript ind måske.
echo "<SCRIPT LANGUAGE=\"JavaScript\">";
echo "location.href=\"index.php\";";
echo "</script>";

Ved ikke lige om det fungerer.

Ingen point til mig tak.
Avatar billede larma Nybegynder
27. marts 2007 - 21:46 #16
Ok, men har sett noen steder at det blir nevt at man kan bruge include() (noen som også mccookie nenvner i denne tråden), men jeg har ikke sett noe konkret eksempel på hvordan. Jeg vet ikke om det er snakk om å inkludere en hel side, i så fall så må jo den siden laves om til en funksjon, som igjen blir hentent via et fuksjonskall. Jeg beskeftiget meg med litt med ASP i sammenheng med et fag på skolen for en del år siden. Og mener å huske at "redirect funksjonen" i ASP var veldig nem uten de store komplikasjonene sammenlignet med PHP's header-Location.
Avatar billede larma Nybegynder
10. april 2007 - 19:42 #17
Ettersom michael stim ikke ville ha pointsene og han var den som hjalp meg tar jeg pointsene selv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I går 20:46 opkaldside Af hagbartm i Mobiltelefoner
I går 16:05 win 10 vil ikke boote Af bb69 i Windows
I går 11:20 Lenovo x390 Af tobberjas i PC
I går 10:14 Alder i Excel Af Nanarsi i Excel
I går 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel