Avatar billede Slettet bruger
05. december 2009 - 14:46 Der er 4 kommentarer og
1 løsning

Problemer med Session

Hej alle sammen. Er endnu engang løbet ind i problemer.

Er i gang med at lave et "log ind" system. I systemet skal der være en menu, alt efter om man er logget ind eller ej.
Men jeg kan bare ikke få det til at virke.

Har følgende filer:

(Logind-ok.php)

<?php
session_start();
if(isset($_GET["submit"]))
{
    login($_POST["username"],md5($_POST["password"]));
}
function login($username,$password)
{   
    require_once("includes/DbConnector.php");
    $db = new DbConnector();
    $db->connect();
    $query = "SELECT * FROM jap_brugere WHERE kodeord = '".md5($_POST['password'])."' AND brugernavn='".$_POST['username']."'";
    $result = $db->query($query);
    $result = mysql_num_rows($result);  // Findes rækken?
   
    if($result!="0"){
    // Login er rigtig. Sætter sessions.
    $_SESSION["password"] = $password;
    $_SESSION["username"] = $username;
        echo "Du er nu logget ind";
    }
    else
    {
        $wrong_login_message = "Forkert brugernavn eller kodeord. Prøv igen.";
    }
}
require_once("header.php");


?>

(Index.php)

<?php
session_start();

$loggedin = false;
// Tjekker om man er logget ind.
if(session_is_registered("username") && session_is_registered ("password"))
{
    $loggedin = true;
}
?>


(Functions.php)

<?php
/*
Tjekker om brugeren er logget ind, og viser derefter den tilhørende menu.
*/
function menu_logged_in()
{
    if($loggedin==false)
    {
        include("includes/HeaderMenu_NotLoggedIn.php"); //User is not logged in
    }
    else
    {
        include("includes/HeaderMenu_LoggedIn.php"); //User is logged in
    }
}
?>

_______________

I min index.php fil har jeg også en:
require_once("functions/functions.php");

Log ind systemet virker vidst, for den udskriver "Du er nu logget ind". Men menuen skifter ikke, til den menu der skulle være når man er logget ind.
Hvad har jeg gjort galt?

Håber I forstår mig.

Mvh.
Anders Friis
Avatar billede repox Seniormester
05. december 2009 - 15:32 #1
Det er fordi din $loggedin variabel i menu_logged_in() funktionen er udefineret og vil derfor altid evalueres som false.

Normale variabler er kun tilgængelige i det rum (scope) de er defineret i.

Det kan du læse meget mere om her:
http://php.net/manual/en/language.variables.scope.php
Avatar billede Slettet bruger
05. december 2009 - 17:57 #2
Undskyld hvis det er et dumt spørgsmål. Har kigget lidt på dit link, men tror ikke helt jeg forstår.

Sådan som jeg læser det skal jeg skrive "global" et sted. Men hvor, hvordan og hvorfor (:

Er stadig lidt grøn på php, men prøver virkelig at lære det.
Avatar billede repox Seniormester
05. december 2009 - 18:40 #3
Problemet ligger nok i at du har valgt dig at bruge noget forældet skrammel. Det ligner noget fra den tidlige PHP4 tid blandet sammed med noget nyere kode.

At bruge global bare for at bruge det er tåbeligt.
Anvend istedet de superglobale variabler du har til rådighed og opdater koden til noget kode som - ikke alene er mere sikker - men som også skaber en pænere og mere struktureret kode.
Avatar billede Slettet bruger
05. december 2009 - 19:31 #4
Hehe, okay :)

Jeg må bare i gang med at læse noget om superglobale varibler så :)
Avatar billede Slettet bruger
14. januar 2013 - 08:50 #5
repoxs profil er lukket. Så her er et svar.
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