dedlfix: Intelligente Suche

Beitrag lesen

echo $begrüßung;

Ich habe hier alles möglichst eifach halten wollen. Aber für das Escapen habe ich eine eigene function geschrieben:
    $var = addslashes(htmlentities(trim($var), ENT_QUOTES, 'UTF-8'));

addslashes() berücksichtigt zu wenig Zeichen wenn es sich um eine MySQL-Datenbank handelt. Dafür ist mysql_real_escape_string() vorgesehen. (Für andere Datenbanksysteme sind Maskierungen gemäß deren Regeln zu verwenden.)

HTML-Entities bzw. jegliche andere für ein bestimmtes Ausgabemedium vorgesehe Kodierung hat in einer Datenbank nichts verloren, weil du dann die datenbankeigenen Stringfunktionen nicht mehr oder nur noch eingeschränkt nutzen kannst. 'Hühner' sind bei dir 'Hühner' und werden beim Sortieren vor den 'Hasen' ausgegeben, weil ein & kleiner als ein a ist. Und was machst du mit den Entities, wenn du später mal die Daten in eine Textdatei ausgeben oder per E-Mail versenden willst?

htmlentities() sind für eine durchgehend auf UTF-8 basierenden Verarbeitung auch nicht mehr nötig, da praktisch sämtliche Zeichen direkt gemäß UTF-8 kodiert werden können. Einzig die htmlspecialchars() werden in HTML noch benötigt.

Zusammenfassend:

  • addslashes() zugunsten von mysql_real_escape_string() aus dem Script und dem Gedächtnis verdrängen.
  • htmlentities() zugunsten von htmlspecialchars() aus dem Script und dem Gedächtnis verdrängen.
  • htmlspecialchars() erst zur Ausgabe in einen HTML-Kontext anwenden.

$sql .= "(MATCH ".$key." AGAINST ('".input($_POST[$key])."' IN BOOLEAN MODE) OR ";
$key kann man nur frei bestimmen, wenn man z.B Firebug hat.

Für die Maskierung von Spaltennamen gibt es für MySQL keine vorgefertigte Funktion. Du müsstest das selbst gemäß den unter Database, Table, Index, Column, and Alias Names (ab Absatz beginnend mit "Identifier quote characters can be included ...") aufgeführten Regeln bewerkstelligen.

echo "$verabschiedung $name";