strip/add-slashes funktion

kai2006

Grünschnabel
Hallo,

da ich nicht immer von Hand prüfen möchte, ob die POST Daten automatisch gequotet werden (Um diese danach in eine Datenbank zu schreiben), habe ich folgende Funktion geschrieben.

PHP:
function slashes($array,$do,$type='gpc') {

	switch($type) {
		case 'gpc' :
			if(($do == 'add' && get_magic_quotes_gpc()) || ($do == 'del' && !get_magic_quotes_gpc()) )
				return $array;
		break;
		case 'runtime' :
			if(($do == 'add' && get_magic_quotes_runtime()) || ($do == 'del' && !get_magic_quotes_runtime()))
				return $array;
		break;
		default:
			return $array;
		break;
	}

	if(is_array($array)) {
		foreach($array as $item => $value) {
			if(is_array($value)) {
				$array[$item] = slashes($value,$do,$type);
			}else {
				if($do == 'del') {
					$value = stripslashes($value);
				}elseif($do == 'add') {
					$value = stripslashes($value);
					if(!is_numeric($value) && $value !== NULL) {
						$value = mysql_real_escape_string($value);
					}
				}
				$array[$item] = $value;
			}
		}
	}elseif($do=='del') {
		$array = stripslashes($array);
	}elseif($do=='add') {
		$array = stripslashes($array);
		if(!is_numeric($array) && $array !== NULL) {
			$array = mysql_real_escape_string($array);
		}
	}

	return $array;
}

Aufgerufen wird sie mit
PHP:
$stripped = slashes($_POST,'add');

Meine Frage ist jetzt.
Ist sowas überhaupt sinnvoll bzw. die angehensweise korrekt?
Sollte man, auch wenn magic_quotes_gpc() auf off steht, trotzdem stripslashes benutzen?
 
Zuletzt bearbeitet:
Ich denke es ist besser auf strip_slashes() zu verzichten wenn die MagicQuotes off sind.
In der PHP-Doku findet sich eine schoene Funktion zu diesem Thema:
PHP:
function quote_smart($value)
{
   // Stripslashes
   if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }
   // Quote if not a number or a numeric string
   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value) . "'";
   }
   return $value;
}
Je nachdem kann natuerlich bei $value = ... an Anfang und Ende "'" weggelassen werden. Aber sie wie hier gepostet steht die Funktion bei php.net, daher wollte ich sie jetzt auch einfach mal 1:1 kopieren.
 
Zurück