slogan3

Ontwikkel een PHP-script voor geautomatiseerde data-validatie en invoerfiltering

description

Met deze prompt kan de gebruiker een robuust PHP-script bouwen dat gebruikersinvoer veilig en betrouwbaar verwerkt, waardoor fouten en beveiligingsrisico's worden verminderd. Het helpt ook bij het leren van de implementatie van maatwerk validatie en gebruikersvriendelijke foutmeldingen, wat beter is dan standaard validatiefuncties zonder feedback.

prompt

Help me een PHP-script te ontwikkelen dat automatisch gebruikersinvoer valideert en filtert volgens de volgende regels en criteria: <voeg de validatiere ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een overzicht en een voorbeeld van een PHP-script dat gebruikersinvoer valideert volgens jouw criteria, inclusief uitleg over aangepaste validatiefuncties en gebruikersvriendelijke foutafhandeling. **Stap 1: Basisstructuur opzetten** Je hebt waarschijnlijk een formulier waarop gebruikers gegevens invullen. Het script verwerkt deze gegevens en valideert ze. **Stap 2: Validatiefuncties definiëren** Je kunt aangepaste functies maken voor elke validatie. Bijvoorbeeld: ```php <?php // Controleer of het formulier is ingediend if ($_SERVER["REQUEST_METHOD"] == "POST") { $errors = []; $name = trim($_POST['name'] ?? ''); $email = trim($_POST['email'] ?? ''); $phone = trim($_POST['phone'] ?? ''); $message = trim($_POST['message'] ?? ''); // Validatie functies function isValidEmail($email) { return filter_var($email, FILTER_VALIDATE_EMAIL) !== false; } function isNumericPhone($phone) { return preg_match('/^\d+$/', $phone); } function isValidMessage($message) { return mb_strlen($message) >= 10; } // Validatie uitvoeren if (!isValidEmail($email)) { $errors[] = "Ongeldig e-mailadres."; } if (!isNumericPhone($phone)) { $errors[] = "Telefoonnummer mag alleen cijfers bevatten."; } if (!isValidMessage($message)) { $errors[] = "Bericht moet minimaal 10 tekens bevatten."; } // Als er geen fouten zijn, kun je verder gaan met verwerking if (empty($errors)) { // Bijvoorbeeld: gegevens opslaan, verzenden, etc. echo "Informatie succesvol ingediend!"; } } ?> ``` **Stap 3: Formulier en foutafhandeling** In je HTML kun je de fouten op een gebruikersvriendelijke manier tonen: ```html <?php if (!empty($errors)): ?> <div class="fouten"> <ul> <?php foreach ($errors as $error): ?> <li><?php echo htmlspecialchars($error); ?></li> <?php endforeach; ?> </ul> </div> <?php endif; ?> <form method="post" action=""> <label>Naam:</label> <input type="text" name="name" value="<?php echo htmlspecialchars($name ?? ''); ?>"><br> <label>E-mail:</label> <input type="email" name="email" value="<?php echo htmlspecialchars($email ?? ''); ?>"><br> <label>Telefoonnummer:</label> <input type="text" name="phone" value="<?php echo htmlspecialchars($phone ?? ''); ?>"><br> <label>Bericht:</label> <textarea name="message"><?php echo htmlspecialchars($message ?? ''); ?></textarea><br> <input type="submit" value="Versturen"> </form> ``` **Belangrijke punten:** - **Aangepaste functies:** Zo kun je je validatie overzichtelijk houden en indien nodig uitbreiden. - **Fouten tonen:** Door een lijst met fouten te tonen, geef je de gebruiker duidelijke feedback. - **Veiligheid:** Gebruik `htmlspecialchars()` om XSS-aanvallen te voorkomen bij het weergeven van gebruikersinvoer. - **Herinnering invoer:** Door de ingevulde waarden te behouden, voorkom je dat gebruikers alles opnieuw moeten invullen na een fout. Met deze aanpak heb je een solide basis voor het valideren en filteren van gebruikersinput in PHP, op een gebruiksvriendelijke en uitbreidbare manier.
provider: deepseek
model: deepseek-chat
Zeker! Hier is een uitgebreid PHP-script met gebruiksvriendelijke fouthandeling: ```php <?php // Aangepaste validatiefuncties function valideerEmail($email) { if (empty($email)) { return "E-mail is verplicht"; } if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return "Voer een geldig e-mailadres in"; } return true; } function valideerTelefoon($telefoon) { if (empty($telefoon)) { return "Telefoonnummer is verplicht"; } // Alleen cijfers toestaan if (!preg_match('/^[0-9]+$/', $telefoon)) { return "Telefoonnummer mag alleen cijfers bevatten"; } return true; } function valideerBericht($bericht) { if (empty($bericht)) { return "Bericht is verplicht"; } if (strlen(trim($bericht)) < 10) { return "Bericht moet minimaal 10 tekens bevatten"; } return true; } // Gegevens filteren function filterInput($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } // Foutafhandeling $errors = []; $success = false; if ($_SERVER["REQUEST_METHOD"] == "POST") { // Input ophalen en filteren $email = filterInput($_POST['email'] ?? ''); $telefoon = filterInput($_POST['telefoon'] ?? ''); $bericht = filterInput($_POST['bericht'] ?? ''); // Validatie uitvoeren $emailValidatie = valideerEmail($email); $telefoonValidatie = valideerTelefoon($telefoon); $berichtValidatie = valideerBericht($bericht); // Fouten verzamelen if ($emailValidatie !== true) { $errors['email'] = $emailValidatie; } if ($telefoonValidatie !== true) { $errors['telefoon'] = $telefoonValidatie; } if ($berichtValidatie !== true) { $errors['bericht'] = $berichtValidatie; } // Als geen errors, success if (empty($errors)) { $success = true; // Hier kun je de gegevens verwerken (bijv. opslaan in database, mail versturen) } } ?> <!DOCTYPE html> <html lang="nl"> <head> <meta charset="UTF-8"> <title>Formulier Validatie</title> <style> .error { color: red; font-size: 14px; } .success { color: green; font-size: 16px; } input.error-border, textarea.error-border { border: 2px solid red; } </style> </head> <body> <h1>Contactformulier</h1> <?php if ($success): ?> <div class="success">Bedankt! Uw bericht is succesvol verzonden.</div> <?php endif; ?> <form method="post" action=""> <div> <label>E-mail:</label> <input type="email" name="email" value="<?php echo htmlspecialchars($email ?? ''); ?>" class="<?php echo isset($errors['email']) ? 'error-border' : ''; ?>"> <?php if (isset($errors['email'])): ?> <div class="error"><?php echo $errors['email']; ?></div> <?php endif; ?> </div> <div> <label>Telefoonnummer:</label> <input type="text" name="telefoon" value="<?php echo htmlspecialchars($telefoon ?? ''); ?>" class="<?php echo isset($errors['telefoon']) ? 'error-border' : ''; ?>"> <?php if (isset($errors['telefoon'])): ?> <div class="error"><?php echo $errors['telefoon']; ?></div> <?php endif; ?> </div> <div> <label>Bericht:</label> <textarea name="bericht" rows="5" class="<?php echo isset($errors['bericht']) ? 'error-border' : ''; ?>"><?php echo htmlspecialchars($bericht ?? ''); ?></textarea> <?php if (isset($errors['bericht'])): ?> <div class="error"><?php echo $errors['bericht']; ?></div> <?php endif; ?> </div> <button type="submit">Versturen</button> </form> </body> </html> ``` **Belangrijke kenmerken van deze implementatie:** 1. **Aangepaste validatiefuncties**: Elke functie retourneert `true` bij succes of een foutmelding bij falen 2. **Beveiliging**: - `htmlspecialchars()` voor XSS-preventie - `trim()` en `stripslashes()` voor schone data - Null coalescing operator (`?? '') voor veilige array-access 3. **Gebruikersvriendelijke fouthandeling**: - Foutmeldingen per veld - Visuele highlighting met CSS - Behoud van ingevoerde gegevens bij fouten 4. **Uitbreidingsmogelijkheden**: - Extra validatieregels toevoegen - Database-integratie - Email-bevestiging - CAPTCHA-integratie **Tips voor verdere ontwikkeling**: - Voeg CSRF-protectie toe met tokens - Implementeer rate limiting - Gebruik prepared statements voor database queries - Voeg client-side validatie toe met JavaScript Dit script biedt een solide basis voor veilige formulierverwerking met duidelijke gebruikersfeedback!