Avatar billede agertz Nybegynder
04. januar 2008 - 21:42 Der er 24 kommentarer og
1 løsning

Gem det korrekte brugernavn som session ved login

Jeg har en side med brugerlogin. Det virker fint, man kan logge ind osv. Men der er en lille fejl.
Den gemme brugernavnet som man logger ind, lad mig tage et eksempel.

Jeg har oprettet mit brugernavn som; Agertz

jeg logger ind som; agertz

Den gemmer så agertz som session, og hver gang jeg fremkalder brugernavnet, fremkalder den agertz som jeg loggede ind med. Hvis jeg var logget ind som AgertZ, havde den gemt det.

Hvordan gør man sådan at den fremkalder nøjagtigt det man er oprettet med??

Har det samme problem med kodeordet, den skælner ikke mellem store og små bogstaver. - Kan i hjælpe?
Avatar billede w13 Novice
04. januar 2008 - 21:45 #1
Jep, hvis du skriver din kode her.
Avatar billede agertz Nybegynder
04. januar 2008 - 21:47 #2
Hvilken kode? - login?
Avatar billede tobias_louv Nybegynder
04. januar 2008 - 21:48 #3
Du skal hive brugernavn og password ud fra databasen og gemme dette i sessions/cookies istedet for det du logger ind med. Forståeligt?
Avatar billede w13 Novice
04. januar 2008 - 21:49 #4
Ja, din PHP-login-kode
Avatar billede agertz Nybegynder
04. januar 2008 - 21:50 #5
<?
session_start();
include("connect.php");

if (isset($_POST['login'])) {
    $brugernavn = mysql_real_escape_string($_POST['brugernavn']);
    $kodeord    = mysql_real_escape_string($_POST['kodeord']);

    $query = mysql_query("SELECT * FROM brugere WHERE brugernavn = '$brugernavn' AND kodeord = '$kodeord' LIMIT 1");



    if (mysql_num_rows($query) == 1) {
        $row = mysql_fetch_assoc($query);
        $_SESSION['logged_in'] = true;
        $_SESSION['username'] = $brugernavn;
        $_SESSION['habbo'] = $row['habbo'];
    $_SESSION['level'] = $row['level'];

    } else {
        $_SESSION['logged_in'] = false;
    }
}
// Er brugeren allerede logget ind?
if ($_SESSION['logged_in'] == true) {
    echo '<b>' . $_SESSION['username'] . '</b><br />';
   
    echo '<img src="http://www.habbo.dk/habbo-imaging/avatarimage?user=' . $_SESSION['habbo'] . '&img_format=gif&action=wav&gesture=sml&direction=3&head_direction=3" div align="right">
        - Indstillinger<br>
        - Community<br>
        - <a href="index.php?side=tagwall" style="text-decoration: none"><font color="#000000">Tagwall</font></a><br>
        - <a href="index.php?side=logud" style="text-decoration: none"><font color="#000000">Log ud</font></a><br>';
    if($_SESSION['level'] >= 1)
{
echo '<a href="index.php?side=hemmeligadminside" style="text-decoration: none"><font color="#000000">- Admin</font></a>';
}
   

} else {
?>
   
    <form method="post" action="index.php">
    <br>B: <input type="text" name="brugernavn"><br />
    K: <input type="password" name="kodeord"><br>
    <input type="submit" name="login" value="Login!">
    </form>
    <a href="index.php?side=opret1" style="text-decoration: none"><font color="#000000">Opret bruger</font></a>
<?
}
?>
Avatar billede jakobdo Ekspert
04. januar 2008 - 21:54 #6
Du gemmer jo info her: $_SESSION['username'] = $brugernavn;
Så hvis man logger ind med agerts, som gemmes det jo netop i session -> username.
Avatar billede agertz Nybegynder
04. januar 2008 - 21:57 #7
Men hvordan gøres det anderledes
Avatar billede w13 Novice
04. januar 2008 - 21:58 #8
Prøv at rette:

    $brugernavn = mysql_real_escape_string($_POST['brugernavn']);
    $kodeord    = mysql_real_escape_string($_POST['kodeord']);

Til:

    $brugernavn = $_POST['brugernavn'];
    $kodeord    = $_POST['kodeord'];
Avatar billede w13 Novice
04. januar 2008 - 21:59 #9
Hvis det virker, skal du bare lige rette:
    $query = mysql_query("SELECT * FROM brugere WHERE brugernavn = '$brugernavn' AND kodeord = '$kodeord' LIMIT 1");

Til:
    $query = mysql_query("SELECT * FROM brugere WHERE brugernavn = 'mysql_real_escape_string($brugernavn)' AND kodeord = 'mysql_real_escape_string($kodeord)' LIMIT 1");
Avatar billede agertz Nybegynder
04. januar 2008 - 22:00 #10
Virker ikke
Avatar billede w13 Novice
04. januar 2008 - 22:04 #11
Jeg kan ikke hjælpe dig, hvis du ikke er mere specifik. Får du en fejlmeddelelse eller er det præcis samme resultat som før?
Avatar billede agertz Nybegynder
04. januar 2008 - 22:04 #12
.. og den kan slet ikke logge ind hvis jeg retter det andet også
Avatar billede agertz Nybegynder
04. januar 2008 - 22:05 #13
Præcis det samme resultat som jeg fik til at starte med :)
Avatar billede nielle Nybegynder
04. januar 2008 - 22:18 #14
Prøv at ændre:

$_SESSION['username'] = $brugernavn;

til:

$_SESSION['username'] = $row['brugernavn'];
Avatar billede agertz Nybegynder
04. januar 2008 - 22:26 #15
Yes man, så virker det med brugernavnet :)
Avatar billede agertz Nybegynder
04. januar 2008 - 22:26 #16
Hvad så med kodeordet?
Avatar billede nielle Nybegynder
04. januar 2008 - 22:32 #17
Sådan?

if (mysql_num_rows($query) == 1) {
    $row = mysql_fetch_assoc($query);

    if ($row['kodeord'] == $_POST['kodeord']) {
        $_SESSION['logged_in'] = true;

        $_SESSION['username'] = $row['brugernavn'];
        $_SESSION['habbo'] = $row['habbo'];
        $_SESSION['level'] = $row['level'];
    } else {
        $_SESSION['logged_in'] = false;
    }
} else {
    $_SESSION['logged_in'] = false;
}
Avatar billede agertz Nybegynder
04. januar 2008 - 22:49 #18
Er det meningen at det samme med false skal komme to gange?
Avatar billede agertz Nybegynder
04. januar 2008 - 22:51 #19
I hvert fald siger den unexpected end, og hvis jeg tilføjer en slut klumme nederst viser den ikke login boksen
Avatar billede nielle Nybegynder
04. januar 2008 - 22:55 #20
Ja, der skal være 2 x false.

Hvis du får en fejl, så er det fordi at du ikke har været omhygelig nok da du indsatte koden i stedet for din oprindelige.
Avatar billede agertz Nybegynder
04. januar 2008 - 23:00 #21
Perfekt. Så passer det. Opret et svar :)

og Tusinde gange tak skal der lyde oveni :)
Avatar billede agertz Nybegynder
04. januar 2008 - 23:00 #22
(Giver point lidt senere, logger lige af en stund)
Avatar billede nielle Nybegynder
04. januar 2008 - 23:01 #23
Svar :^)
Avatar billede nielle Nybegynder
04. januar 2008 - 23:04 #24
Forklaringen på problemet er at MySQL åbenbart ikke skelner til store og små ogstaver når der spørges i basen. Man må derfor dobbelt-tjekke ved at udtrække værdierne og sammenligne på de udtrukne værdier.

Jeg er sikker på at MySQL kan konfigureres til at skelne skarbt imellem store og små bogstaver, men da jeg ikke lige er MySQL haj kan jeg ikke lige give opskriften.
Avatar billede agertz Nybegynder
05. januar 2008 - 00:04 #25
Okay, tak for forklaring :) - og tak for hjælpen. Point er givet
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