Einzelnen Beitrag anzeigen

Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Seltsamer Fehler bzgl. Parameterobjekt

  Alt 8. Mai 2014, 08:58
Sorry, war gestern nicht mehr online und konnte das nicht weiter ausführen.

Die Tabelle enthält Textbausteine für meine Web-CGI, quasi ein Mini-CMS für Arme.
Sobald aus dem Webrequest ersichtlich ist, welche neue Web-Seite angefordert wurde, wird die Query geöffnet, die da lautet:

SQL-Code:
Select * From
  Webtexte
Where
  Seite='*'
  or Seite='Name der angeforderten Seite'
  or Kategorie='Menuitem'
Das einzige was an dem Statement variabel ist ist der Name der angeforderten Seite. In Delphi sieht die Stelle so as:

Code:
Webtexte.SQL.Add('or Seite = ');
Webtexte.SQL.Add(QuotedStr(GetPagename(RequestedPage)));
Die GetPagename-Funktion liefert nur definierte Namen zurück, so dass ich mich nicht um SQL-Injektion o.ä. sorgen musste und keine Parameter benutze!
Wie man sieht enthält auch die Where-Klausel keinen Vergleich mit einem Text der einen Doppelpunkt enthält.

Es gibt dann eine Funktion, die aus der bereits ohne Fehler geöffneten Datenmenge einen Textbaustein anhand der ID sucht und in dieser tritt mMn der Fehler auf. Sinngemäß (hab Delphi noch nicht auf):

Delphi-Quellcode:
function GetContentFromID(ID:String):String;
begin
  if Webtexte.Active then
    begin
    Webtexte.Locate('ID',ID,[]);
    Result:=Webtexte.FieldByName('DE').AsString;
    end;
end;
Es werden während der Laufzeit der CGI mehrere Textbausteine mit verschiedenen ID's aus der Datenmenge geladen, daher weiß ich, dass diese sich auf jeden Fall öffnet. Nur halt der eine Datensatz, der einen Doppelpunkt enthält, macht halt Probleme. Der Text in dem Datensatz ist:
"Gehen Sie dabei wie folgt vor:"
Laß ich den Doppelpunkt weg, funzt halt alles.

Ich hoffe so wird klarer warum ich das nicht nachvollziehen kann.
Ralph

Geändert von Jumpy ( 8. Mai 2014 um 09:00 Uhr)
  Mit Zitat antworten Zitat