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, 23: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, 23: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 26-02-2009, 00: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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
FAQ Script PHP ansehen FAQ Script PHP

FAQ Script PHP is a simple knowledgebase script and you could use it as a Frequently Asked Question section on your website. It is written in PHP and MySQL.

14.01.2019 nevenov | Kategorie: PHP/ FAQ
Admidio Mitgliederverwaltung

Admidio ist eine kostenlose Online-Mitgliederverwaltung, die für Vereine, Gruppen und Organisationen optimiert ist. Sie besteht neben der Mitgliederverwaltung aus einer Vielzahl an Modulen (Foto-, Download-, Terminverwaltung), die in eine neue oder besteh

08.01.2019 webmaster52@ | Kategorie: PHP/ Groupware
 Alle PHP Scripte anzeigen

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