php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.06.2005, 17:14  
Gast
 
Beiträge: n/a
Standard Ich checks nicht! Anführungszeichen und Slashes

Also ich weiß garnichts mehr.

Ich habe viel Text unter anderem mit einfachen und doppellten Anführungszeichen. Habe die datenbank exportiert und importiert dabei kam ne fehlermeldung.

Nachdem ich mich diesen slashes informiert hatte hab ich gelesen man soll beim einfügen in die db an jedes " und ' einen slash machen (addslashes)

Das hab ich nie gemacht. DAnn hab ich meinen db export geschaut und entdeckt, das an den einfachen Anführungszeichen ein Slash hängt aber nicht bei den doppelten.

Dann bin ich bei phpmyadmin in die db eines WBB und da sind auch keine Slashes vor den Anführungszeichen.

Ich hab echt kein plan wie und wann ich was angezeigt bekomme und was stimmt. Nebenbei bekommen meine post daten auch immer slashes angehängt.

Hat da jemand nen Rat?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.06.2005, 19:48  
Gast
 
Beiträge: n/a
Standard

Poste doch mal den code, aber bitte mit
PHP-Code:
<?php
jetzt dein code
?>
d.h. mit dem Button php
  Mit Zitat antworten
Alt 12.06.2005, 23:45  
Matthias959
Gast
 
Beiträge: n/a
Standard

Wo ist denn das Problem?
>>Das hab ich nie gemacht.
Dann kannst du ja jetzt damit anfangen! :wink:
Wenn du den Text wieder ohne slashes brauchst kannst du sie doch einfach mit
stripslashes() entfernen.
http://de2.php.net/manual/de/function.stripslashes.php
  Mit Zitat antworten
Alt 12.06.2005, 23:53  
Gast
 
Beiträge: n/a
Standard

Code brauch ich keinen zu posten es geht einfach darum wenn ich echo $_POST['var'] mache und in dieser Variable ist ein Anführungszeichen bekomme ich \" ausgeliefert warum?

Soll ich auf diese Weise meine Daten in der Datenbank speichern? Wo sehe ich das meine Daten in der DB auch Slashes vorangestellt haben? Wenn ich exportiere haben nur die einfachen Anführungszeichen einen Slash die doppelten haben keinen bei mir.

Und jetzt kommts wie kann ich einen 1 mb großen sql export nachträglich überall mit slashs vor den anführungszeichen machen ohne damit die sql statements zu zerfetzen?
  Mit Zitat antworten
Alt 13.06.2005, 00:32  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von ex³
Code brauch ich keinen zu posten
Aha. Du willst also Dine Fehler selbst finden?

Zitat:
es geht einfach darum wenn ich echo $_POST['var'] mache und in dieser Variable ist ein Anführungszeichen bekomme ich \" ausgeliefert warum?
16.13. Wieso wird aus " plötzlich \" und wie geht das wieder weg?
http://www.php-faq.de/q/q-magic-quotes.html

btw: mit MySQL hat das herzlich wenig zu tun.
  Mit Zitat antworten
Alt 13.06.2005, 08:16  
Gast
 
Beiträge: n/a
Standard

Na ja es geht da eher um ein verständnisproblem schließlich war mein ziel immer die Slashes zu entfernen bevor sie zB. in der DB landen, schätze aber mal so soll das nicht sein oder?

Kann man also sagen (wenn Slashes auto. gesetzt werden) das man Slashes erst vor der ausgabe entfernen sollte? und in der weiteren Verarbeitung lassen sollte?

Was zeigt den PHPmyadmin dazu an? In der Anzeige von Tabellen sind kein Slashes vor Anführungszeichen höchstens nur beim export vor den einfachen Anführungszeichen.
  Mit Zitat antworten
Alt 13.06.2005, 08:42  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von ex³
Na ja es geht da eher um ein verständnisproblem schließlich war mein ziel immer die Slashes zu entfernen bevor sie zB. in der DB landen, schätze aber mal so soll das nicht sein oder?
Das geht nicht, weil Du sonst einen Parsererror u/o SQL Fehler bekommst.

Den Parsererror bekommst Du dann, wenn der String kein String ist, und den SQL Fehler dann, wenn ein literales Stringargument nicht korrekt mit " oder ' eingerahmt wurde. Letztlich ist es egal, weil es in beiden Fällen Ärger gibt.

Aus diesem Grunde müssen alle " und ' entweder mit \ escaped (addslashes() oder mysql_escape_string()) oder mit htmlentities($str, ENT_QUOTES) bzw. htmlspecialchars($str, ENT_QUOTES) kodiert werden.

Der PMA kontrolliert, ob magic_quotes_gpc gesetzt ist, und reagiert darauf. Würde er das nicht tun, gäbe es entweder PHP- u/o SQL-Fehlermeldungen.
  Mit Zitat antworten
Alt 13.06.2005, 09:03  
Gast
 
Beiträge: n/a
Standard

Vielleicht hilft es Dir anhand von php-Code

PHP-Code:
<?php
// Das gibt einen parse error
$var " Götz: "...Vor Ihro Kaiserliche Majestät hab ichwie immerschuldigen RespektEr abersags ihmer kann mich im Arsch lecken!" ";
?>
Inhaltlich wird klar, dass innerhalb der Zeichenkette eine wörtliche Rede eingebettet ist. php hat aber keine Ahnung vom Inhalt und kann deshalb nicht erkennen, wo die Zeichenkette aufhört. Es wendet stur die Regeln an und stolpert dann über den vermeintlichen Rest "nach" der Zeichenkette. Gut zu erkennen an den Farben: Der als Zeichenkette erkannte Teil ist rot bis zum doppelten Anführungszeichen; der Rest ist blau - php hält es also für etwas anderes als eine Zeichenkette.

PHP-Code:
<?php
// Das gibt einen parse error
$var " Götz: \"...Vor Ihro Kaiserliche Majestät hab ich, wie immer, schuldigen Respekt. Er aber, sag's ihm, er kann mich im Arsch lecken!\" ";
?>
Mit dem backslash wird php angekündigt, dass das nächste Zeichen eine geänderte Bedeutung haben soll. Das Anführungszeichen ohne backslash würde normalerweise bedeuten, dass die Zeichenkette hier zu ende ist. Jetzt steht es einfach für das Zeichen "backslash" in der Zeichenkette. Und schon kommt php wieder klar mit dem Skript.
Diese Markierungen sind aber nur für den parser von php gedacht. Der jeweilige Backslash ist nicht Inhalt der Zeichenkette.

Eine Besonderheit bei Sprachen, die Zeichenkettenliterale entweder mit " oder mit ' einleiten können
PHP-Code:
<?php
// Das gibt einen parse error
$var ' Götz: "...Vor Ihro Kaiserliche Majestät hab ich, wie immer, schuldigen Respekt. Er aber, sag\'s ihm, er kann mich im Arsch lecken!" ';
?>
in diesem Literal müssen enthaltene ' per \' markiert werden, aber " hat keine besondere Bedeutung und kann einfach frei verwendet werden.


Genauso bei mysql
SELECT x,y,z from abc WHERE n=' 23° 26' 32.0" '
Die doppelten Anführungszeichen machen keine Probleme. Aber beim ' ist es genau das selbe wie bei php.
SELECT x,y,z from abc WHERE n=' 23° 26\' 32.0" '
Auch hier gilt wieder, dass der backslash nicht zum Inhalt gehört. Er ist nur zum Markieren notwendig. mysql liefert die Datensätze, die im Feld n die Zeichenkette 23° 26' 32.0" zu stehen haben.
  Mit Zitat antworten
Alt 13.06.2005, 15:05  
Gast
 
Beiträge: n/a
Standard

Ich hab jetzt mal nen Export aus phpmyadmin gemacht und mir mal die datei angesehen also alle Texte wo ein ' darin vorkommt haben einen Slash vornedran (wie auch immer der da dran kam) allerdings haben die doppellten Anführungszeichen in meinen Texten keine Slashs vornedrangestellt

@Meikel
Sicherheitshalber sollten also auch doppelte Anführungszeichen einen Slash vornerangestellt bekommen?

ist es vielleicht besser wenn ich htmlentities oder sowas verwende um die Anführungszeichen umzuwandeln oder addSlashes
  Mit Zitat antworten
Alt 13.06.2005, 16:30  
Gast
 
Beiträge: n/a
Standard

Wenn Du es sicher haben willst, läßt Du mysql selbst entscheiden, wie die Nutzdaten aussehen sollen.
siehe auch: http://php.net/mysql_real_escape_string
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SourceGuardian? Ich checks nicht! skywalkerluk PHP Tipps 2006 2 08.01.2006 14:23
[Erledigt] Komischer Fehler, entfernen von Slashes geht nicht PHP Tipps 2005-2 3 14.07.2005 21:22
ahh tut leid aber ich checks ned ! :/ PHP Tipps 2005 5 01.02.2005 17:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php slash entfernen, anführungszeichen machen, php doppelte anführungszeichen, php anführungszeichen entfernen, ein anführungszeichen, php slashes entfernen, php post anführungszeichen, php slash vor anführungszeichen, php slash einfügen, html post anführungszeichen, php slash anführungszeichen, php hochkomma entfernen, html post anführungszeichen slash, php slashes, php anführungszeichen einfügen, slash anführungszeichen, phpmyadmin anführungszeichen, anführungszeichen slash, php anführungszeichen slash, export datenbank anführungszeichen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.