[PHP] "richtige" escapen-Funktion

Benutzer-621

abgemeldet
20 April 2006
744
64
Moin,
Ich möchte eine "richtige" escapen-Funktion erstellen.
Bei PHP gibt es drei Magic Quotes-Einstellungen (magic_quotes_gpc, magic_quotes_runtime, magic_quotes_sybase), die den String unterschiedlich escapen bzw. mit unterschiedlichen Zeichen escapen können.
Nun müssen If/ElseIf-Abfragen her, ich weiß aber nicht wie die Konstellationen für die Ausgaben sind, da es eben drei Einstellungen gibt.
Ich bräuchte also alle zu benötigten If/ElseIf-Abfragen und die dazugehörigen String-Bearbeitungs-Funktionen.
Es soll nicht heißen, dass ich den fertigen Code hier will, ich bräuchte nur "etwas" Hilfe, weil ich einfach zu dumm dafür bin.
Probleme tauchen oft in Skripten auf, weil einfach nur add/stripgeslashed wird, ohne die Magic Quotes-Einstellungen zu berücksichtigen (u.a. der Fall bei Serverumzug).
Vielleicht könnten man es hier auch als Snippet zur Verfügung stellen, falls/wenn es existiert ist.
Unten habe ich teilweise angefangen, was natürlich aber nicht vollkommen richtig ist, da nur Magic Quotes GPC beachtet wurde.
Am Ende soll so escaped werden, dass eben nur der Backslash verwendet wird, und nicht wie bei php.net angegeben, bei bestimmten Einstellungen u.U mit nem Single Quote escaped wird.

PHP:
  define("MAGIC_QUOTES_GPC", ini_get("magic_quotes_gpc"));
  define("MAGIC_QUOTES_RUNTIME", ini_get("magic_quotes_runtime"));
  define("MAGIC_QUOTES_SYBASE", ini_get("magic_quotes_sybase"));

  function escapen($string)
    {
      if(MAGIC_QUOTES_GPC == FALSE)
        $r = addslashes($string);

      elseif(MAGIC_QUOTES_GPC == TRUE)
        $r = addslashes(stripslashes($string));

      return($r);
    }
 
Zuletzt bearbeitet:
Guck Dir mal diesen Codeschnippsel an. Den benutz ich eigentlich immer und hab damit noch nie Probleme gehabt. Es werden alle evtl. vorgenommenen Maskierungen entfernt und man kann sich schön einheitlich selbst drum kümmern:
PHP:
function stripslashes_deep($value)
{
	return (is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value));
}

if (get_magic_quotes_gpc() or get_magic_quotes_runtime())
{
	$_GET    = array_map('stripslashes_deep', $_GET);
	$_POST  = array_map('stripslashes_deep', $_POST);
	$_COOKIE = array_map('stripslashes_deep', $_COOKIE);
}