Avatar billede smolle Nybegynder
06. februar 2006 - 16:27 Der er 17 kommentarer og
1 løsning

Login problem med sessions

Er i gang med at lave en gæstebog med login, for at undgå spam. Jeg har så lavet en login form og hvis brugernavn og password er korrekt, så skulle man sendes videre til gæstebogen.
Problemet er, at når man har indtastet brugernavn og password, så sender den ikke en videre til gæstebogen, selvom brugernavn og password er korrekt!
Jeg har sat den til at skrive "Valid" hvis man har indtastet korrekt, hvilket den også gør, men den skulle også redirecte og sætte en session til true, hvilket den ikke gør.
Min kode for at tjekke og redirecte ser således ud:

if($affected_rows == 1) {
        print 'valid';
        $_SESSION['access'] = true;
        header("Location: http://www.minurl.dk/gbook.php?".SID);
        exit;
    }
    else {
        print 'not valid';
    }

Den kan som sagt godt finde ud af om brugernavn og kode er korrekt eller forkert, men den vil bare ikke sende brugeren videre.
Avatar billede jaw Nybegynder
06. februar 2006 - 16:30 #1
Har du haft valud/ikke valid på hele tiden? En header kan ikke udføres, hvis der er output til serveren først (medmindre man fusker lidt). Dog ville du så få en fejl.
Avatar billede smolle Nybegynder
06. februar 2006 - 16:33 #2
Ja, valid har hele tiden været der. Jeg startede med at lave valid-tingen, men bagefter ville jeg så gerne have den til at redirecte også, hvilket den ikke kan.
Den sætter heller ikke den session til true, for prøver jeg manuelt at gå videre til min gbook.php, så får jeg fejl om, at jeg ikke er logget ind. Den skal jo have sessionID'en!
Avatar billede jaw Nybegynder
06. februar 2006 - 16:35 #3
Har du så husket session_start() i toppen af filen?
Avatar billede smolle Nybegynder
06. februar 2006 - 16:38 #4
Jeps.
Avatar billede jaw Nybegynder
06. februar 2006 - 16:39 #5
I begge filer? Og hvis det ikke virker efter du har fjernet din valid-print, så ved jeg ikke lige hvad der er galt...
Avatar billede smolle Nybegynder
06. februar 2006 - 16:44 #6
Nope, det virker ikke (heller ikke uden valid-print) og ja, jeg har session_start() i begge filer.
Avatar billede jaw Nybegynder
06. februar 2006 - 16:47 #7
Du kan prøve at fjerne .SID i din header, men tvivler nu på at det vil ændre noget. Ellers kan jeg ikke se det, og så må du håbe en anden kan...
Avatar billede smolle Nybegynder
06. februar 2006 - 16:50 #8
Har prøvet at fjerne .SID uden effekt. Har også prøvet at sætte en anden header under else, så man skulle blive redirectet til en anden side hvis man indtastede noget forkert, men heller ikke det virker.
Avatar billede jaw Nybegynder
06. februar 2006 - 16:51 #9
Hvad med en hel blank fil, hvor du kun har:
header("Location: gbook.php");
?
Avatar billede smolle Nybegynder
06. februar 2006 - 17:00 #10
Hmm... Det sker der heller ikke noget ved.
Avatar billede JOHN_DOE Nybegynder
06. februar 2006 - 17:44 #11
så vidt jeg ved kan man ikke udskrive (echo og print) før header, session, cookie osv.
Avatar billede smolle Nybegynder
06. februar 2006 - 18:07 #12
Men hvorfor kan jeg så ikke lave en header der virker, i en fil, der ikke indeholder andet?
<html>
<head>
<title>test</title>
</head>
<body>
header("Location: http://www.mitdomæne.dk/gbook.php"); ?>
</body>
</html>

virker heller ikke.
Avatar billede jaw Nybegynder
06. februar 2006 - 18:10 #13
Den indeholder andet. Du har html-tags, og det er ikke tilladt. Der må KUN være:
<?
header("Location: http://www.mitdomæne.dk/gbook.php");
?>

...og intet andet.
Avatar billede smolle Nybegynder
06. februar 2006 - 18:18 #14
Det virker altså heller ikke... Og hvis det passer hvad du skriver, så er header sgu da heller ikke meget værd!
Avatar billede jaw Nybegynder
06. februar 2006 - 18:26 #15
Ork jo, headers er masser værd, hvis man bare bruger dem rigtigt selvfølgelig. Men man kan ikke udskrive noget til browseren, for så at bruge header bagefter (medmindre man som skrevet tidligere fusker, og det gør man selvfølgelig ikke :) ).
Avatar billede smolle Nybegynder
06. februar 2006 - 19:33 #16
Tænkte på, at når man kun skal bruge brugernavn og password til gæstebogen, så ville det vel egentlig være nemmere hvis man bare skulle skrive sit brugernavn og adgangskode når man skulle skrive sin besked og så var det det.
Kan man ikke bare kontrollere med databasen om et indtastet brugernavn og adganskode passer sammen med oplysningerne fra databasen og så kan man kun skrive i gæstebogen, hvis de er indtastet korrekt?
Det ville gøre det hele en del nemmere :D
Avatar billede smolle Nybegynder
07. februar 2006 - 09:07 #17
Eftersom den løsning der virkede var en jeg selv kom frem til, så tillader jeg mig at tage pointene tilbage selv.
Avatar billede smolle Nybegynder
07. februar 2006 - 09:09 #18
Glemte vist at skrive den løsning jeg kom frem til:

if($affected_rows == 1) {
       
        $_SESSION['access'] = true;
        ?>
        <a href="gbook.php?<?=SID; ?>">Fortsæt til gæstebogen.</a>
        <?
    }
    else {
        print 'not valid';
    }

Den redirecter ikke automatisk, men i det mindste virkede det. Jeg tror nu jeg går efter en mere simpel løsning alligevel.
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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