|
$xxx_a = $mysqli_real_escape_string($db_link, $xxx;);
|
if($fejlbeskeder == "") |
NOW() indsætter aktuel dato+tid i felt i DATETIME-format (): "2009-12-01 00:00:00".
Ved tilførelse af data til MySQL (INSERT og UPDATE) er der en (teoretisk i det mindste) risiko for at 'nogen' kan indsætte / indskyde skadevoldende SQL-kommandoer i et felt til senere udførelse (f.eks. kopier databasen til 'nogen').
Risikoen for, at injection kan udføres, mindskes ved at lade alle data til databasen passere funktionen $mysqli_real_escape_string() før overførsel.
$mysqli_real_escape_string() foretager en oprydning i datastrengene, før de overføres til databasen. Oprydningen kan bestå i, at et anførselstegn (både enkelt og dobbelt) inde i en tekststreng får foranstillet \. Derved udelukkes, at det kan forvekles med et anførselstegn, der er en del af syntaksen.
En testkstreng, der er 'ombygget' med $mysqli_real_escape_string() er ikke fortsat håndterbar i PHP. Det er derfor vigtigt, at de oprindelige tekststrenge fortsat består, og at de 'ombyggede' isoleres. Dette gøres på følgende måde:
if($fejlbeskeder == "") |
Alle 'ombyggede' variabler overføres til nye systematiserede navne (ovenfor udført ved at tilføje '_a' til deres oprindelige navne). Det er så variablerne med de nye navne, der overføres til databasen.
Ombygningen bør foretages så sent som muligt forud for overførslen til databasen.
Ved at anvende $mysqli_real_escape_string() undgår man bl.a. fejl som denne:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Anders', 'O'Andersen', 'Nygade 17', '', '4000', 'Roskilde', '', 'anders@mail.dk'' at line 3 |
Anførselstegn (både enkelte og dobbelte) kan forekomme i adskillige sammenhænge i tekster; f.eks:
- James O'Connor
- Christian IX's gade
- engang i 1980'rne
- Marc O'Polo
- Jens' ged
- med en længde på 1'6".