PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache/PHP: Pfad in MySQL Datenbank speichern: \ verschwinden


M@tes
2011-02-14, 16:21:14
Hallo zusammen!
Habe ein komisches Problem. Hab zum einen einen Webserver im Internet und zum anderen ein Xampp lokal.
Habe ein Script (auf das wesentlichste reduziert) mit folgendem Beispielpfad: "C:\123.pdf" :
mysql_query( 'UPDATE archiv SET path = "'.$_GET['path'].'" WHERE id = '.$_GET['id'] );
Wenn ich diesen Befehl auf meinem Webserver laufen lasse, funktionierts einwandfrei!
Auf meinem Xampp fehlen sämtliche \ Zeichen. Das funktioniert sobald ich folgenden Befehl voransetze:
$_GET['path'] = str_replace("\\", "\\\\", $_GET['path']);
Wie kann das sein, das ich diesen Part auf dem einen Server brauche und auf dem anderen nicht??

Sephiroth
2011-02-14, 16:34:14
ein einfacher \ muss üblicherweise durch \\ maskiert werden, da er Teil einer Escape-Sequenz (http://de.wikipedia.org/wiki/Escape-Sequenz) (z.B. \n für Zeilenumbruch) ist.

Bevor du eine Query abschickst, solltest du die Eingabeparameter wenigstens mit mysql_escape_string escapen, dann wird auch aus dem einem \ zwei \\.

M@tes
2011-02-14, 16:39:12
Was ich ja mit dem replace gemacht habe. Aber auf meinem Server wird folgendes im MySQL gespeichert:
C:\\123.pdf
Im Xampp sieht der Eintrag im MySQL so aus:
C:\123.pdf
auf beiden läuft der gleiche Code:
$_GET['path'] = str_replace("\\", "\\\\", $_GET['path']);
mysql_query( 'UPDATE archiv SET path = "'.$_GET['path'].'" WHERE id = '.$_GET['id'] );


/edit: Hat das was mit der Konfikuration zu tun??
Aufm Server kann ich PHP so einleiten: <?
Xampp braucht zwingend <?php

/edit2:
<? scheint n sogennanter SGML-Style zu sein
<?php der XML-Style. Dieses funktioniert bei beiden. Somit werd ich dieses verwenden.
Das Replaceproblem werd ich immer noch nicht schlau draus :(

Sephiroth
2011-02-14, 16:48:23
Gut möglich das auf deinem Server die Daten automatisch escaped werden. Dazu musst du mal die Konfigurationen vergleichen. Vermutlich ist die option magic_quotes_gpc (http://de2.php.net/manual/de/info.configuration.php#ini.magic-quotes-gpc) und/oder magic_quotes_runtime aktiviert.

M@tes
2011-02-14, 16:55:18
Ja bingo, da scheint was dran zu sein, beim Xampp ists off. Aufm Server ists on.
Habs geändert. Jetzt sind identisch. Tip top! Danke! :)

/edit: Gibt es eine Möglichkeit den Parameter im PHP abzufragen? Nutze grad nur den üblichen phpinfo(); Befehl :/
Mit get_magic_quotes_runtime() bekomm ich immer 0 obwohl der Wert auf On gesetzt wurde oO

/edit2: hat sich erledigt. Sollte auch get_magic_quotes_gpc nehmen ;p Danke jetzt hab ich alles!