• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 23 december 2025 om 16:43
  • Developer Gezocht

    tcbhome 21 december 2025 om 15:07
  • Op zoek naar de legends

    Jeffrey.Hoekman 9 december 2025 om 09:41
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05
  • 302 Nieuwe Domeinnamen November 2025

    shiga 1 december 2025 om 13:07

Data wordt niet opgeslagen

  • Servertjee
  • 10 maart 2019 om 18:39
  • Servertjee
    Elite members
    Ontvangen Reacties
    15
    Berichten
    80
    • 10 maart 2019 om 18:39
    • #1

    Heey!

    Vraagje...

    Mijn script werkte voorheen, nu heb ik een paar velden toegevoegd (voornaam,tussenvoegsel,achternaam,woonplaats etc). Nu werkt het nog wel het wordt alleen niet in de database opgeslagen. Kan iemand mij uit de brand helpen?

    PHP
    <?php
    session_start();
    
    
    // initializing variables
    $username = "";
    $email    = "";
    $straat   = "";
    $voornaam = "";
    $tussenvoegsel = "";
    $achternaam = "";
    $huisnummer = "";
    $postcode = "";
    $woonplaats = "";
    $errors = array(); 
    
    
    // connect to the database
    $db = mysqli_connect('localhost', '******', '*****', '******');
    
    
    // REGISTER USER
    if (isset($_POST['reg_user'])) {
      // receive all input values from the form
      $username = mysqli_real_escape_string($db, $_POST['username']);
      $email = mysqli_real_escape_string($db, $_POST['email']);
      $password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
      $password_2 = mysqli_real_escape_string($db, $_POST['password_2']);
      $voornaam = mysqli_real_escape_string($db, $_POST['voornaam']);
      $tussenvoegsel = mysqli_real_escape_string($db, $_POST['tussenvoegsel']);
      $achternaam = mysqli_real_escape_string($db, $_POST['achternaam']);
      $straat = mysqli_real_escape_string($db, $_POST['straat']);
      $huisnummer = mysqli_real_escape_string($db, $_POST['huisnummer']);
      $postcode = mysqli_real_escape_string($db, $_POST['postcode']);
      $woonplaats = mysqli_real_escape_string($db, $_POST['woonplaats']);
    
    
      // form validation: ensure that the form is correctly filled ...
      // by adding (array_push()) corresponding error unto $errors array
      if (empty($username)) { array_push($errors, "Gebruikersnaam is verplicht"); }
      if (empty($email)) { array_push($errors, "Email is verplicht"); }
      if (empty($voornaam)) { array_push($errors, "Voornaam is verplicht"); }
      if (empty($achternaam)) { array_push($errors, "Achternaam is verplicht"); }
      if (empty($straat)) { array_push($errors, "Straat is verplicht"); }
      if (empty($huisnummer)) { array_push($errors, "Huisnummer is verplicht"); }
      if (empty($postcode)) { array_push($errors, "Postcode is verplicht"); }
      if (empty($woonplaats)) { array_push($errors, "Woonplaats is verplicht"); }
      if (empty($password_1)) { array_push($errors, "Password is required"); }
      if ($password_1 != $password_2) {
    	array_push($errors, "The two passwords do not match");
      }
    
    
      // first check the database to make sure 
      // a user does not already exist with the same username and/or email
      $user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1";
      $result = mysqli_query($db, $user_check_query);
      $user = mysqli_fetch_assoc($result);
      
      if ($user) { // if user exists
        if ($user['username'] === $username) {
          array_push($errors, "Username already exists");
        }
    
    
        if ($user['email'] === $email) {
          array_push($errors, "email already exists");
        }
      }
    
    
      // Finally, register user if there are no errors in the form
      if (count($errors) == 0) {
      	$password = md5($password_1);//encrypt the password before saving in the database
    
    
      	$query = "INSERT INTO users (username,email,password,voornaam,tussenvoegsel,achternaam,straat,huisnummer,postcode,woonplaats,geboortedatum,geslacht) 
      			  VALUES('$username', '$email', '$password', '$straat', '$huisnummer', '$postcode', '$woonplaats', '$voornaam', '$tussenvoegsel', '$achternaam', '$geslacht', '$geboortedatum')";
      	mysqli_query($db, $query);
      	$_SESSION['username'] = $username;
      	$_SESSION['success'] = "You are now logged in";
      	header('location: index.php');
      }
    }
    // LOGIN USER
    if (isset($_POST['login_user'])) {
      $username = mysqli_real_escape_string($db, $_POST['username']);
      $password = mysqli_real_escape_string($db, $_POST['password']);
    
    
      if (empty($username)) {
      	array_push($errors, "Username is required");
      }
      if (empty($password)) {
      	array_push($errors, "Password is required");
      }
    
    
      if (count($errors) == 0) {
      	$password = md5($password);
      	$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
      	$results = mysqli_query($db, $query);
      	if (mysqli_num_rows($results) == 1) {
      	  $_SESSION['username'] = $username;
      	  $_SESSION['success'] = "You are now logged in";
      	  header('location: index.php');
      	}else {
      		array_push($errors, "Wrong username/password combination");
      	}
      }
    }
    
    
    ?>
    Toon Meer
  • Guest, wil je besparen op je domeinnamen? (ad)
  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 10 maart 2019 om 23:51
    • #2

    EDIT: stap 0 is natuurlijk het controleren van je errorlogs, kun je hier iets in vinden?
    Ben je ook nagegaan dat $errors leeg is?

    password is een gereserveerd woord, dus wellicht zou die kolom tussen `backticks` moeten staan?

    Voor debugging zou je tijdelijk de header() kunnen verwijderen en mysqli_error() kunnen inspecteren.

    Zou het ook niet beter zijn om enkel een user id op te slaan in de sessie, en elke page-refresh de gebruikersinfo op te halen aan de hand van een id en dan een user object te bakken ofzo? In plaats van dit in je sessie te zetten. Elke keer als je je profiel bijwerkt houdt dit in de huidige opzet ook een potentiële administratieve bijwerkactie van je sessie in. En al die extra administratie is niet nodig als je de informatie gewoon elke pagina ververst (middels een on-the-fly berekend User object).

    Je controleert ook nergens of de query slaagt maar je gooit de nieuwe username zo bam in je sessie :D.

    Ook zou ik registratie en het inloggen zelf splitsen, anders wordt dit een onoverzichtelijke brei. En meer in het algemeen zou je je logica meer in aparte acties kunnen compartimenteren. Elke actie is dan toegespitst op één specifieke handeling. Hoe je dit aan zou kunnen pakken heb ik een blogpost beschreven.

    Daarnaast zou ik geen dingen als $_SESSION['success'] gebruiken, tenzij dit bedoeld is als een soort van flash message, in welk geval ik het $_SESSION['messages'] zou noemen ofzo, om de (zeer) tijdelijke aard van dit soort sessie-inhoud te benadrukken. Dit hele subarray zou ook direct de eerstvolgende page-access geleegd moeten worden nadat deze berichten zijn weergegeven op je pagina.

    Enne, md5() voor password hashing? :/

    Enne, na header('Location: ...') hoort ALTIJD een exit; te staan. Headers zijn onderdeel van output, dus nadat ergens middenin je code header('Location: ...') staat word je niet direct naar de nieuwe locatie getransporteerd, dat gebeurt pas aan het einde van het script. Het aanwezig zijn of het ontbreken van een exit-statement kan het verschil betekenen tussen veilige en onveilige code.

    Je bent gewaarschuwd :evil: .

    Voorbeeld:

    PHP
    <?php
    if (isset($_SESSION['some_required_value']) === false) {
        header('Location: elsewhere.php');
    }
    // gevoelige code die gegevens kan manipuleren
    // ...
    ?>

    Dit is wat er dan achtereenvolgens gebeurt bij aanroep van dit script:
    1. de Location header wordt ingesteld op "elsewhere.php"
    2. de code in het onderdeel "// gevoelige code die gegevens kan manipuleren" >>>WORDT UITGEVOERD <<<
    3. na afloop van het script word je direct doorgestuurd naar "elsewhere.php"

    Daarom is het handig/verstandig om hiervoor een functie/methode te hebben zodat je dit nooit meer per ongeluk vergeet:

    PHP
    <?php
    function redirect($link) {
        header('HTTP/1.1 303 See Other');
        header('Location: '.$link);
        exit; // opdat we dit NOOIT meer vergeten
    }
    ?>

    Bewerkt 12 keer, laatst door FangorN (14 maart 2019 om 12:44).

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    Jeffrey.Hoekman 26 december 2024 om 10:26
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design