Hallo,

Ik ben net begonnen met php (al wel bekend met andere talen) en wil een inlogsysteem maken met mySQL en met een aanmeld form en een log uit knop. Ik heb al wat geprobeerd maar ik krijg telkens een fout te zien. Dit inlog systeem komt in een webapp dus gebruik ik ook jquery. Het volgende is wat ik al heb:

aanmelden.php:

<html>
    <head>
        <title> Aanmelden </title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta charset="UTF-8">
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css">
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js"></script>
		<style>
           .alaangemeld{
             text-align:center;
           } 
           a{
                 text-decoration: none;
           }
           .hier{
                 color: #fbc406;
           }
           
        </style>
	</head>
	<body>
        <h1 style="text-align:center;"> Aanmelden </h1>
        <form action="aanmelden.inc.php" method="post" data-ajax="false">
            <input type="text" name="mail" value="" placeholder="E-mail">
            <input type="password" name="ww" placeholder="Wachtwoord">
            <input type="password" name="wwhh" placeholder="Herhaal wachtwoord">
            <button type="submit" name="signup-verzend">Aanmelden</button>
        </form>
        <br>
        <div class="alaangemeld">
           <p> Al aangemeld? Klik dan <a href="login.php"><span class="hier">hier</span></a></p>
        </div>
	</body>
</html


aanmelden.inc.php:

<?php
session_start();

require "../includes/connect.php"; //hier wordt verbinding gemaakt met de database phpmyAdmin
$errors = 0;
$mail = "";

if(isset($_POST['signup-verzend'])){
    $mail = $_POST['mail'];
    $ww = $_POST['ww'];
    $wwhh = $_POST['wwhh'];


    // checken voor fouten in invoer    
    if(empty($mail)) {
        $errors = $errors + 1;  
    }
    if(empty($ww)) {
        $errors = $errors + 1;
    }
    if(empty($wwhh)) {
        $errors = $errors + 1;
    }
    if($ww !== $wwhh) {
        $errors = $errors + 1;
    }

    if(!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
        $errors = $errors + 1;
    }
    
    //kijken of er al iemand is met dezelfde mail
    $mailQuery = "SELECT * FROM gb WHERE mail=? LIMIT 1";
    $stmt = $conn->prepare($mailQuery);
    $stmt->bind_param('s', $email);
    $stmt->execute();
    $result = $stmt->get_result();
    $mailCount = $result->num_rows;
    $stmt->close();

    if($mailcount > 0){
        $errors = $errors + 1;
    }

    if(count($errors === 0)) {
        $wwSecure = password_hash($ww, PASSWORD_DEFAULT);
        $token = bin2hex(random_bytes(50));
        $verified = false;

        $sql ="INSERT INTO gb (mail, ww, verified, token, ww) VALUES (?, ?, ?, ?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param('ssbs', $mail, $verified, $token, $wwSecure);
        
        if($stmt->execute()){
            //log automatisch in
            $gb_id = $connect->insert_id;
            $_SESSION['id'] = $gb_id;
            $_SESSION['mail'] = $mail;
            $_SESSION['verified'] = $verified;

            //een bericht instellen
            header("Location:geslaagd.html");
            exit();

        } else{
            $errors = $errors + 1;
        }
    }else(count($errors > 0)){
        header("Location:signup.php/?error=ErIsIetsFoutIngevuld");
        exit();
    }
 }else{
    header("Location:signup.php");
 }
?>


geslaagd.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p> U bent aangemeld!</p>
</body>
</html>


login.php:


<html>
    <head>
        <title> Inloggen </title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta charset="UTF-8">
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css">
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js"></script>
		<style>
           .alaangemeld{
             text-align:center;
           } 
           a{
                 text-decoration: none;
           }
           .hier{
                 color: #fbc406;
           }
           
        </style>
	</head>
	<body>
        <h1 style="text-align:center;"> Inloggen </h1>
        <form action="login.inc.php" method="post" data-ajax="false">
            <input type="text" name="mail" value="" placeholder="E-mail">
            <input type="password" name="ww" placeholder="Wachtwoord">
            <button type="submit" name="signup-verzend">Log in</button>
        </form>
        <br>
        <div class="alaangemeld">
           <p> Nog niet aangemeld? Klik dan <a href="aanmelden.php"><span class="hier">hier</span></a></p>
        </div>
	</body>
</html>


Voor login.inc.php heb ik nog niets en weet ook nog niet hoe dit moet. Ik wil eerst ervoor kunnen zorgen dat je kan aanmelden in de website. Ik heb een tutorial gevolgd op youtube dus het zou kunnen dat ik wat heb overgenomen heb en niet heb verklaard, zou u dit ook kunnen vertellen wat ik zou moeten toevoegen, aanpassen, etc.?

Ik hoop dat u mij snapt en mij kan helpen! Ik zie uw bericht graag!

PS: Ik gebruik PHP versie 7.3 op mijn server met de volgende extensies: bcmath, dom, fileinfo, gd, intl, ioncube_loader, json, mbstring,mcrypt, mysqlnd, nd_mysqli, pdo, pdo_mysql, pdo_sqlite, phar, posix, soap, sockets, xmlwriter, xmlreader, xsl, zip



,groetjes Sem
Ter info: als je in Visual Studio Code (huidige versie is 1.43.2) "een" PHP bestand opent/aanmaakt komt VSC vanzelf met de suggestie om wat extensies te installeren (PHP Debug (nu versie 1.13.0), PHP Extension Pack (1.0.2), en PHP IntelliSense (2.3.14)). Met alleen deze extensies krijg je na de "else die een elseif moest zijn" ook een "kringel" (op de "header" regel eronder - die is "onverwacht"), en de "else" daarna (regel 72) krijgt ook een rode kringel. Je hoeft dus niet al je tools overboord te gooien, alleen even de juiste extensies aanvinken.
Rob Doemaarwat op 01/04/2020 21:17:53

Ter info: als je in Visual Studio Code (huidige versie is 1.43.2) "een" PHP bestand opent/aanmaakt komt VSC vanzelf met de suggestie om wat extensies te installeren (PHP Debug (nu versie 1.13.0), PHP Extension Pack (1.0.2), en PHP IntelliSense (2.3.14)). Met alleen deze extensies krijg je na de "else die een elseif moest zijn" ook een "kringel" (op de "header" regel eronder - die is "onverwacht"), en de "else" daarna (regel 72) krijgt ook een rode kringel. Je hoeft dus niet al je tools overboord te gooien, alleen even de juiste extensies aanvinken.


Dat ga ik ook proberen dan en kijken wat fijner werkt. Moet ik dus alle genoemde extensies downloaden?


Ik heb bij die "suggestie" gewoon op "OK" geklikt. Ik zou dus niet weten welke nou precies voor de "magic" zorgt, maar het is nou niet dat je een paar Gb aan data binnen haalt (baat het niet, dan schaadt het niet; en je kunt ze altijd weer uitschakelen).
Hallo, het valt me op dat op lijn 33 een ?-teken staat. Waarvoor dient deze?

En je zegt dat je in jQuery werkt. Wellicht is het handig om de nieuwste versie te gebruiken (3.4.1)?

Reageren