Problem mit "-Anführungszeichen!
thomas
- php
Hallo; Ich übergebe eine Variable per POST mit dem Inhalt
Ist es "cool"?
an eine andere Datei. Wenn ich per echo diese Variable ausgebe, bekomme ich aber nur
Ist es \
ausgegeben. Irgendwie muss ich die Anführungszeichen noch maskieren, aber addslashes() bringt auch nichts....
thomas.
Moin!
Hallo; Ich übergebe eine Variable per POST mit dem Inhalt
input oder textarea?
Wie ist magic quotes gesetzt?
Quelltext?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
input oder textarea?
Input
Wie ist magic quotes gesetzt?
; Magic quotes
;
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ' with '' instead of ').
magic_quotes_sybase = Off
Hoppla hab mich gerade registriert und schon erschein ich unter anderem Namen.. jetzt also exciter!
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
Moin!
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
Wenn Du die Daten per HTML ausgibst:
Erstetze alle " durch "a;
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
Erstetze alle " durch "a;
Ersetze alle '"' in den Eingangsvariablen durch '"e'; oder stelle das Verhalten ab, indem Du
magic_quotes_gpc = Off einstellst.
Ich schlag mich hier gerade mit einen kleinen Konfigurationsproblem herum. ATI liefert einen *piep* Treiber und ein noch *fiep* eigenes Konfigurarionsprogramm für den X- Server...
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Ok danke für die Tipps, werds mal probieren...
Hallo,
Ist es "cool"?
Ist es \
ausgegeben. Irgendwie muss ich die Anführungszeichen noch maskieren, aber addslashes() bringt auch nichts....
Seltsam.
Probier's mal mit stripslashes().
Ich vermute, dass wegen magic_quotes PHP " zu " macht.
Gruesse,
Thomas
Hallo thomas,
Hallo; Ich übergebe eine Variable per POST mit
dem Inhalt
Was bedeutet das? Machst du ein Formular und
schickst es per POST ab? Falls ja: maskierst du "
durch "? Oder wie machst du das sonst?
an eine andere Datei. Wenn ich per echo diese
Variable ausgebe, bekomme ich aber nurIst es \
ausgegeben.
Hoert sich ganz danach an, dass du " nicht durch
" maskierst.
Gruesse,
CK