PHP Anführungszeichen werden escaped

Agratos

Lt. Commander
Registriert
Mai 2010
Beiträge
1.442
Hallo,

habe hier ein Problem und ich komm einfach nicht drauf klar, woran es liegen könnte.
Ich habe hier eine Datei, in die ich per PHP über POST einen Text einlese,
welchen ich danach sofort per echo ausgebe (habe ich nur geschrieben,
um die Sache zu reproduzieren). Sobald ich ein Anführungszeichen (") hineinschreibe,
wird die escaped und es wird \" ausgegeben.

Setze ich dazu noch ein mysql_real_escape_string davor, wird sogar \\\" ausgegeben.

Ich habe schon probiert das Charset zu wechseln von ISO-8859-1 auf utf-8,
das hat aber überaupt nichts an der Sache geändert.
Als Doctype verwende ich XHTML 1.0 Strict, die Seite ist soweit valid (w3.org).

Ich wüsste nicht, woran es noch liegen könnte,
außer an irgendwelchen Einstellungen am Webspace, woran aber nichts verändert wurde.
Auch wüsste ich nicht, welche Einstellung sowas bewirken könnte.

Hoffe mir kann jemand dabei helfen, das Problem zu lösen.
Wahrscheinlich ist's ne Kleinigkeit, über die ich mich dann ärger. ^^
Vielen Dank shcon mal im Vorraus.
 
Hab nur Websapce gekauft und besitze den Server nicht, meinst du ich komm an die Einstellung ran?
Oberfläche ist Parallels Confixx. Finde selber nix, wo ich das einstellen könnte.

E: Hab grad nachgeschaut mit phpinfo(), magic quotes ist an. Wie komm ich denn nu an die .ini ran?
 
Zuletzt bearbeitet:
Allerhöchstens mittels .htaccess. Aber ich würde dir eher raten, eine Funktion zu basteln, welches dir den Input zurechtbiegt. Siehe zb. hier:

http://php.net/manual/de/security.magicquotes.disabling.php

Vergiss aber nicht, dass du dann IMMER mysql_real_escape_string() benutzen musst, wenn du Daten in die DB einfügst. Aber, ist so oder so der richtige Weg.
 
Hallo,

das kann Dir nur Dein Hoster beantworten.

Du kommst bei einem Hosting Paket nicht an die Serverseitige php.ini dran.

Aber wenn der Server Änderungen an der php.ini zu lässt, kannst Du einfach versuchen, in das betreffende Verzeichnis eine php.ini mit Deiner Änderung ein zu fügen. Manche lassen das zu, andere nicht.

Grüße,

Blubbs
 
bu1137 schrieb:
Allerhöchstens mittels .htaccess. Aber ich würde dir eher raten, eine Funktion zu basteln, welches dir den Input zurechtbiegt. Siehe zb. hier:

http://php.net/manual/de/security.magicquotes.disabling.php

Vergiss aber nicht, dass du dann IMMER mysql_real_escape_string() benutzen musst, wenn du Daten in die DB einfügst. Aber, ist so oder so der richtige Weg.


Dass ich die Funktion dann immer benutzen muss, ist mir klar.

Per .htaccess dann einfach in die im Hauptverzeichnis den PHP Flag hinzufügen?

E: Also besser gesagt, mich würde es ja nicht so stören, dass es an wäre, wenn mir nicht auch normale " ohne irgendeine Funktion dazwischen escaped werden würden.

E2: Da die Lösung per .htaccess einen Internal Server Error verursacht hat, hab ich nun das PHP Script auf der von dir genannten Seite benutzt und es funktioniert. Jetzt werden wenigstens die Anführungszeichen nicht mehr verunstaltet, wenn keine Funktion dazwischenkommt.

Habe jetzt noch eine allgemeinere Frage und möchte dafür nicht noch einen Thread aufmachen, da es auch mit dem Thema zu tun hat. Wenn ich jetzt mysql_real_escape_string benutze, werden die Anführungszeichen ja auch mit Backslashes escaped. Wenn ich Usereingaben nun aus der Datenbank ausgebe, werden auch die Slahes mit ausgegeben. Muss ich da die Backslashes mit PHP wieder rausnehmen, um sie nicht mit auszugeben? Also ist das der Normalzustand oder ist was am Server falsch eingestellt?
 
Zuletzt bearbeitet:
Neue Daten (seitdem du umgestellt hast) sollten eigentlich ohne \' aus der DB kommen.

Also, welche du nach der Umstellung in die DB geschrieben hast. Die alten... da müsstest du am besten die Werte in der DB bereinigen.
 
Zuletzt bearbeitet:
Achso, gut zu wissen. Habe jetzt nur den mit mysql_real_escape escapeten String direkt wieder ausgegeben, das heißt er war nicht in der Datenbank. Daran wirds wohl liegen.
 
Falls hier noch jemand ueber den Thread stolpert:

Magic Quotes sind schon seit drei Jahren (PHP 5.3) deprecated und seit PHP 5.4 komplett entfernt. Nicht benutzen!

@Agratos: Was ist das fuer ein bescheidenes Hosting-Paket, bei dem man sowas nicht einstellen kann?
 
9€ für Webspace + Domain im Jahr und ich konnte das Problem ja lösen. Ich kann bisher nicht meckern. ;)
 
Zurück
Oben