Geen foutmelding en geen loginproces...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Mohamed nvt

Mohamed nvt

31/01/2021 23:23:46
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?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>
 
PHP hulp

PHP hulp

25/04/2024 14:32:36
 
- Ariën  -
Beheerder

- Ariën -

01/02/2021 00:01:07
Quote Anchor link
Haal de single-quotes eens weg:
$errors[$merror]

Maar waarom gebruik je variabelen in je index?
Een error is toch een error?
 
Adoptive Solution

Adoptive Solution

01/02/2021 12:32:59
Quote Anchor link
Op regel 78 ontbreekt een deel van de action:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form ation="login.php" method="POST">
 
Mohamed nvt

Mohamed nvt

01/02/2021 14:43:53
Quote Anchor link
- Ariën - op 01/02/2021 00:01:07:
Haal de single-quotes eens weg:
$errors[$merror]

Maar waarom gebruik je variabelen in je index?
Een error is toch een error?

Die single-quotes gebruik ik ook bij mijn andere formulier en werkt daar prima. Ik zie dus geen relatie tot dat het loginproces niet werkt om eerlijk te zijn. Verder gebruik ik een error['vnerror'] als een identifier om naast voornaam input de foutmelding weer te geven



Toevoeging op 01/02/2021 14:47:32:

Adoptive Solution op 01/02/2021 12:32:59:
Op regel 78 ontbreekt een deel van de action:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form ation="login.php" method="POST">


Welk deel ontbreek er dan? Dezelfde code gebruik ik bijv op registratiepagina werkt daar prima...
Gewijzigd op 01/02/2021 14:48:49 door Mohamed nvt
 
- Ariën  -
Beheerder

- Ariën -

01/02/2021 14:54:04
Quote Anchor link
Die single-quotes horen er niet als je in de index een variabele gebruikt. Anders zal je een warning krijgen.

Verder staat er in je code 'ation' in plaats van 'action'.
 
Mohamed nvt

Mohamed nvt

01/02/2021 15:05:54
Quote Anchor link
- Ariën - op 01/02/2021 14:54:04:
Die single-quotes horen er niet als je in de index een variabele gebruikt. Anders zal je een warning krijgen.

Verder staat er in je code 'ation' in plaats van 'action'.

Oh dat wist ik niet. Tnx!
Die Ation heb ik over het hoofd gezien.
Ik heb het nu aangepast en na het invullen van de juiste gegevens klik op verzenden en ik krijg een wit loginpagina en geen redirect en geen foutmelding helaas...
Enig idee waar ik de fout moet gaan zoeken?
 
- Ariën  -
Beheerder

- Ariën -

01/02/2021 15:14:21
Quote Anchor link
Een hele hagel-witte pagina? Of een normale pagina met lege inhoud?

In het eerste geval raad ik aan om je error_log erbij te pakken
In het tweede geval raad ik aan om defensief te werken en elk statement met een true of false af te handelen. Blijkbaar evalueert je statement in een true of false waarbij je één van beiden niet controleert. En dan gebeurt er in die statement niks waarna je script weer verder gaat. Het neergooien van een aantal echo's helpt hierbij om te zien welk pad er wordt doorlopen.
Gewijzigd op 01/02/2021 15:15:19 door - Ariën -
 
Ozzie PHP

Ozzie PHP

01/02/2021 16:07:45
Quote Anchor link
- Ariën - op 01/02/2021 00:01:07:
Haal de single-quotes eens weg:
$errors[$merror]

Maar waarom gebruik je variabelen in je index?
Een error is toch een error?

Ik vermoed dat niet de single quotes wegmoeten, maar het $-teken. Dat hoort waarschijnlijk geen variabele te zijn. Dus: $errors['merror']
 
Mohamed nvt

Mohamed nvt

01/02/2021 22:37:26
Quote Anchor link
- Ariën - op 01/02/2021 15:14:21:
Een hele hagel-witte pagina? Of een normale pagina met lege inhoud?

In het eerste geval raad ik aan om je error_log erbij te pakken
In het tweede geval raad ik aan om defensief te werken en elk statement met een true of false af te handelen. Blijkbaar evalueert je statement in een true of false waarbij je één van beiden niet controleert. En dan gebeurt er in die statement niks waarna je script weer verder gaat. Het neergooien van een aantal echo's helpt hierbij om te zien welk pad er wordt doorlopen.

Ik krijg een hagel-witte pagina en helemaal geen errors zowel niet in mijn eigen error_handler als die van mijn hosting.
Ik ga nogmaals kijken naar de logica in het pagina..


Toevoeging op 01/02/2021 22:38:59:

Ozzie PHP op 01/02/2021 16:07:45:
- Ariën - op 01/02/2021 00:01:07:
Haal de single-quotes eens weg:
$errors[$merror]

Maar waarom gebruik je variabelen in je index?
Een error is toch een error?

Ik vermoed dat niet de single quotes wegmoeten, maar het $-teken. Dat hoort waarschijnlijk geen variabele te zijn. Dus: $errors['merror']

Het vreemde is dat ik $errors['$merror'] gebruik bij een andere pagina, nl het registratie pagina en daar werkt het prima en op dit pagina met een $ of zonder krijg ik een witte pagina en geen errors helaas.
 
- Ariën  -
Beheerder

- Ariën -

01/02/2021 22:43:02
Quote Anchor link
Waar komt $merror vandaan?
Gewijzigd op 01/02/2021 22:43:16 door - Ariën -
 
Mohamed nvt

Mohamed nvt

01/02/2021 23:14:47
Quote Anchor link
- Ariën - op 01/02/2021 22:43:02:
Waar komt $merror vandaan?

Nu ik nogmaals over na denk heb je eigenlijk wel gelijk in, want deze variabel is nergens aangemaakt en daarom heb ik het verwijderd.
Dus heb ik nu staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$errors['merror']
 
- Ariën  -
Beheerder

- Ariën -

01/02/2021 23:20:13
Quote Anchor link
Dat zou beter kunnen.
Dan lijkt het wel raadzaam om in die array die errors te plaatsen.
Een voordeel: Je kan ze makkelijk vertalen.
 
Mohamed nvt

Mohamed nvt

02/02/2021 14:49:04
Quote Anchor link
In de errors_log van mijn hostingbedrif zie ik de volgende foutmelding:
AH01215: Stack trace:: /nergiz_nl/login.php
AH01215: #0 {main}: /nergiz_nl/login.php
AH01215: thrown in /nergiz_nl/login.php on line 30: /nergiz_nl/login.php
op lijn 30 heb ik staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$result = mysqli_stmt_get_result($q);

van regel 21 t/m 31 heb ik staan de gehele prepared statement
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
$q= mysqli_stmt_init($dbc);
                
                if (!mysqli_stmt_prepare($q, $query)) {
                    echo "SQL statement failed";
                } else {
                 // bind $mailadres 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);

Ik heb even op het net gezocht en ik denk misschien zit er een fout in de versie van PHP van mijn hostingbedrijf. Ik gebruik daar 7.4 aanbevolen.
Wat denken jullie?
 
Ozzie PHP

Ozzie PHP

02/02/2021 15:10:41
Quote Anchor link
>> In de errors_log van mijn hostingbedrif zie ik de volgende foutmelding:

Staat er niet meer bij dan dat? Ik mis de foutmelding zelf.
 
- Ariën  -
Beheerder

- Ariën -

02/02/2021 15:22:01
Quote Anchor link
Waarom verdenk je PHP zelf? Zo iets simpels zal niet zo snel buggen.
Normaal moet je ook in de log de foutmelding zien, zoals Ozzie al zegt.
 
Mohamed nvt

Mohamed nvt

02/02/2021 15:32:02
Quote Anchor link
Nog even verder gekeken en ik zie de foutmelding:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
PHP Fatal error:  Uncaught Error: Call to undefined function mysqli_stmt_get_result()

Volgens antwoorden op het net moet er bepaalde driver geïnstalleerd zijn, maar ikzelf kan dit niet doen en ik zit bij Strato.
Betekent deze foutmelding dat ik contact moet opnemen met Strato om dit op te lossen?
 
- Ariën  -
Beheerder

- Ariën -

02/02/2021 15:33:53
Quote Anchor link
Ja, welke PHP-versie heb je?
 
Mohamed nvt

Mohamed nvt

02/02/2021 15:40:11
Quote Anchor link
- Ariën - op 02/02/2021 15:33:53:
Ja, welke PHP-versie heb je?

Volgens Strato gebrui ik:
Deze PHP-versie gebruik je nu: PHP 7.4
 
Mohamed nvt

Mohamed nvt

03/02/2021 19:13:53
Quote Anchor link
Inmiddels een reactie van Strato gekregen en daarin geven zij aan dat zij helemaal niets kunnen doen aan de foutmelding die ik krijg in hun error_log.
Wat vinden jullie hiervan?
Afscheid nemen van Strato of hebben zij gelijk?


Onderstaande is hun reactie:

STRATO verzorgd inderdaad de hosting van uw website, echter bieden bij problemen geen support met betrekking tot de de configuratie van de website. In dit soort gevallen kunnen we alleen algemene tips geven.

Bij een shared webhosting pakket zijn de instellingen van PHP gelimiteerd en deze kan je niet aanpassen.
 
- Ariën  -
Beheerder

- Ariën -

03/02/2021 19:17:32
Quote Anchor link
Ondersteunen die lui dus mysqli voor de helft?
mysqli_stmt_get_result() is overigens een gewone functie.

Vraag ze eens met welke reden die functie niet werkt?
Staat deze ook in phpinfo()'s informatie over de disabled functions?
Gewijzigd op 03/02/2021 19:18:27 door - Ariën -
 
Mohamed nvt

Mohamed nvt

03/02/2021 19:27:04
Quote Anchor link
- Ariën - op 03/02/2021 19:17:32:
Ondersteunen die lui dus mysqli voor de helft?
mysqli_stmt_get_result() is overigens een gewone functie.

Vraag ze eens met welke reden die functie niet werkt?
Staat deze ook in phpinfo()'s informatie over de disabled functions?

Haha! Daar lijkt het wel op helaas.
Precies ik denk ook dat mysqli_stmt_get_result() een hele gewone functie is. Het ergste vind ik dat zij de schuld bij de configuratie van mijn website neerleggen ipv dat zij zeggen dat zij het niet ondersteunen voor welke reden dan ook.
Ik ga kijken met phpinfo() over de disabled functions.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.