brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 25-02-2009, 22:44
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard Warum kein SQL-Fehler ohne Escapen?

Hallo!

Ich möchte gerne PHP-Quelltext in die Datenbank einfügen, das funktioniert auch ganz wunderbar, allerdings für meine Verhältnisse verdächtig zu gut. Ich habe in etwa folgenden (sinngemäßen) code:

PHP-Code:
$code '$test = SLASH'22SLASH'; echo $test;';

mysql_query("UPDATE tablle SET code = '$test'"); 
(Jeweils dort wo SLASH steht habe ich einen Backslash (\) eingefügt, aber der Syntax-Highlighter scheint den zu killen...)


Meines Wissens dürfte doch nun folgendes passieren: Wenn die Variable $test im String der an mysql_query() übergeben wird aufgelöst wird, sollte sich soetwas hier ergeben:
Code:
UPDATE tablle SET code = '$test = '22'; echo $test;'
Ich würde also erwarten, dass MySQL denkt, dass die Zeichenkette bereits nach '$test = ' beendet ist, da ja hier das entsprechend passende Hochkomma erscheint.

Witzigerweise passiert aber folgendes: Es funktioniert! Ganz ohne Probleme wird der Code vollkommen korrekt in die Datenbank geschrieben, und kann auch tadellos wieder ausgelesen werden. Ich hatte vorher mysql_real_escape_string() außendrum gemacht, aber dann waren überall Slashes, und die wurden auch in der Datenbank gespeichert. Kann mir dieses Verhalten einer erklären? Wäre echt interessant, danke schonmal!
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #2 (permalink)  
Alt 25-02-2009, 22:59
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.486
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: Warum kein SQL-Fehler ohne Escapen?

Zitat:
Original geschrieben von ArSeN
Meines Wissens dürfte doch nun folgendes passieren: Wenn die Variable $test im String der an mysql_query() übergeben wird aufgelöst wird, sollte sich soetwas hier ergeben:
Code:
UPDATE tablle SET code = '$test = '22'; echo $test;'
Ich würde also erwarten, dass MySQL denkt, dass die Zeichenkette bereits nach '$test = ' beendet ist, da ja hier das entsprechend passende Hochkomma erscheint.
Warum? Du hast doch vorher selbst gesagt, dass vor dem Hochkomma noch ein Backslash steht.

Zitat:
Witzigerweise passiert aber folgendes: Es funktioniert!
Nicht witziger-, sondern logischerweise.

Zitat:
Ich hatte vorher mysql_real_escape_string() außendrum gemacht, aber dann waren überall Slashes, und die wurden auch in der Datenbank gespeichert. Kann mir dieses Verhalten einer erklären?
Was glaubst du denn, wie oft das schon erklaert wurde - in aller epischen Breite ...?

mysql_real_escape_string ist die absolut einizige Funktion, die du nutzen solltest, um Daten vor dem Einsetzen in einen MySQL-Query-String zu behandeln.
Wenn dabei "zusaetzliche" Backslashes in den Daten "erzeugt" werden - dann waren diese vermutlich schon vorher da, sTichwort magic_quotes.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 25-02-2009, 23:43
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard Re: Re: Warum kein SQL-Fehler ohne Escapen?

Wenn ich die Backslashs nicht hinschreibe, bekomme ich ja wohl Probleme bei
PHP-Code:
$code '$test = '22'; echo $test;' 
weil der String dann scheinbar zu früh terminiert wird, wie das Syntax-Highlighting schon verrät ... oder spinn ich jez? Also is der Backslash ja wohl nur zum Escapen für die Stringzuweisung... naja jedenfalls herzlichen Dank für den Hinweis mit magic_quotes, das wars natürlich.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:38 Uhr.