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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

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: 25.236
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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:37 Uhr.