Avatar billede DiscSunshine Nybegynder
17. februar 2012 - 13:17 Der er 4 kommentarer

Login Med md5

Hejsa

jeg sider her og her lavet et login med md5 men kan ikke så den til at virke når jeg logger ind hvordan får jeg den til at sammen ligne min md5 med den md5 der ligger i db


Min Kode
______________________________________________

<?php
echo"<form method='POST'>";

if(isset($_POST['logud']))
{
    session_destroy();
    echo '<meta http-equiv="refresh" content="0">';
}

if(isset($_POST['login']))
{
    if(empty($_POST['brugernavn']))
    {
        echo("Du skal skive brugernavn");
    }
    elseif (empty ($_POST['password']))
    {
        echo ("Du skal skive et Password");
    }
    else
    {
        $brugernavn = $_POST['brugernavn'];
        $password = $_POST['password'];
       
        $query = mysql_query("SELECT * FROM users WHERE brugernavn='$brugernavn'");
       
        if($brugernavn&&$password)
        {
            $numrows = mysql_num_rows($query);
            if($numrows!=0)
            {
                while ($row = mysql_fetch_assoc($query))
                {
                    $dbbrugernavn = $row['brugernavn'];
                    $dbfullenavn = $row['fullenavn'];
                    $dbpassword = $row['password'];
                    if($brugernavn==$dbbrugernavn&&$password==$dbpassword)
                    {
                        $_SESSION['brugernavn'] = $dbbrugernavn;
                    }
                    else
                    {
                        echo"Forkert Password!";
                    }
                }
            }
            else
            {
                echo"Brugeren finnes ikke!";
            }
        }
        else
        {
            die("Du skal skive et brugernavn og password!");
        }
    }
}

if(isset($_POST['opret']))
{
    echo'<meta http-equiv="refresh" content="0;url=opret.php">';
}
else
//når du er logget ind
$brugernavn = $_SESSION['brugernavn'];
if($_SESSION['brugernavn'])

{
    echo "Velkommen " . $_SESSION['brugernavn'] . " ";
    echo "<input class='knap' type='submit' name='logud' value='Log ud'/>";
}
else
{
// Logget ud!
echo"
        <input type='text' name='brugernavn' placeholder='Brugernavn' />
        <input  type='password' name='password' placeholder='password' />
        <input type='submit' name='login' value='log Ind'/>
        <input type='submit' name='opret' value='Opret Bruger'/>";
       

}
?>

______________________________________________

Er der nogle der kan hælpe mig og sige hvordan og forklar lidt til hvordan en md5 virker med at logge ind jeg kan godt lave den når folk opretter sig men ikke med logind

håber der er nogle der kan hælpe mig
Avatar billede inteeeL Nybegynder
17. februar 2012 - 15:18 #1
Hvis kodeordet i databasen allerede er krypteret med md5, skal du blot kryptere kodeordet fra inputtet. Det kunne se sådan her ud:
$brugernavn = $_POST['brugernavn'];
$password = $_POST['password'];
$md5_password = md5( $_POST['password']);


Så tjekker du bare efterfølgende, om du har en bruger i databasen, hvis brugernavn og kodeord matcher de indtastede informationer:
$query = mysql_query("SELECT * FROM users WHERE brugernavn='$brugernavn' AND password='$md5_password'");
[div]

Jeg forstår dog ikke, hvorfor du har følgende linje efter $query:
[div]
if($brugernavn&&$password)

Du validerer jo $brugernavn og $password tidligere i kode, så denne linje er overflødig. Det samme gør du længere nede i koden.

Derudover skal du vide, at meta hører til i <head>-delen. Brug i stedet header til at videresende brugeren.

En sidste ting: du bør validere dine inputs således, at du sikre dem mod SQL-injections. Hertil bruges funktionen mysql_real_escape_string.
Avatar billede inteeeL Nybegynder
17. februar 2012 - 15:35 #2
Du bruger <form>-delen helt forkert. I det hele taget er det en meget rodet kode. Du bør lave separerede filer; en til login, en til oprettelse af bruger og en sidste til at logge ud. Jeg har prøvet at optimere koden en smule.

<?php

if(isset($_GET['logud']))
{
    session_destroy();
    echo header("Location:login.php");
}

if(isset($_POST['login']))
{
    $brugernavn = mysql_real_escape_string( $_POST['brugernavn']);
    $password = mysql_real_escape_string( $_POST['password']);
    $md5_password = md5( $password);
    if(empty($brugernavn))
    {
        echo "Du skal skive brugernavn";
    }
    elseif (empty($password))
    {
        echo "Du skal skive et Password";
    }
    else
    {
        $query = mysql_query("SELECT * FROM users WHERE brugernavn='$brugernavn' AND password='$md5_password'");
        $numrows = mysql_num_rows($query);
        if($numrows > 0)
        {
            while ($row = mysql_fetch_assoc($query))
            {
                $dbbrugernavn = $row['brugernavn'];
                $dbfullenavn = $row['fullenavn'];
                $dbpassword = $row['password'];
               
                $_SESSION['brugernavn'] = $dbbrugernavn;
            }
        }
        else
        {
            echo "Brugeren findes ikke";
        }
    }
}

if(isset($_POST['opret']))
{
    header("Location:opret.php");
}

if($_SESSION['brugernavn'] != '')
{
    echo "Velkommen " . $_SESSION['brugernavn'] . " ";
    echo "<a href='login.php?logud=1'>Logud";
}
else
{
    echo"
        <form method='POST' action='login.php'>
        <input type='text' name='brugernavn' placeholder='Brugernavn' />
        <input  type='password' name='password' placeholder='password' />
        <input type='submit' name='login' value='log Ind'/>
        <input type='submit' name='opret' value='Opret Bruger'/>
        </form>
    "; 
}
?>
Avatar billede olebole Juniormester
17. februar 2012 - 17:43 #3
<ole>

Hvad skal der mon ske, hvis brugeren trykker 'Return' i stedet for at bruge en knap?

/mvh
</bole>
Avatar billede DiscSunshine Nybegynder
18. februar 2012 - 00:40 #4
ja ok nu her jeg prøvet din optimeret kode men nu kan den ikke se ind i min database på den måde at den ikke kan finne mit brugernavn mere
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