Onderstaande code gebruik ik voor het login proces en na het invullen van de juiste mailadres en ww, verschijnt geen error maar ook geen redirect naar index pagina.
Waar moet ik de fout gaan zoeken?


<?php
    include('Inc/config.inc.php');
    if($_SERVER['REQUEST_METHOD'] == 'POST'){
        require('Inc/db-connection.php');
        $errors=array();

        // Controleer het mailadres:
        $mailadres = filter_var($_POST['mailadres'], FILTER_VALIDATE_EMAIL);
        if ((empty($mailadres)) || (!filter_var($mailadres, FILTER_VALIDATE_EMAIL))) {
            $errors['$merror'] = "Jij bent vergeten your mailadres in te typen of het maildres formaat is niet correct";
        }
        // Controleer het wachtwoord:
        $wachtwoord = filter_var($_POST['wachtwoord'], FILTER_SANITIZE_STRING);
        if (empty($wachtwoord)) {
            $errors['$werror'] ="Wachtwoord mag niet leeg zijn";
            }	
            
            if (count($errors) == 0) {
                // Retrieve the user_id, psword, first_name and user_level for that// email/password combination
                $query = "SELECT BehandelaarID, Wachtwoord, Voornaam, Achternaam, GebruikerLevel FROM Behandelaars WHERE Mailadres=?";
                $q= mysqli_stmt_init($dbc);
                
                if (!mysqli_stmt_prepare($q, $query)) {
                    echo "SQL statement failed";
                } else { 
                 // bind $id to SQL Statement
                mysqli_stmt_bind_param($q,"s", $mailadres);
                //execute query
                mysqli_stmt_execute($q);
                $result = mysqli_stmt_get_result($q);
                $row = mysqli_fetch_array($result, MYSQL_NUM);
                if (mysqli_num_rows($result) == 1){
                    //als er een DB record is gevonden en matcht met de gebruikesinput, doe dan het volgende
                    //start de sessie, haal de record de uit de DB en zet ze in een array
                        if (password_verify($wachtwoord, $row[1])){
                            session_start();
                            //verzeker dat gebruikerslevel een integer is.
                            $_SESSION['GebruikerLevel'] = (int) $row[3];
                            // Use a ternary operation to set the URL
                            $url  = ($_SESSION['GebruikerLevel'] === 1 ) ? "index.php" : "admin.php";
                            header('Location: ' . $url);

                        } else { // geen wachtwoord match gevonden
                            $errors['$gwnmatch']="Jouw wachtwoord klopt niet";
                        }


                } else { // geen mail match gevonden
                    $errors['$gmmatch'] = "Er zijn geen records gevonden met dit mailadres";
                }
                
            } 
        }
    }

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="Inc/main.css">
    <title>Logina pagina</title>
    
</head>
<body>
<p>Login pagina</p>
<?php
if (isset($errors['$gwnmatch'])) {
    echo $errors['$gwnmatch'];
}
if (isset($errors['$gmmatch'])) {
    echo $errors['$gmmatch'];
}

?>

<form ation="login.php" method="POST">
<label for="mailadres">E-mailadres:</label><br>	
<input type="text" id="mailadres" name="mailadres" required><span class="regp"><?php if (isset($errors['$merror'])) { echo $errors['$merror']; } ?></span></br>
<label for="wachtwoord">Wachtwoord:</label><br>	
<input type="password" id="wachtwoord" name="wachtwoord" required><span class="regp"><?php if (isset($errors['$werror'])) { echo $errors['$werror']; } ?></span></br>
<input type="submit" value="Inloggen">
<p>Nog geen geregistreerd account?<a href="register.php">Registreer</a></p>
</form>
</body>
</html>
Ja, dat is inderdaad slordig van ze. Ik ben benieuwd naar de phpinfo() :-)
In de disable-functions staat:
disable_functions no value no value
Apart.....
Wat zegt Strato hier over?
- Ariën - op 03/02/2021 21:18:24

Apart.....
Wat zegt Strato hier over?

Vandaag heb ik hen gebeld en uitgelegd wat het probleem is. Ook gevraagd of zij de MysqlND willen installeren en dat zij eerst intern erover hebben. Ik ben benieuwd. Ik heb even onderzoek gedaan naar dit probleem en het blijkt dat het zou niet moeten voorkomen bij de nieuwere versies van PHP en ik zit al op 7.6 aanbevolen door Strato! Even wachten wat zij nu gaan zeggen.
PHP 7.6? Die bestaat niet.
Bedoel je 7.4?
Vandaag heb ik van Strato een reactie ontvangen over waarom ik de functie: mysqli_stmt_get_result() niet kan toepassen en ik ben wel teleurgesteld in hen.

"Zoals zojuist besproken stuur ik je hierbij een e-mail.

Helaas is het niet mogelijk om mysqli_stmt_get_result() toe te passen. Dit heb ik na laten kijken door mijn collega's.

Wel kun je de onderstaande 3 mogelijkheden gebruiken om te communiceren met onze SQL databases.

mysql, mysqli of pdo_mysql

Ik hoop dat ik je hiermee verder kon helpen"

Betekent dit voor mij dat ik mij beter kan richten tot OOP als hobby programmeur PHP?
Het is een mysqli-functie. Dus hun antwoord maakt je niks wijzer. Zo te zien gebruikt deze functie een 'native driver' voor de oude MySQL die niet meegecompileerd is in hun PHP-versie.

Vraag of ze dat kunnen doen, en anders raad ik aan om over te stappen op de OO-versie van MySQLi.

$result = $stmt->get_result();
- Ariën - op 16/02/2021 17:02:54

Het is een mysqli-functie. Dus hun antwoord maakt je niks wijzer. Zo te zien gebruikt deze functie een 'native driver' voor de oude MySQL die niet meegecompileerd is in hun PHP-versie.

Vraag of ze dat kunnen doen, en anders raad ik aan om over te stappen op de OO-versie van MySQLi.

$result = $stmt->get_result();


Precies, van hun antwoord wordt ik ook niet wijzer.
En telefonisch hebben zij aangegeven dat zij dit niet willen doen, maar zij geven niet aan waarom niet.
Misschien heeft het iets te maken met veiligheid of zo, want ik zie op internet dat er veel hits zijn met dat veel hostingbedrijven de MysqlND niet hebben geïnstalleerd of geactiveerd.
Ik ga de OOP-style van prepared statement morgen of zo uitproberen, maar bedoel je hiermee te zeggen dat ik OOP niet hoef te leren? Ik moet eerlijk bekennen dat ik nu een paar video's over OOP heb gekeken en tis niet eenvoudig zoals procedural.
Kennis van OOP is niet verplicht, maar kan wel van pas komen als je er meer uit wilt halen.

Bijvoorbeeld een centrale foutafhandeling op al je queries, of een functie om queries te tellen.

Reageren