Probleme mit Hochkommas (') |
webworker
Fachidiot Threadstarter
Beiträge: 115 |
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...
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
den musst du vorm eintragen mit addslashes() formatieren und nachher beim auslesen mit stripslashes() wieder lesbar machen
|
 Profil
Editieren
Zitieren
|
webworker
Fachidiot Threadstarter
Beiträge: 115 |
Danke, das funktioniert soweit...
Aber gibts noch eine andere Möglichkeit bei der ich es nur bei Eintragen machen muss?
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
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.
|
 Profil
Editieren
Zitieren
|
Andreas S
Otto-Normal-Poster
Beiträge: 81 |
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.
|
 Profil
Editieren
Zitieren
|
webworker
Fachidiot Threadstarter
Beiträge: 115 |
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?
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
stripslashes weglassen
|
 Profil
Editieren
Zitieren
|
webworker
Fachidiot Threadstarter
Beiträge: 115 |
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?
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
vielleicht wirklich an Magic Quotes.
|
 Profil
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
Post mal deine Abfrage.
---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
webworker
Fachidiot Threadstarter
Beiträge: 115 |
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?
|
 Profil
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
Hm...eigentlich genau um "..." ging es, also bei mir gibts keine Probleme, wenn man ' in " verwendet...
---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
webworker
Fachidiot Threadstarter
Beiträge: 115 |
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.
|
 Profil
Editieren
Zitieren
|
Adrian
Quasselstrippe
Beiträge: 246 |
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);
} |
---
schaut mal auf http://www.planetcoding-server.net vorbei
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
webworker
Fachidiot Threadstarter
Beiträge: 115 |
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
|
 Profil
Editieren
Zitieren
|