Beste,

Ik ben bezig met een CRM aan het ontwikkelen en ik loop tegen het bedrijfsnaam aan tegen, ik kan hem niet verwerken binnen de database. Hoe kan ik dit tackelen? want het weergeven van alle bedrijfsinformatie gaat via bedrijfsnaam en de enkele en dubbele quotes snijden dan de string af. Hier zijn diverse voorbeelden;

v.v. d´Olde Veste ´54
Mini camping "Onder" de Heerenbrug
Bierproeverij ' de Beijerlandse Biersommelier '

ik probeerde het met preg_match :
if(!preg_match("[^a-zA-Z0-9 \"\'\?\-]", $_POST['bedrijfsnaam'])){



Graag advies.
precies: en dus niet zelf tekens gaan definieren die in een naam voor mogen komen.
Je sloot C&A, Hunkemöller en Me@Work4U uit omdat er "rare" tekens in de naam voorkwamen.
Nog een paar bedrijfsnamen :

Bedrijfsnaam

Company Name

???????? ???????????

???? ??????

Företagsnamn

Ettevõtte nimi

????????? ??????

??? ?????

[size=xsmall]Toevoeging op 04/01/2023 14:17:01:[/size]

Nou php hulp, dat schiet ook niet op.

Alleen Latijnse letters worden ondersteund.
In deze discussie mis ik de -mijns inziens beste- oplossing met prepared statements.

Ruwweg:

<?php
$naam = $_POST['bedrijfsnaam'] or return [-1, 'Bedrijfsnaam mag niet leeg zijn'];

$mysqli = new mysqli($hostname, $dbuser, $dbpass, $dbname);
$stmt = $mysqli->stmt_init();
$stmt->prepare("INSERT INTO tabel (naam) VALUES (?)");
$stmt->bind_param("s", $naam);
$stmt->execute();
?>


Geen gedoe met real_escape_string() en zo, je bent immuun voor SQL-injectie, en je statement is herbruikbaar, wat scheelt in performance als je het statement meerdere malen moet uitvoeren.

Reageren