Als ik met logout.php uitlog kan ik toch zo met userhome.php inloggen. Dat is niet de bedoeling. Wat doe ik niet goed?

Bijgaand: userhome.php

<?php
session_start();
?>

<!DOCTYPE html>
<html>
<head>
     <title>Opleidingen en Studie</title>
     <link rel="stylesheet" href="style.css">    
     <link rel="shortcut icon" type="image/ico" href="favicon.ico"/>
   </head>


<?php

if(isset($_SESSION ["username"]))
{
    echo "<h1>Welcome ". $_SESSION["username"]."</h1>";
}
?>

<body>
    <nav>
        <ul>
           <li class="dropdown">
                    <a class="dropdown-btn" href="#">Fontys</a>
                    <div class="dropdown-menu">
                    <a href="fontys/prof1/domeinbeschrijvingen/domeinbeschrijvingen_hoofdstuk0.php">Leerjaar 1 - Domeinbeschrijvingen</a>
                        <a href="fontys/ISO.php">Leerjaar 1 - ISO</a>
                        <a href="fontys/BEE.php">Leerjaar 1 - BEE</a>
                        <a href="fontys/HDM.php">Leerjaar 1 - HDM/IBB</a>
                        <a href="fontys/Prof1.php">Leerjaar 1 - PROF 1</a>
                        <a href="fontys/SCM.php">Leerjaar 2 - SCM</a>
                        <a href="fontys/IWP.php">Leerjaar 2 - IWP</a>
                        <a href="fontys/BIS.php">Leerjaar 2 - BIS</a>
                        <a href="fontys/ITA.php">Leerjaar 2 - ITA</a>
                        <a href="fontys/PROG.php">Leerjaar 2 - PROG</a>
                        <a href="fontys/Prof2/prof2_start.php">Leerjaar 2 - PROF 2</a>
                        <a href="fontys/KTAF.php">Leerjaar 3 - KTAF</a>
                        <a href="fontys/IDI/IDI.php">Leerjaar 3 - IDI</a>
                        <a href="fontys/Prof3.php">Leerjaar 3 - PROF 3</a>
                        <a href="fontys/BIA.php">Leerjaar 4 - BIA</a>
                        <a href="fontys/EIM.php">Leerjaar 4 - EIM</a>
                        <a href="fontys/Prof4.php">Leerjaar 4 - PROF 4</a>
                        <a href="fontys/Afstuderen/Andere afstudeeropdracht/Andereafstudeeropdracht_hoofdstuk0.php">Leerjaar 4 - Andere afstudeeropdracht</a>
                        <a href="fontys/Afstuderen/Competent/Competent_hoofdstuk0.php">Leerjaar 4 - Competent afstuderen</a>
                    </div>
                </li>

                <li class="dropdown">
                    <a class="dropdown-btn" href="#">Agrarische Hogeschool</a>
                    <div class="dropdown-menu">
                        <a href="HAS/glasgroenteteelt.php">Glasgroenteteelt</a>
                    	<a href="HAS/glasbloementeelt.php">Glasbloementeelt</a>
                        <a href="HAS/potplantenteelt.php">Potplantenteelt</a>
                        <a href="HAS/boomteelt.php">Boomteelt</a>
                        <a href="HAS/plantenveredeling.php">Plantenveredeling</a>
                        <a href="HAS/Techniekenmotoren.php">Techniek en motoren</a>
                        <a href="HAS/techniekgeslotenteelten.php">Techniek gesloten teelten</a>
                        <a href="HAS/techniekopenteelten.php">Techniek open teelten</a>
                        <a href="HAS/bodemgeslotenteelten.php">Bodem gesloten teelten</a>
                        <a href="HAS/bodemopenteelten.php">Bodem open teelten</a>
                        <a href="HAS/exportmanagement.php">Exportmanagement</a>
                        <a href="HAS/marketing.php">Marketing</a>
                        <a href="HAS/Onderszoeksmethodieken.php">Onderszoeksmethodieken</a>
                        <a href="HAS/weefslkweek.php">Weefselkweek</a>
                        <a href="HAS/gewasbescherming.php">Gewasbescherming</a>
                        <a href="HAS/afstudeeropdracht.php">Afstudeeropdracht</a>
                        <a href="HAS/wiskunde.php">Wiskunde</a>
                        <a href="HAS/statistiek.php">Statistiek</a>
                        <a href="HAS/biomoleculen.php">Biomocleculen</a>
                        <a href="HAS/POR/h0.php">Proefonderzoek en rapportage</a>
                    </div>
                <li class="dropdown">
                    <a class="dropdown-btn" href="#">Middelbare Tuinbouwschool</a>
                    <div class="dropdown-menu">
                        <a href="Mtus/groenteteelt.php">Groenteteelt</a>
                        <a href="Mtus/bloementeelt.php">Bloementeelt</a>
                        <a href="Mtus/bodemkunde.php">Bodemkunde</a>
                        <a href="Mtus/techniek.php">Techniek</a>
                        <a href="Mtus/arbeidskunde.php">Arbeidskunde</a>
                        <a href="Mtus/plantenkennis.php">Plantenkennis</a>
                        <a href="Mtus/natuurkunde/natuurkundeh0.php">Natuurkunde</a>
                    </div>
                </li>
                <li class="dropdown">
                    <a class="dropdown-btn" href="#">Biologische School</a>
                    <div class="dropdown-menu">
                        <a href="Bios/nederlands.php">Nederlands</a>
                        <a href="Bios/engels.html">Engels</a>
                        <a href="Bios/wiskunde.php">Wiskunde</a>
                        <a href="Bios/biologie.php">Biologie</a>
                        <a href="Bios/scheikunde.php">Scheikunde</a>
                        <a href="Bios/naturkunde.php">Natuurkunde</a>
                        <a href="Bios/plantaardig.php">Plantaardig</a>
                        <a href="Mtus/natuurkunde/natuurkundeh0.php">Natuurkunde</a>
                    </div>
                </li>
                </li>
                <li class="dropdown">
                    <a class="dropdown-btn" href="#">Nieuwland en GIS</a>
                    <div class="dropdown-menu">
                        <a href="GIS/Cartografie/cartografieh0.php">Cartografie</a>
                        <a href="#">Link 2</a>
                        <a href="#">Link 3</a>
                        <a href="#">Link 4</a>
                    </div>
                </li>
                <li class="dropdown">
                    <a class="dropdown-btn" href="#">Excel</a>
                    <div class="dropdown-menu">
                        <a href="Excel/Macros.php">Macro's 1</a>
                        <a href="Excel/Visualbasic.php">Macro's 2</a>
                        <a href="#">Link 3</a>
                        <a href="https://www.pdftoexcelonline.com/nl/">PDF naar Excel converteren</a>
                    </div>
                </li>
                <li class="dropdown">
                    <a class="dropdown-btn" href="#">Programmeren</a>
                    <div class="dropdown-menu">
                        <a href="#">C++ 1</a>
                        <a href="#">C++ 2</a>
                        <a href="Programmeren/Python/ProgrammeursleerlingH0.php">Python Programmeursleerling</a>
                        <a href="Programmeren/VB/VBH1.php">VB6</a>
                        <a href="Programmeren/R/RH0.php">R</a>
                        <a href="Programmeren/JavaScript/H1.php">JavaScipt</a>
                        <a href="#">Java</a>
                    </div>
                </li>
                <li class="dropdown">
                    <a class="dropdown-btn" href="#">Werk</a>
                    <div class="dropdown-menu">
                    <a href="Testen/Paragraaf1.1.php">Testen</a>
                    <a href="Requirments/Requirments_hoofdstuk0.php">Requirements</a>
                    <a href="Blueriq/bmf_sheet1en2.php">Blueriq - BMF</a>
                    </div>
                </li>
                </li>
                <li class="dropdown">
                    <a class="dropdown-btn" href="#">Kringloop</a>
                    <div class="dropdown-menu">
                    <a href="Andere/Verhage/Verhageh0.php">Marketing Verhage</a>
                    <a href="Andere/Mindmaps/Mindmapsh0.php">Mindmaps</a>
                    <a href="Andere/Boekhouden/h0.php">Boekhouden Geboekstaafd 2</a>
                    <a href="Andere/Informatieanalyse/h0.php">Informatieanalyse</a>
                    <a href="Andere/Prince/Princeh0.php">Prince 2</a>
                    <a href="Werk/UML/UMLh0.php">UML (RVO)</a>
                    <a href="Werk/Requirments/Requirments_Hoofdstuk0.php">Requirments (RVO)</a>
                    <a href="Werk/Testen/Inhoudsopgave.php">Testen (RVO)</a>
                    <a href="Werk/TMap/TmapexamenVoorbeeld1.php">TMap Samenvatting</a>
                    <a href="Andere/Onderzoek_De basis/h0.php">Onderzoek De Basis</a>
                    <a href="Andere/Hacken/h0.php">Hacken</a>
                    <a href="Andere/EleCommunicatie/h0.php">Elementaire Communicatie</a>
                    <a href="Andere/WatIsOnderzoek/h0.php">Wat Is Onderzoek?</a>
                    <a href="Andere/BeherenArchitectuur/d1h0.php">Beheren Onder Architectuur</a>

                    </div>
                </li>
                <li class="dropdown">
                    <a class="dropdown-btn" href="#">Open Universiteit</a>
                    <div class="dropdown-menu">
                    <a href="OU/H0.php">GIS Module beschrijving (inleiding)</a>
                    <a href="OU/InleidingInformatica/LE0a.php">Inleiding Informatica</a>
                    <a href="OU/RelationeleDatabases/LE0a.php">Relationele Databases</a>
                    <a href="OU/MDD/LE0a.php">Model Driven Development</a>

                    </div>
                </li>
                <li class="dropdown">
                    <a class="dropdown-btn" href="#">Logout</a>
                    <div class="dropdown-menu">
                        <a href="http://localhost:8080/website/login2.php">Logout</a>

                    </div>
                </li>
            </ul>
    </nav>
</head>
</html>


</body>
</html>


Login2.php

<?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);
}
}

?>


Logout.php

<?php

session_start();

if(isset($_SESSION['username']))

{
    session_destroy();

    echo "<script>location.href='../userhome.php'</script>";

}
else
{

    echo "<script>location.href='../login2.php'</script>";
    
}

?>
Kan je code-tags gebruiken om je PHP-code heen, en deze even inkripten tot een acceptabel aantal regels.

- Verder zie ik een flinke SQL-injection.

- Verder klopt deze echo niet:
echo "username or password incorrect";

Die trigger je op een vreemd moment.

- Verder controleer je niet op userhome.php of de bewuste sessie bestaat. jan en alleman kunnen deze gewoon aanroepen.
Hoi Arien,

De site komt niet op het web te staan maar dat zak inderdaad nog beveiligd worden, Je andere 2 opmerkingen snap ik tot nog toe niet. Dat iedereen er in kan snap ik. Dat was ook de reden dat ik het vroeg. Hoe moet je userhome.php aanpassen dat het niet meer kan totdat je het goede wachtwoord en gebruikersnaam hebt ingevuld?

Groetjes
Ed

Je moet goede logica hebben.

Allereerst moet je de juiste stappen maken bij de controle van het inloggen

- is er een gebruikersnaam wachtwoord ingevuld (controleren op lege velden)
- is de juiste gebruikersnaam en/of wachtwoord ingevuld (controleren in de database)

Als alles correct is, dan plaats je een sessie met bijv:
$_SESSION['LoggedIn'] = 1;


Op userhome.php controleer je dus of die sessie bestaat!

De controles met: $row["usertype"]=="admin" zijn niet relevant bij het inloggen. Dit staat los van het inloggen en gebruik je enkel op plekken waar je wilt controleren. Bijvoorbeeld bij een link naar een adminpaneel.

Reageren