Stefan Bechtold: Problem mit "-Anführungszeichen!

Beitrag lesen

Hi, es gibt da ne einfache Möglichkeit:
zu Beginn überprüfst du deine Einstellungen und schmeißt alle Slashes raus, falls sie gesetzt wurden...

/* Bei PHP Versionen unter 4.10 stehen die neuen Superglobals (REQUEST, POST, GET) noch nicht
zur Verfügung und müssen mit den Daten aus den alten Arrays gefüllt werden. */
if($phpversion < 410) {
 $_REQUEST=array();
 $_COOKIE=array();
 $_POST=array();
 $_GET=array();
 $_SERVER=array();
 $_FILES=array();
 $_ENV=array();
 $_SESSION=array();
 get_vars_old();
}

/* Magic Quotes fügen den übergebenen Daten automatische Slashes hinzu. Diese müssen wieder
entfernt werden, um eine allgemeine Behandlung der Daten zu gewährleisten. */
if (get_magic_quotes_gpc()) {
 if(is_array($_REQUEST)) $_REQUEST=stripslashes_array($_REQUEST);
 if(is_array($_POST)) $_POST=stripslashes_array($_POST);
 if(is_array($_GET)) $_GET=stripslashes_array($_GET);
 if(is_array($_COOKIE)) $_COOKIE=stripslashes_array($_COOKIE);
 if(isset($_SESSION) && is_array($_SESSION)) stripslashes_array($_SESSION);
}

@set_magic_quotes_runtime(0);

Bei den Routinen werden diese zwei Funktionen zusätzlich benötigt:

/**
 * @return void
 * @desc Diese Funktion füllt die Arrays $_REQUEST $_POST $_GET $_COOKIE usw.
 * mit den Daten aus dem equivalenten Arrays aus PHP Versionen vor 4.10
 */
function get_vars_old() {
 global $HTTP_COOKIE_VARS, $HTTP_POST_FILES, $HTTP_POST_VARS, $HTTP_GET_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS, $HTTP_SESSION_VARS, $_REQUEST, $_COOKIE, $_POST, $_GET, $_SERVER, $_FILES, $_ENV, $_SESSION;

if(is_array($HTTP_COOKIE_VARS)) {
  while(list($key,$val) = each($HTTP_COOKIE_VARS)) {
   $_REQUEST[$key] = $val;
   $_COOKIE[$key] = $val;
  }
 }

if(is_array($HTTP_POST_VARS)) {
  while(list($key,$val) = each($HTTP_POST_VARS)) {
   $_REQUEST[$key] = $val;
   $_POST[$key] = $val;
  }
 }

if(is_array($HTTP_GET_VARS)) {
  while(list($key,$val) = each($HTTP_GET_VARS)) {
   $_REQUEST[$key] = $val;
   $_GET[$key] = $val;
  }
 }

if(is_array($HTTP_POST_FILES)) {
  while(list($key, $val) = each($HTTP_POST_FILES)) {
   $_FILES[$key] = $val;
  }
 }

if(is_array($HTTP_SERVER_VARS)) {
  while(list($key, $val) = each($HTTP_SERVER_VARS)) {
   $_SERVER[$key] = $val;
  }
 }

if(is_array($HTTP_ENV_VARS)) {
  while(list($key, $val) = each($HTTP_ENV_VARS)) {
   $_ENV[$key] = $val;
  }
 }

if(is_array($HTTP_SESSION_VARS)) {
  while(list($key, $val) = each($HTTP_SESSION_VARS)) {
   $_SESSION[$key] = $val;
  }
 }
}

/**
 * @return array array
 * @param array array
 * @desc Diese Funktion wendet die Funktion stripslashes()
 * auf alle Elemente eines Arrays (auch mehrdimensional) an.
 */
function stripslashes_array(&$array) {
 reset($array);
 while(list($key, $val) = each($array)) {
  if(is_string($val)) {
   $array[$key] = stripslashes($val);
  }
  elseif(is_array($val)) {
   /* rekursiver Aufruf bei mehrdimensionalem Array */
   $array[$key] = stripslashes_array($val);
  }
 }
 return $array;
}

Nun hast du alle Daten OHNE Slashes, also musst du für die Abfragen mit SQL usw. wieder welche hinzufügen. Aber für einfache Ausgaben kannst du nun einfach echo $variable machen...

Gruss Stefan