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>
Vandaag heb ik mijn script aangepast naar prepared statement, maar dan OOP style en helaas ondersteunt Strato dit ook niet.

Mijn script


$stmt = $dbc->prepare($sql);
    $stmt ->bind_param('s', $vl);
    $stmt ->execute();
    $result = $stmt->get_result(); 
    //$veritficatiesleutel =  $result->num_rows();
    if ($result->num_rows == 1) {
        echo "we gaan jouw account activeren";
        
    } else {
        echo "Account is reeds gevalideerd!";
    }
}

Van Strato error_log krijg ik foutmelding:

PHP Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::get_result() in wachtkamer.php:11
Heeft het nog zin om bij Strato te blijven? Ikzelf denk ik het niet en wat zou een goede alternatief zijn, denken jullie?
Vraag ze eens waarom ze 'mysqlnd' en dus de MySQL native driver' niet ondersteunen? En welke PHP-versie heb je?

En anders raad ik aan om gewoon over te stappen op een fatsoenlijke hosting provider.
TS kan beter gelijk overstappen, Strato heeft bij veel dingen geen ondersteuning of functies die niet werken, je kan er niet eens fatsoenlijk DNS instellen.. Verder is de klantengedeelte daar ook bijzonder klein..
- Ariën - op 05/03/2021 23:48:10

Vraag ze eens waarom ze 'mysqlnd' en dus de MySQL native driver' niet ondersteunen? En welke PHP-versie heb je?

En anders raad ik aan om gewoon over te stappen op een fatsoenlijke hosting provider.

In het verleden heb ik ze eerder gevraagd of zij de Mysql native driver willen installeren en zij geven aan dat zij dit niet willen doen. En verder geven zij geen reden waarom zij het niet willen doen.
Wat is een goeie hosting provider in NL die zulke beperkingen niet heeft vraag ik mij af? Bestaat ergens een lijst waar die hosting provider worden gereviewd?
Ik gebruik PHP-versie 7.4
Ray Mond op 06/03/2021 15:11:57

TS kan beter gelijk overstappen, Strato heeft bij veel dingen geen ondersteuning of functies die niet werken, je kan er niet eens fatsoenlijk DNS instellen.. Verder is de klantengedeelte daar ook bijzonder klein..


Zou alleen al vanwege de vreselijk irritante tv reclame overstappen ;-)
Frank Nietbelangrijk op 07/03/2021 11:17:55

[quote="Ray Mond op 06/03/2021 15:11:57"]
TS kan beter gelijk overstappen, Strato heeft bij veel dingen geen ondersteuning of functies die niet werken, je kan er niet eens fatsoenlijk DNS instellen.. Verder is de klantengedeelte daar ook bijzonder klein..


Zou alleen al vanwege de vreselijk irritante tv reclame overstappen ;-)
[/quote]
Juist daarom blijf ik het Strâtòoooh noemen. Vreselijke reklame inderdaad!
Kan het toevallig niet zo zijn dat Mohamed zo'n standaard webhostingpakket heeft in plaats van een VPS? Hij kan toch gewoon een VPS huren bij STRATO en dan zelf alles naar wens instellen?

Reageren