PHP 2-Factor Autorisatie (2FA)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 5 6 volgende »

Jin vanTongeren

Jin vanTongeren

11/03/2019 16:51:24
Quote Anchor link
Notice: Undefined index: User in C:\xampp\htdocs\website met 2fa\welcome.php on line 35
 
PHP hulp

PHP hulp

23/11/2024 10:56:47
 
- Ariën  -
Beheerder

- Ariën -

11/03/2019 17:03:15
Quote Anchor link
Dan is die sessie niet aangemaakt als je die oproept. Of je mist een session_start();
 
Jin vanTongeren

Jin vanTongeren

11/03/2019 17:08:13
Quote Anchor link
Ik heb de sessie laten starten via:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_SESSION
['User'] =$row['UName'];
?>

Dit is het hele login formulier:
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
<?php
session_start();
require_once('connection.inc.php');
    if(isset($_POST['Login'])) {
        htmlspecialchars($userName = $_POST['UName']);
        htmlspecialchars($password = $_POST['pwd']);
       if(empty($_POST['UName']) || empty($_POST['pwd'])) {
            header("location:../login.php?Empty= Vul alle velden in");
       }

       else {
            $sql= "SELECT * FROM employee WHERE UName=? AND Pass=?";
            $stmt = mysqli_stmt_init($conn);
            if(!mysqli_stmt_prepare($stmt, $sql)) {
                header('Location: login.php?MYSQLI_ERROR');
            }

           else {
               mysqli_stmt_bind_param($stmt, "ss", $userName, $password);
               mysqli_stmt_execute($stmt);
               $result = mysqli_stmt_get_result($stmt);
           }

            if($row = mysqli_fetch_assoc($result)) {
                if($row['2FAStatus'] == 0) {
                    $_SESSION['User'] =$row['UName'];
                    $_SESSION['ID'] =$row['ID'];
                    header("location:../wellcome.php?uid=".$row['UName']);
                    exit();
                }

                else if ($row['2FAStatus'] == 1) {
                    if(isset($_COOKIE['remember'])) {
                        $_SESSION['User'] =$row['UName'];
                        $_SESSION['ID'] =$row['ID'];                        
                        header("Location:../welcome.php?uid=".$row['UName']);
                        exit();
                    }

                    else {
                        header('Location: ../2FALogin.php?request=valid');
                        exit();                        
                    }
                }
            }

            else {
                header("location:../login.php?Invalid= Verkeerd wachtwoord/gebruikersnaam combinatie");
                exit();
            }
       }
    }

    else {
        header('Location: inlogfail.html');
    }

?>

Ik heb gekeken naar de geïnstalleerde php versie, via phpinfo();.
Het blijkt dat op mijn server staat php versie 7.3.1 geïnstalleerd en op mijn XAMPP, staat php versie 7.3.2.
Maakt dat uit?
 
- Ariën  -
Beheerder

- Ariën -

11/03/2019 17:10:00
Quote Anchor link
- Ariën - op 11/03/2019 12:50:58:
Wat staat er in
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($_SESSION);
?>


Al geprobeerd?
 
Jin vanTongeren

Jin vanTongeren

11/03/2019 17:11:43
Quote Anchor link
Jin vanTongeren op 11/03/2019 16:51:24:
Notice: Undefined index: User in C:\xampp\htdocs\website met 2fa\welcome.php on line 35


Zei ik al bovenaan de pagina.
 
- Ariën  -
Beheerder

- Ariën -

11/03/2019 17:24:23
Quote Anchor link
Dat lijkt mij sterk. Ik noem geen User in die functie.
 
Jin vanTongeren

Jin vanTongeren

11/03/2019 17:26:06
Quote Anchor link
En toch is het wel zo.
Ik ga proberen om XAMPP opnieuw te installeren, maar nu met een oudere PHP versie. (php versie 7.3.1)
Hopen dat het downgraden van de PHP versie wel lukt...
 
- Ariën  -
Beheerder

- Ariën -

11/03/2019 17:33:40
Quote Anchor link
Ik denk dat je naar een verkeerd stukje code kijkt? Want je moet dan een array zien. Of gebruik je print i.p.v. print_r??
Gewijzigd op 11/03/2019 17:34:26 door - Ariën -
 
Jin vanTongeren

Jin vanTongeren

11/03/2019 17:39:54
Quote Anchor link
owh ja.
Ik zie het al.
Ik had dit gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($_SESSION['User']);
?>

Nu ik dit heb gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($_SESSION);
?>

zie ik dit: Array ( )

Ik heb net XAMPP opnieuw geïnstalleerd naar 7.3.1, maar dat werkt helaas niet.
 
- Ariën  -
Beheerder

- Ariën -

11/03/2019 17:52:59
Quote Anchor link
Ik zet in dat je geen sessies hebt aangemaakt. Het is geen bug in PHP.

Toevoeging op 11/03/2019 18:00:17:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
session_start();
$_SESSION['User'] = array("Piet");
print_r($_SESSION['User']);
?>


Dit geeft hier Piet aan.
 
Jin vanTongeren

Jin vanTongeren

11/03/2019 18:25:30
Quote Anchor link
Ik had de session_start(); al bovenaan (op de 1e regel) neergezet.
Of moet het 1 regel boven de $_SESSION['User']?
 
- Ariën  -
Beheerder

- Ariën -

11/03/2019 18:27:33
Quote Anchor link
Het beste is direct bovenaan, uiteraard zonder dat er output voor staat.

Test mijn code eens in een los bestand?
 
Jin vanTongeren

Jin vanTongeren

11/03/2019 18:29:14
Quote Anchor link
Ik zie inderdaad de array piet.
(Array ( [0] => Piet ))
 
- Ariën  -
Beheerder

- Ariën -

11/03/2019 18:32:01
Quote Anchor link
Dan is er niks mis met je sessies, maar in je script zelf ergens. Ik raad aan om even te debuggen of $row wel zijn data krijgt, en of je if-statement waarin je sessies staat, wel wordt bereikt.
 
Jin vanTongeren

Jin vanTongeren

11/03/2019 18:34:18
Quote Anchor link
Ik heb nu dit neergezet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
                if($row['2FAStatus'] == 0) {
                    $_SESSION['User'] =$row['UName'];
                    $_SESSION['ID'] =$row['ID'];
                    print_r($_SESSION['User']);
                    exit();
                }

?>

Nu krijg ik te zien:
JVT (Mijn gebruikersnaam op de website waarmee ik inlog, is JVT)
Dus hier is niets mis mee. (denk ik)
En zoals ik al zei: Op mijn server doen de sessions het perfect.
Alleen op de XAMPP niet.
Terwijl de code letterlijk hetzelfde is.
 
- Ariën  -
Beheerder

- Ariën -

11/03/2019 18:35:58
Quote Anchor link
Waar heb je mijn code dan uitgetest?
 
Jin vanTongeren

Jin vanTongeren

11/03/2019 18:36:56
Quote Anchor link
Op dezelfde localhost.
Alleen in een ander apart bestand.
 
- Ariën  -
Beheerder

- Ariën -

11/03/2019 18:39:45
Quote Anchor link
XAMPP? Dan werken je sessies toch gewoon?
Je probleem ligt dan ergens anders, dus volg het pad uit mijn vorige bericht.
 
Jin vanTongeren

Jin vanTongeren

11/03/2019 18:41:51
Quote Anchor link
Ja.
Het doet het ineens weer.
Ineens wordt ik weer ingelogd etc.
Ik heb GEEN IDEE wat er fout ging en ook GEEN IDEE wat er is gebeurd om het op te lossen.
Hij deed het ineens...
Voor de zekerheid: dit is mijn code:
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
<?php
session_start();
require 'connection.inc.php';
    if(isset($_POST['Login'])) {
        htmlspecialchars($userName = $_POST['UName']);
        htmlspecialchars($password = $_POST['pwd']);
       if(empty($_POST['UName']) || empty($_POST['pwd'])) {
            header("location:../login.php?Empty= Vul alle velden in");
       }

       else {
            $sql= "SELECT * FROM employee WHERE UName=? AND Pass=?";
            $stmt = mysqli_stmt_init($conn);
            if(!mysqli_stmt_prepare($stmt, $sql)) {
                header('Location: login.php?MYSQLI_ERROR');
            }

           else {
               mysqli_stmt_bind_param($stmt, "ss", $userName, $password);
               mysqli_stmt_execute($stmt);
               $result = mysqli_stmt_get_result($stmt);
           }

            if($row = mysqli_fetch_assoc($result)) {
                if($row['2FAStatus'] == 0) {
                    $_SESSION['User'] = $row['UName'];
                    $_SESSION['ID'] =$row['ID'];
                    header("Location:../wellcome.php?uid=".$row['UName']);
                    exit();
                }

                else if ($row['2FAStatus'] == 1) {
                    if(isset($_COOKIE['remember'])) {
                        $_SESSION['User'] =$row['UName'];
                        $_SESSION['ID'] =$row['ID'];                        
                        header("Location:../wellcome.php?uid=".$row['UName']);
                        exit();
                    }

                    else {
                        header('Location: ../2FALogin.php?request=valid');
                        exit();                        
                    }
                }
            }

            else {
                header("location:../login.php?Invalid= Verkeerd wachtwoord/gebruikersnaam combinatie");
                exit();
            }
       }
    }

    else {
        header('Location: inlogfail.html');
    }

?>

Misschien ziet u wat er fout ging en wat er is gebeurd om het op te lossen.
Ik weet het niet.
 
- Ariën  -
Beheerder

- Ariën -

11/03/2019 18:48:29
Quote Anchor link
Geen idee, kwestie van debuggen volgende keer.

Maarre... Rauwe passwords zonder hash? :-/
 

Pagina: « vorige 1 2 3 4 5 6 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.