Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> PHP /MySQL Programmering >> Content
Hoe controleer je de door de gebruiker opgegeven gegevens met databasewaarden met behulp van PHP uit de MySQL-database?
Er zijn verschillende manieren om te controleren of door de gebruiker verstrekte gegevens overeenkomen met gegevens in een MySQL-database met behulp van PHP. De beste aanpak hangt af van wat u vergelijkt en hoe u met potentiële verschillen wilt omgaan. Hier zijn een paar voorbeelden, gericht op best practices op het gebied van beveiliging:

1. Controleren op een enkele gebruiker (bijvoorbeeld inloggen):

Dit is het meest voorkomende scenario. We controleren of een gebruikersnaam en wachtwoord overeenkomen met een record in de database. Het is van cruciaal belang dat we het wachtwoord hashen voordat we het vergelijken. Bewaar wachtwoorden nooit in platte tekst!

```php

// Databasegegevens (VERVANG DEZE DOOR UW WERKELIJKE INFORMATIE!)

$servernaam ="uw_servernaam";

$gebruikersnaam ="uw_gebruikersnaam";

$wachtwoord ="uw_wachtwoord";

$dbnaam ="uw_dbnaam";

// Gebruikersinvoer (schoon dit!)

$usernameInput =$_POST["gebruikersnaam"];

$passwordInput =$_POST["wachtwoord"];

// Saneer gebruikersinvoer om SQL-injectie te voorkomen

$usernameInput =mysqli_real_escape_string($conn, $usernameInput);

$passwordInput =mysqli_real_escape_string($conn, $passwordInput);

// Maak verbinding

$conn =nieuwe mysqli($servernaam, $gebruikersnaam, $wachtwoord, $dbnaam);

// Controleer de verbinding

if ($conn->connect_error) {

die("Verbinding mislukt:" . $conn->connect_error);

}

// Bereiden en binden

$stmt =$conn->prepare("SELECTEER wachtwoord_hash VAN gebruikers WAAR gebruikersnaam =?");

$stmt->bind_param("s", $usernameInput);

$stmt->execute();

$result =$stmt->get_result();

if ($resultaat->aantal_rijen> 0) {

$row =$result->fetch_assoc();

$hashedPassword =$rij["wachtwoord_hash"];

// Verifieer het wachtwoord met behulp van wachtwoord_verify (de ingebouwde wachtwoordhashing-functie van PHP)

if (password_verify($passwordInput, $hashedPassword)) {

// Inloggen succesvol

echo "Inloggen gelukt!";

} anders {

// Onjuist wachtwoord

echo "Onjuist wachtwoord.";

}

} anders {

// Gebruikersnaam niet gevonden

echo "Gebruikersnaam niet gevonden.";

}

$stmt->sluiten();

$conn->sluiten();

?>

```

Uitleg:

* Databasegegevens: Vervang de tijdelijke aanduiding-referenties door uw daadwerkelijke MySQL-databasegegevens.

* Gebruikersinvoer: Bij deze code wordt ervan uitgegaan dat de gebruikersnaam en het wachtwoord zijn ingediend via een POST-verzoek. Schoon gebruikersinvoer altijd op om kwetsbaarheden in SQL-injectie te voorkomen. `mysqli_real_escape_string()` is een basisstap, maar voorbereide instructies (hier gebruikt) zijn veel robuuster.

* Opgestelde verklaring: Een voorbereide instructie voorkomt SQL-injectie door de SQL-query te scheiden van de door de gebruiker verstrekte gegevens. Het is cruciaal voor de veiligheid.

* Wachtwoordhashing: De database moet wachtwoord *hashes* opslaan, geen wachtwoorden in platte tekst. `password_hash()` creëert een veilige hash, en `password_verify()` vergelijkt de invoer van de gebruiker met de opgeslagen hash.

* Foutafhandeling: De code omvat basisfoutafhandeling voor databaseverbindingen en queryfouten.

2. Controleren op meerdere overeenkomsten (bijvoorbeeld een tabel doorzoeken):

Als u meerdere overeenkomsten moet vinden op basis van gebruikersinvoer (zoals zoeken naar producten met een specifieke naam), moet u de zoekopdracht aanpassen:

```php

// ... (databaseverbinding zoals hierboven) ...

$zoekterm =$_POST["zoekterm"];

$zoekterm =mysqli_real_escape_string($conn, $zoekterm); // Ontsmet!

$sql ="SELECT * VAN producten WAAR de naam LIKE '%$searchterm%'"; //Eenvoudig voorbeeld:gebruik een voorbereide verklaring voor betere beveiliging!

$resultaat =$conn->query($sql);

if ($resultaat->aantal_rijen> 0) {

while($row =$result->fetch_assoc()) {

// Verwerk elke overeenkomende rij

echo "Product:". $rij["naam"] . "
";

}

} anders {

echo "Geen producten gevonden.";

}

// ... (nauwe verbinding) ...

?>

```

Belangrijke opmerking: Het bovenstaande zoekvoorbeeld maakt gebruik van tekenreeksaaneenschakeling, die kwetsbaar is voor SQL-injectie als `$searchterm` niet is opgeschoond . Voor een veilige oplossing herschrijft u deze met behulp van voorbereide instructies. Voorbeeld:

```php

$stmt =$conn->prepare("SELECT * FROM producten WAAR naam LIKE ?");

$zoekterm ="%" . $zoekterm . "%"; // Voeg jokertekens toe voor LIKE

$stmt->bind_param("s", $zoekterm);

$stmt->execute();

// ... rest van de code om de resultaten te verwerken ...

```

Vergeet niet om de tijdelijke tabel- en kolomnamen te vervangen door uw daadwerkelijke databaseschema. Geef altijd prioriteit aan beveiliging door gebruik te maken van voorbereide instructies en de juiste invoeropschoning om SQL-injectieaanvallen te voorkomen. Overweeg het gebruik van geparametriseerde query's voor elke interactie met gebruikersinvoer en uw database. Voor complexere scenario's of grote gegevenssets wilt u wellicht geavanceerdere technieken verkennen, zoals opgeslagen procedures.

Previous: Next:
  PHP /MySQL Programmering
·Hoe te voegen in Decode Spaces…
·Hoe een bestand opslaan als ee…
·Hoe omgaan met XML namespaces …
·Hoe te gebruiken verschillende…
·Hoe de latitude en longitude t…
·Hoe een bestand in PHP 
·Hoe je datum lopende Bereken i…
·Hoe maak je een PHP -bestand 
·Hoe maak je een object Naam in…
  Related Articles
Waarom gebruiken we functies bij het pro…
Welke rol speelt een tolk bij het progra…
Wat is de rol van een compiler bij compu…
Wat is het doel van een voorwaardelijke …
Wat is de hiërarchie van programmeertal…
Wat is de analoge definitie in de inform…
Wat is redex en hoe verhoudt dit zich to…
Wat is assembleertaal en hoe wordt het g…
Wat is assemblagecode en hoe wordt deze …
  Programmering Articles
·Hoe te VB6 code Run 
·Wat is een use case ? 
·Hoe kan ik SMS gebruiken Java-toepassing…
·Hoe te JVM Heap Size Verander 
·Python installeren in VS-code 
·Hoe maak je een DTS Package uitvoeren me…
·Hoe schrijf je een Trainzscript TS2010 
·Hoe maak je een Main Voeg toe aan een be…
·Hoe maak je een Datestamp converteren 
Copyright © Computer Kennis https://www.nldit.com