von einstein |
http://de2.php.net/manual/de/function.mysql-escape-string.php |
von languitar |
register_globals kann ich doch auch per htaccess umstellen... |
von Can |
magic_quotes_qpc ist ne PHP-Einstellung, die kannst du nicht per .htaccess ändern.
[edit:] Ach so, nein, stimmt ja gar nicht, das Forum hatte das Posting mal wieder verhexelt...[/edit] |
von languitar |
Lässt dein Hoster die Benutztung von htaccess zu? |
von Care |
Hallo ich habe eine .htaccess erstellt und diese im ascii mode hochgeladen. Trotzdem ändert sich der Status von magic_quotes_gpc nicht. Muß man diese .htaccess irgendwie aktivieren oder was mache ich falsch?
Vielen Dank schonmal. |
von webworker |
Hallo,
es lag wirklich an de Magic Quotes, welche deaktiviert waren.
Wen es interessiert, man kann sie mit HTACCESS aktivieren:
1: | php_flag magic_quotes_gpc on |
Danke die Tipp |
von Adrian |
Z.T. wird in dem Thread hier ziemlich viel Unsinn gepostet.
Man sollte bei Daten die vom Benutzer kommen, stripslashes immer dann anwenden, wenn get_magic_quotes_gpc()==false ist.
In SQL Abfragen verwendet man dann bei allen Daten addslashes().
stripslashes() ist beim Auslesen dann nicht mehr notwendig.
Und für alle die die superglobalen $_*-Arrays verwenden gibt es hier noch einen passenden Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18: | function stripslashes_array($array)
{
reset($array);
while(list($key,$val)=each($array))
{
if(is_string($val)) $array[$key]=stripslashes($val);
elseif(is_array($val)) $array[$key]=stripslashes_array($val);
}
return $array;
}
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);
} |
|
von webworker |
Mein Problem ist aber das wenn ein User \" eingibt, dass dann " ausgegeben wird, zumindest wenns aufm Server ist.
Wenn ich lokal \" eingebe wird auch \" ausgegeben.
Hm, es liegt auch an der Eintragung, nciht an der Ausgabe... Aufm Server wird \" eingetragen (woraus bei stripslashes() " draus wird), und lokal wird halt das "richtige" eingetragen. |
von Can |
Hm...eigentlich genau um "..." ging es, also bei mir gibts keine Probleme, wenn man ' in " verwendet... |
von webworker |
Welche Abfrage?
Die des Posts?
Das ist ganz normal mit ner While...
$data = mysql_query("...
while($row = mysql_fetch_array($data))
{
...
}
Was sind diese Magic Quotes? |
von Can |
Post mal deine Abfrage. |
von languitar |
vielleicht wirklich an Magic Quotes. |
von webworker |
stripslashes() weglassen bringt nichts gutes :P
Was komisch ist: lokal funktioniert es (wie ich es bisher schon hatte), aber nicht wenn ichs bei meinem Hoster auf den Server lade nicht mehr...
Die Dateien sind identisch, ich habs jetzt schon mehr mals hochgeladen
Woran kann das liegen? |
von languitar |
stripslashes weglassen |
von webworker |
Wenn ich stripslashes() auf den Text anwende werden aber (logischer weise) auch alle \" zu ", was für PHP-Codes sehr schädlich ist
Was nun? |
von Andreas S |
Stripslashes() braucht man überhaupt nicht. Die Slashes die mit addslashes() voran gestellt werden, werden überhaupt nicht in der DB gespeichert - also muss man sie auch nicht entfernen.
Wenn bei der Ausgabe trotzdem Backslashes erscheinen, liegt das an den Magic Quotes, die automatisch Backslashes an alle 'schädlichen' Zeichen in Input-Strings (COOKIE, GET, POST) voranstellt. Um das zu beheben, stellt man die Magic Quotes am besten auf Off oder filtert die globalen GET, POST und COOKIE Variablen ganz am Script Anfang. |
von languitar |
Wie? Wenn du in MySQL Alle arten von Texten, also wo es sich nicht nur um reine Zahlenkombinationen oder Kombinationen die der Rechner generiert udn die du abschätzen kannst handelt, solltest du add- und stripslashes benutzen, damit solche Fehler nicht auftreten können. was anders geht nicht. |
von webworker |
Danke, das funktioniert soweit...
Aber gibts noch eine andere Möglichkeit bei der ich es nur bei Eintragen machen muss? |
von languitar |
den musst du vorm eintragen mit addslashes() formatieren und nachher beim auslesen mit stripslashes() wieder lesbar machen |
von webworker |
Hallo,
wenn ich in meine Datenbank z.B. einen Text, welcher ein Hochkomma (') enthält, eintragen will klappt das nicht... Wieso?
Ich habe irgendwann sowas schon mal gelesen...
|