Toegepast

Laat ons dit toepassen. We maken een datum die juist geformatteerd is. Jaartallen met vier cijfers, de rest telkens twee cijfers.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if (isset($_GET['y'], $_GET['m'], $_GET['d'])) {
  echo sprintf('%04d-%02d-%02d',
  $_GET['y'],
  $_GET['m'],
  $_GET['d']
  );
}

echo '<br>Vul je geboortedatum in:<form action=""><input placeholder="YYYY" name="y"> <input placeholder="MM" name="m"> <input placeholder="DD" name="d"> <input type="submit" value="GO"></form>'
?>


Laat ons het even hebben over de sql-string.
Sprintf is in mijn ogen de meest duidelijke en krachtige manier om te helpen escapen, om te beschermen tegen injection.
Wat vooral handig is, is dat je de sql-string volledig kan zien, in een oogopslag. De string wordt niet onderbroken.
Je ziet ook welk soort gegeven moet komen op de placeholder; en je weet dat de dataTypes gerespecteerd zullen worden.
Je kan die string dus ook hergebruiken, zonder dat je op voorhand moet weten wat de key is van de POST-variabele

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// uiteraard komen deze gegevens normaal uit data van een formulier
$_POST['username'] = 'John';
$_POST['password'] = 'repelsteeltje';
$_POST['gewicht'] = 78.23;
$_POST['kinderen'] = 3;

$sql_format = "INSERT INTO users (username, password, gewicht, kinderen) VALUES ('%s', '%s', %.3f, %d)";
$sql = sprintf($sql_format,
  mysql_real_escape_string($_POST['username']),
  mysql_real_escape_string($_POST['password']),
  $_POST['gewicht'],  // Hier is heen enkele andere bescherming nodig
  $_POST['kinderen']  // Hier is heen enkele andere bescherming nodig
);
echo $sql; // INSERT INTO users (username, password, gewicht, kinderen) VALUES ('John', 'repelsteeltje', 78.230, 3)
?>



Verder is het aan jullie om meer van sprintf te ontdekken.
Er staat een schat aan informatie en voorbeelden op php.net

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Hello World
  2. Getallen
  3. Toegepast

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.