Kan iemand mij AUB helpen met het maken van een login in php dit is wat ik al heb.

Een form


<!-- De login form -->
<div class="container mt-5">
	<h3>Login</h3>
	<form method="post" action"login.php" name="login">
	  <div class="form-group">
		<label for="gebruikersnaam">Gebruikersnaam</label>
		<input type="text" name="gebruikersnaam" class="form-control" aria-describedby="emailHelp" placeholder="Voer uw gebruikersnaam in">
	  </div>
	  <div class="form-group">
		<label for="wachtwoord">Password</label>
		<input type="password" name="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
	  </div>
	  <button name="submit" type="submit" value="login" class="btn btn-primary">Submit</button>
	</form>	
</div>	


de sessie waar die naar toe gaat


<?php

    require('config.php')

    session_start();

    $username = trim($_POST['gebruikersnaam']);
    $password = trim($_POST['password']);

    

?>
Zegt je browser dat? Dan zal dat wel komen dat er geen SSL-certificaat aan je domein hangt.
Is dat dan de reden dat ik niet kan inloggen?
Je zegt "kan maar niet inloggen". Waaruit blijkt dit? Krijg je een foutmelding? Is op andere pagina's $_SESSION['gebruikersnaam'] onbekend? Iets anders?

Geef de query eens weer op het scherm, en knip en plak deze in een tool waarmee met je met je database kunt praten (phpMyAdmin of rechtstreeks in de console) en kijk of je resultaat krijgt?

Bouw wat breekpunten in of geef wat tekst weer op het scherm als in code aan bepaalde condities is voldaan zodat je weet welk pad de code kiest om uitgevoerd te worden, dit stuurt je mogelijk richting enige fout die aanwezig kan zijn.

Wat opmerkingen:
- na een header('Location: ...'); hoort meestal een exit; te staan, omdat het zelden tot nooit de bedoeling is dat er daarna nog code wordt uitgevoerd, een header stuurt je niet meteen automagisch naar de nieuwe locatie
- elke pagina waar je een sessie wilt starten of voort wil zetten dient altijd te beginnen met session_start(), daarna kun je $_SESSION gebruiken
- password is een gereserveerd woord in MySQL, als je deze in een query wilt gebruiken doe je er verstandig aan om deze kolom te omvatten met `backticks`, of wellicht beter, om een andere naam voor deze kolom te kiezen
- SQL-injectie voorkom je niet door stripslashes(), de enige veilige combinatie in deze opzet is gebruikmaking van de real_escape_string() functie/methode in combinatie met 'quotes', het een is niet veilig zonder het ander
Dat staat er los van.
Ik zou eerder kijken wat er precies gebeurd, en welke stappen er wel en niet worden doorlopen.
Met andere woorden... debug je script eens door na elke gebeurtenis een echo te plaatsen, en kijk eens wat er precies gebeurd.

Je script is verder gezien de syntax correct.
Errors zou je ook moeten zien.
Het zou zelfs zoiets kunnen zijn als een sessie-directory die niet schrijfbaar is ofzo, maar ja, eerst moet er een soort van stapsgewijze analyse plaatsvinden zodat het probleem vastgesteld kan worden, daarna kan je gaan kijken naar oplossingen.

EDIT: bijvoorbeeld, als je na het verzenden van het loginformulier niet wordt doorgestuurd naar index.php houdt dit simpelweg in dat niet voldaan is aan de conditie dat er één resultaatrij voor de query was. Dat kan weer inhouden dat er géén resultaten waren, of méér dan één (staan er toevallig records dubbel in de logintabel?). Het is vaak een kwestie van uitzoeken waar het schip precies strandt, en dan terugwandelen om te zien waar deze precies op de rotsen liep :p.
De error wijst je daarom altijd de weg, zolang je die maar ergens ziet of logt. (laatste is beter in de praktijk).
Is het goed dat ik name gebruik in mijn loginform? of moet dat een id zijn?
Maar je zegt dat het niet werkt, maar waar blijkt dat nou uit?
name en ID zijn twee verschillende dingen. Met name identificeert je een formulierveld voor formulierafhandelingen.
Dat is allemaal prima, ook zou je de $_POST informatie kunnen inspecteren in login.php door deze naar het scherm te sturen met wat hulpfuncties:
<?php
// declareren
function escape($string) {
    return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}

function dump($array) {
    ?><pre><?php echo escape(print_r($array, true)); ?></pre><?php
}

// aanroepen
dump($_POST);
?>

EDIT: controleer even het gebruik van $_POST['username'] (regel 15) versus $_POST['gebruikersnaam'] (regel 23), dat klopt niet helemaal.
if empty post gebruikersnaam is de naam van mijn textbox veld die hij moet uitlezen. en dan maak ik een variable aan waar ik de gebruikersnaam opsla in $username.

mijn code nu ik heb breaks gebruikt, boven aan een error check en jou functie erbij.


<?php  
    // Start de sessie
    session_start(); 

    error_reporting(E_ALL);
    ini_set('display_errors', '1');

    // Vereist config
    require('config.php');


    debugBreak(error);
    // Variablen voor error bericht
    $error=''; // Variable To Store Error Message
    if (isset($_POST['submit'])) {
        if (empty($_POST['gebruikersnaam']) || empty($_POST['password'])) 
        {
            $error = "Username or Password is invalid";
        }
        else
        {

        // Globale variablen
        $username = trim($_POST['gebruikersnaam']);
        $password = trim($_POST['password']);

        // MySQl injectie beschermen 
        $username = stripslashes($username);
        $password = stripslashes($password);
        $username = mysqli_real_escape_string($username);
        $password = mysqli_real_escape_string($password);

        // Select de database
        $db = msqli_select_db($msqli, "studenten");

        debugBreak(error);
        // Query selecten
        $query = mysqli_query($mysqli, "SELECT * FROM 'studenten' WHERE naam='$username'
        AND password='$password'");
        
        debugBreak(error);
        $rows = mysqli_num_rows($query);
        if($rows == 1){       
            // Redirect user to index.php
            header("Location: index.php");
            exit();
         }
         else
         {
            $error = "credentials not good";
         }
         mysqli_close($mysqli);
    }
}
?>

<?php
    // declareren
    function escape($string) {
        return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
    }

    function dump($array) {
        ?><pre><?php echo escape(print_r($array, true)); ?></pre><?php
    }

    // aanroepen
    dump($_POST);
?>


Reageren