inloggen werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martin Boersma

Martin Boersma

13/04/2021 14:47:29
Quote Anchor link
hallo, ik probeer voor een schoolopdracht een register en login systeem te maken. ik kan al een user aan maken die dan ook in de database wordt opgeslagen, maar wanneer ik probeer in te loggen met datzelfde ww en username, doet ie het niet. hieronder staat de code waarin in de foutmelding krijg, dit is van het login gedeelte.

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
if($stmt->rowCount() == 1){
                        if($row = $stmt->fetch()){
                            $UserID = $row["UserID"];
                            $username = $row["Username"];
                            $hashed_password = $row["Password"];
                            if(password_verify($password, $hashed_password)){
                                // password is correct, so start new session
                                session_start();

                                //store data in session variables
                                $_SESSION["loggedin"] = true;
                                $_SESSION["UserID"] = $UserID;
                                $_SESSION["username"] = $username;

                                //redirect user to welcome page
                                header("location: welcome.php");
                            }
                            else{
                                //invalid password, display error message
                                $login_err = "Invalid username or password.";
                            }


ik krijg dus de 'Invalid username or password' error die ik heb ingesteld. ik kom hier zelf niet uit, kan iemand hier mij asap helpen?
 
PHP hulp

PHP hulp

16/05/2021 10:15:46
 
- Ariën -
Beheerder

- Ariën -

13/04/2021 14:50:18
Quote Anchor link
Waar komt $password vandaan?
 
Martin Boersma

Martin Boersma

13/04/2021 14:54:08
Quote Anchor link
- Ariën - op 13/04/2021 14:50:18:
Waar komt $password vandaan?


die komt uit de functie waar ie checked of de password niet empty is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
// Check if password is empty
    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter your password.";
    }
    else{
        $password = trim($_POST["password"]);
    }
 
- Ariën -
Beheerder

- Ariën -

13/04/2021 14:58:05
Quote Anchor link
Echo beide variabelen eens en kijk of ze uberhaupt een waarde hebben. Kijk ook eens of je VARCHAR-waarde in je database niet te kort is. Check ook met password_hash() of de boel overeenkomt.
Gewijzigd op 13/04/2021 14:59:10 door - Ariën -
 
Martin Boersma

Martin Boersma

13/04/2021 14:59:38
Quote Anchor link
- Ariën - op 13/04/2021 14:58:05:
Echo beide variabelen eens en kijk of ze uberhaupt een waarde hebben. Kijk ook eens of je VARCHAR-waarde in je database niet te kort is.


welke 2 variabelen? de varchar waardes in mijn database staan op 255.

Toevoeging op 13/04/2021 14:59:51:

- Ariën - op 13/04/2021 14:58:05:
Echo beide variabelen eens en kijk of ze uberhaupt een waarde hebben. Kijk ook eens of je VARCHAR-waarde in je database niet te kort is.


welke 2 variabelen? de varchar waardes in mijn database staan op 255.
 
- Ariën -
Beheerder

- Ariën -

13/04/2021 15:04:48
Quote Anchor link
Haal je wachtwoord eens door password_hash(), en controleer of deze overeenkomt met de inhoud in je database.
 
Martin Boersma

Martin Boersma

13/04/2021 15:09:40
Quote Anchor link
- Ariën - op 13/04/2021 15:04:48:
Haal je wachtwoord eens door password_hash(), en controleer of deze overeenkomt met de inhoud in je database.


Hoe bedoel je een wachtwoord door password_hash() halen? (ik ben nog vrij nieuw op het gebied van php dus weet nog niet super veel)
 
- Ariën -
Beheerder

- Ariën -

13/04/2021 15:14:24
Quote Anchor link
Ik neem aan dat je de wachtwoorden met deze functie toch gehashed in de database opslaat bij de registratie?

Zie ook: www.php.net/password_hash
Gewijzigd op 13/04/2021 15:14:55 door - Ariën -
 
Adoptive Solution

Adoptive Solution

13/04/2021 15:22:35
Quote Anchor link
Is het deze tutorial? De code komt aardig overeen.

https://www.webslesson.info/2016/06/php-login-script-using-pdo-with-session.html

En password hash werd in je vorige topic genoemd.

https://www.phphulp.nl/php/forum/topic/login-sessie-met-php-en-database-probleem/103963/#753186

Tijd zat om te oefenen.
 
Martin Boersma

Martin Boersma

13/04/2021 15:27:27
Quote Anchor link
- Ariën - op 13/04/2021 15:14:24:
Ik neem aan dat je de wachtwoorden met deze functie toch gehashed in de database opslaat bij de registratie?

Zie ook: www.php.net/password_hash


ik heb nog geen hash op de wachtwoorden staan in het registratie formulier. ik heb deze login van een tutorial en de registratie werkte toen eerst niet, dus die heb ik inmiddels werkend gekregen, maar de login dus nog niet.
 
- Ariën -
Beheerder

- Ariën -

13/04/2021 15:41:59
Quote Anchor link
Hoe staat je wachtwoord in je database?
 
Martin Boersma

Martin Boersma

13/04/2021 15:43:05
Quote Anchor link
- Ariën - op 13/04/2021 15:41:59:
Hoe staat je wachtwoord in je database?


de wachtwoorden worden hoe het nu is gewoon opgeslagen als hoe ze ingevoerd zijn, dus als ik 000 invoer wordt ie opgeslagen als 000
 
Adoptive Solution

Adoptive Solution

13/04/2021 15:46:02
Quote Anchor link
Kan je beredeneren dat als je wachtwoorden niet hash, je ook geen password verify kan doen?

Dan is de uitslag namelijk altijd FALSE.

Toevoeging op 13/04/2021 15:48:44:

Dit is de hash van 000.
Sla die direct op in de database van de betreffende gebruiker.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$2y$10$wIHd7bASOvUWB.esdApC4.eKfGpWwMqet/eTq/4CoYgf2dU3EGGyO
 
- Ariën -
Beheerder

- Ariën -

13/04/2021 15:56:10
Quote Anchor link
Martin Boersma op 13/04/2021 15:43:05:
- Ariën - op 13/04/2021 15:41:59:
Hoe staat je wachtwoord in je database?


de wachtwoorden worden hoe het nu is gewoon opgeslagen als hoe ze ingevoerd zijn, dus als ik 000 invoer wordt ie opgeslagen als 000

Ik had dit juist vorige keer al uitgelegd.
Passwoorden moet je altijd omzetten naar een niet-terugkerende hash. Niemand hoeft te weten wat je wachtwoord is.
 
Ad Fundum

Ad Fundum

14/04/2021 10:20:05
Quote Anchor link
- Ariën - op 13/04/2021 15:56:10:
Martin Boersma op 13/04/2021 15:43:05:
- Ariën - op 13/04/2021 15:41:59:
Hoe staat je wachtwoord in je database?
de wachtwoorden worden hoe het nu is gewoon opgeslagen als hoe ze ingevoerd zijn, dus als ik 000 invoer wordt ie opgeslagen als 000

Ik had dit juist vorige keer al uitgelegd.
Passwoorden moet je altijd omzetten naar een niet-terugkerende hash. Niemand hoeft te weten wat je wachtwoord is.

Eens. Wanneer iemand anders jouw systeem gebruikt bega je een strafbaar feit als je wachtwoorden opslaat in de database(!)
Dat is volgens artikel 32, lid 1 van europese AVG wetgeving. Er zijn al vaker boetes voor uitgedeeld. En er wordt uitgebreid gewaarschuwd, en de hele wereld wordt bekend gemaakt met hoe je het dan wel moet doen.

Met andere woorden, iedereen die denkt dat-ie wachtwoorden van anderen mag opslaan is een regelrechte idioot. Zeg niet dat we niet gewaarschuwd hebben.
Gewijzigd op 14/04/2021 10:38:12 door Ad Fundum
 



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.