Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 10:09 Der er 24 kommentarer og
1 løsning

Sessions har virket, men virker ikke længere

Jeg er ved og lave et login system. Det hele virkede før, men så skulle jeg lige rette i noget HTML. Og nu virker mine sessions ikke længere.

Min side godkend.php vil ikke engang vises hvis der ikke er sat // foran sessions. Nogen der ved hva der kan være galt, og der er ikke blevet rettet i godkend.php

<?php
ob_start();
session_start();
session_register ("s_lvl");
session_register ("s_bruger");
header ("location: upload.php");

//Connecter til MySQL databasen
mysql_connect("localhost", "root", "");
mysql_select_db("rejsetaske");


$bruger        = $_POST['bruger'];
$password    = $_POST['password'];

$resultpass = mysql_query("SELECT `lvl`, `bruger` FROM `brugere` WHERE `bruger` = '". $_POST["bruger"] ."' AND `password` = '". $_POST["password"] ."'") or die (mysql_error());

        if(mysql_num_rows($resultpass) == 0) {
        echo  "<script>window.location.href='Fejl.php';</script>";
        }else{

// Her bliver der lavet session's, for og tjekke om man har været inde og "runde" databasen. Altså den tjekker om man er logget ind, og hva man har af rettigheder
           
            while($r = mysql_fetch_array($resultpass)) {
                $s_bruger = $r["bruger"];
                $s_password = $r["password"];
                $s_lvl = $r["lvl"];
               
            }
echo  "<script>window.location.href='upload.php';</script>";
}

ob_end_flush();
?>
Avatar billede sukos Juniormester
09. juni 2005 - 10:17 #1
Prøv at kikke på
http://dk.php.net/manual/da/ref.session.php


Du henter ikke password fra mysql
$s_password = $r["password"];

og hvor sætter du session???
Avatar billede sukos Juniormester
09. juni 2005 - 10:23 #2
Er det en fil du includer?
Hvis ikke, så en lettere "omskevet":

<?php
session_start();

//Connecter til MySQL databasen
mysql_connect("localhost", "root", "");
mysql_select_db("rejsetaske");

$resultpass = mysql_query("SELECT `lvl`, `bruger` FROM `brugere` WHERE `bruger` = '". $_POST["bruger"] ."' AND `password` = '". $_POST["password"] ."'") or die (mysql_error());

        if(mysql_num_rows($resultpass) != 1) {
        header("Location:Fejl.php");
        exit;
        }else{
        $r = mysql_fetch_array($resultpass);
        $_SESSION["s_bruger"] = $r["bruger"];
        $_SESSION["s_lvl"] = $r["lvl"];
        header("Location:upload.php");
      }
?>
Avatar billede sukos Juniormester
09. juni 2005 - 10:25 #3
evt.

<?php
session_start();

//Connecter til MySQL databasen
mysql_connect("localhost", "root", "");
mysql_select_db("rejsetaske");

$resultpass = "SELECT `lvl`, `bruger` FROM `brugere` WHERE `bruger` = '". $_POST["bruger"] ."' AND `password` = '". $_POST["password"] ."'";

    if(mysql_query($resultpass)) {
        if(mysql_num_rows($resultpass) != 1) {
        header("Location:Fejl.php");
        exit;
        }else{
        $r = mysql_fetch_array($resultpass);
        $_SESSION["s_bruger"] = $r["bruger"];
        $_SESSION["s_lvl"] = $r["lvl"];
        header("Location:upload.php");
      }
    }else{
    echo"Ups, fejl i qurey!<br />". mysql_error();
    }
?>
Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 10:40 #4
Det ændrer jo intet fejlen er der stadig. Bruger jeg dit første forsøg, kan den ikke finde siden godkend.php. Medmindre jeg sætter // foran de 2 linjer

$_SESSION["s_bruger"] = $r["bruger"];
$_SESSION["s_lvl"] = $r["lvl"];
Avatar billede sukos Juniormester
09. juni 2005 - 10:50 #5
Så prøv med: (stadig, det er IKKE en fil du includer!)

<?php
ini_set('error_reporting', "E_ALL");
session_start();

//Connecter til MySQL databasen
mysql_connect("localhost", "root", "");
mysql_select_db("rejsetaske");

$resultpass = "SELECT `lvl`, `bruger` FROM `brugere` WHERE `bruger` = '". $_POST["bruger"] ."' AND `password` = '". $_POST["password"] ."'";

    if(mysql_query($resultpass)) {
        if(mysql_num_rows($resultpass) != 1) {
        header("Location:Fejl.php");
        exit;
        }else{
        $r = mysql_fetch_array($resultpass);
        $_SESSION["s_bruger"] = $r["bruger"];
        $_SESSION["s_lvl"] = $r["lvl"];
        header("Location:upload.php");
      }
    }else{
    echo"Ups, fejl i qurey!<br />". mysql_error();
    }
?>
Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 10:59 #6
Nu vil browser i det mindste vise siden. Men man bliver ikke sendt videre til upload.php, selvom man skriver den rigtige bruger og pass. Man bliver sendt til fejl.php.

Nej det er ikke en side jeg includer. Index.php "poster" bruger og pass videre, hvor så godkend.php skal tjekke om det er et rigtigt bruger og pass. Og hvis det er, så sende en videre til upload.php
Avatar billede sukos Juniormester
09. juni 2005 - 11:22 #7
Ja, så er det jo fordi den IKKE finder et matchende row!
Har du krypteret password'et i DB'en?
Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 11:37 #8
Nej det har jeg ikke gjort endnu.

Men det virkede jo før, der sendte den dig jo godt nok videre hvis bruger og pass var korrekt
Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 12:39 #9
Du har ikke ide til hva der kunne være galt. Det første stykke kode jeg postede, der virker det fint??
Avatar billede sukos Juniormester
09. juni 2005 - 13:01 #10
Flere brugere med samme brugernavn og/eller samme password?

Du kan jo starte "blødt"

<?php
session_start();

//Connecter til MySQL databasen
mysql_connect("localhost", "root", "");
mysql_select_db("rejsetaske");

$resultpass = "SELECT `lvl`, `bruger` FROM `brugere` WHERE `bruger` = '". $_POST["bruger"] ."' AND `password` = '". $_POST["password"] ."'";

    if(mysql_query($resultpass)) {
    echo mysql_num_rows($resultpass) ." rows blev fundet i DB'en!";
    }else{
    echo"Ups, fejl i qurey!<br />". mysql_error();
    }
?>
Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 13:08 #11
Den skriver godt nok "rows blev fundet i DB'en"

Men man kan da vel ikke lave en if sætning, uden at det er lig med et eller andet???
Avatar billede sukos Juniormester
09. juni 2005 - 13:12 #12
Johh, plejer nu at fungere dogt nok.
Men du kan jo prøve:

    if(true == mysql_query($resultpass)) {
    echo mysql_num_rows($resultpass) ." rows blev fundet i DB'en!";
    }else{
    echo"Ups, fejl i qurey!<br />". mysql_error();
    }

Skulle jo så gerne skrive hvor mange rows den har fundet, også hvis det er 0
Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 13:16 #13
Den skriver bare "rows blev fundet i DB'en"
Avatar billede sukos Juniormester
09. juni 2005 - 13:32 #14
Den skulle jo meget gerne skrive antal rows som blev fundet?
Avatar billede sukos Juniormester
09. juni 2005 - 13:32 #15
Vis lige filen du prøver af
Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 13:36 #16
Har prøvet alt muligt. Men får nemt det problem med den ikke vil vise siden. Har du en ide til hvordan jeg kan få den til og virke? Har ikke den fjerneste ide til hva der er galt
Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 13:39 #17
<?php
ini_set('error_reporting', "E_ALL");
session_start();

//Connecter til MySQL databasen
mysql_connect("localhost", "root", "");
mysql_select_db("rejsetaske");

$resultpass = "SELECT `lvl`, `bruger` FROM `brugere` WHERE `bruger` = '". $_POST["bruger"] ."' AND `password` = '". $_POST["password"] ."'";

    if(mysql_query($resultpass)) {
        if(mysql_num_rows($resultpass) != 1) {
        header("Location:Fejl.php");
        exit;
        }else{
        $r = mysql_fetch_array($resultpass);
        $_SESSION["s_bruger"] = $r["bruger"];
        $_SESSION["s_lvl"] = $r["lvl"];
        header("Location:upload.php");
      }
    }else{
    echo"Ups, fejl i qurey!<br />". mysql_error();
    }
?>

Den du skrev længere oppe. Hvis jeg begynder og ændre lidt, så vil den ikke ændre siden
Avatar billede sukos Juniormester
09. juni 2005 - 13:55 #18
Den her SKAL udskrive antal rows:

<?php
ini_set('error_reporting', "E_ALL");
session_start();

//Connecter til MySQL databasen
mysql_connect("localhost", "root", "") or die ("Kunne ikke connecte");
mysql_select_db("rejsetaske") or die ("Kunne ikke vælge DB");

$resultpass = "SELECT `lvl`, `bruger` FROM `brugere` WHERE `bruger` = '". $_POST["bruger"] ."' AND `password` = '". $_POST["password"] ."'";

    if(mysql_query($resultpass)) {
    echo mysql_num_rows($resultpass) ." rows blev fundet i DB'en!";
    }else{
    echo"Ups, fejl i qurey!<br />". mysql_error();
    }
?>
Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 14:06 #19
Det gør den ikke.

Men i den kode jeg skrev som det første. Der virker det jo fint, der er det jo bare de sessions der ikke vil virke
Avatar billede alex_sleiborg Nybegynder
09. juni 2005 - 15:16 #20
Har fået det til og virke nu. Smid et svar, så får du point. Det har du sgu fortjent. Og tak for hjælpen
Avatar billede sukos Juniormester
09. juni 2005 - 19:49 #21
Jahhh, hvis du lige fortæller hvad problemet/løsningen var?
Avatar billede alex_sleiborg Nybegynder
23. juni 2005 - 12:16 #22
Jeps. Det var noget med en header, som var på en af siderne...
Avatar billede sukos Juniormester
23. juni 2005 - 12:26 #23
Ja ok, den ville jo nok være svær for andre at finde! :O)
Avatar billede alex_sleiborg Nybegynder
23. juni 2005 - 12:57 #24
Ja men
Avatar billede alex_sleiborg Nybegynder
23. juni 2005 - 13:03 #25
Ja browseren ville ikke vise godkend.php, når sessions var sat til. Men det var en fejl i headeren i upload.php. Så man skal altså også tjekke de andre sider, som den side der ikke fungerer linker til. Det kan også skabe problemer. Håber det kan hjælpe andre der skulle løbe ind i samme problem som mig
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