Hallo,

Nog een vraag

Met inloggen gebeurt het volgende:




<!DOCTYPE html>
<html>
   <head>
       <title>Inloggen</title>
   </head>

   <body>

   <center>
                <br>
                <h1>Inloggen</h1>
                <br>
                <div style= "background-color: grey; width: 1000px">
                    <br>
                    <br>
                    <form action =# method="POST">
                        <div>
                                <label>Gebruikersnaam</label>
                                <input type="text" name="username" required placeholder="Gebruikersnaam">
                        </div>
                        <br>
                        <br>

                        <div>
                                <label>Password</label>
                                <input type="password" name="password1" required placeholder="Wachtwoord">
                        </div>
                        <br>
                        <br>

                        <div>
                                <input type="submit" value="Login">

                                <button><a href = "Create_user_admin.php">Nog geen account?</a></button>


                        </div>
                    </form>
                    <br>
                </div>
</center>

</body>
</html>




<?php

session_start();

$host = "localhost";
$user = "root";
$password ="usbw";
$db = "login";

$data = mysqli_connect($host, $user, $password, $db);

if($data==false)
{
    die ("Connection error");
}

if($_SERVER ["REQUEST_METHOD"]=="POST")
{
    $username = $_POST["username"];
    $password = $_POST["password1"];

    $sql = "SELECT * FROM user WHERE username = '".$username."' AND  password1 = '".$password."'";
   
    $result = mysqli_query($data,$sql);


if( $result = mysqli_query($data,$sql) )
{
    $row = mysqli_fetch_array($result);
    if( $row["usertype"]=="user" )
    {
        $_SESSION["username"] = $username;
        header ("location:userhome.php");
    }

    elseif($row["usertype"]=="admin")
    {
        $_SESSION["username"] = $username;
        header ("location:adminhome.php");
    }
    else
    {
        echo "username or password incorrect";
    }
} else
{
    echo "De query is niet gelukt: ".mysqli_error($data);
}
}

?>


met user en 1234 inloggen gaat wel, (dan kom je in he mainprogramma terecht) maar met admin en 1234 gaat niet (je zou dan dan in het admingedeelte terecht moeten komen). wat gaat hier weer mis??
Waarom voer je twee keer je query uit? (lijn 72 en 75).

Waarom het niet werkt is iets wat je zelf uit moet zoeken door het te debuggen.
We kunnen immers niet in je database kijken.

Misschien mis je de role admin in het veld usertype?

Een paar opmerkingen:
- Er mist beveiliging tegen SQL-injection. Een gebruiker met de naam Sjiek 'd Frique zal nooit kunnen inloggen. En daarnaast kan Jan en Alleman via [/i]OR 1=1[/i] eenvoudig inloggen. Snel oplossen dus....

- Je inloggegevens zijn onbeveiligd!!!
Zorg ervoor dat je de wachtwoorden netjes hashed met [php]password_hash[/php] en controleert met [php]password_verify[/php].

- Vanwaar twee wachtwoord-velden in je database?

- Het statement van 'username of password incorrect' klopt niet. dit hangt niet van je usertype af. Controleer met mysqli_num_rows() of een record bestaat.
Hoi Arien het geheel draait lokaal is niet het net bestemd!, maar hashen wil ik op een later tijdstip doen!
Ik zou dit bij voorkeur direct doen. Een slot plaats je immers ook niet als laatste.
Net als SQL-injection preventie.
Maar hoe kan ik plaatjes uploaden dan kan ik phpadmin laten zien!


[size=xsmall]Toevoeging op 29/11/2021 20:50:56:[/size]

Probleem is gefixt!

Maar hoe moet je plaatjes uploaden??
dus als ik als gebruiker inlog (user / 1234) kom ik op userhome.php

En wat gebeurt er vervolgens als ik dan in de browser de url adminhome.php typ?

Zo te zien sla je nergens iets op over de role / rechten / usertype in je session. Dus kennelijk controleer je deaar verder niet meer op?

Reageren