AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Escapezeichen bei Übergabe mit Post
Thema durchsuchen
Ansicht
Themen-Optionen

Escapezeichen bei Übergabe mit Post

Ein Thema von Schorschi5566 · begonnen am 6. Apr 2008 · letzter Beitrag vom 13. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Escapezeichen bei Übergabe mit Post

  Alt 6. Apr 2008, 22:37
Servus,

erstmal vielen Dank für dieses Forum. Hat mir schon mindestens 1000 Mal geholfen, wenn nicht öfter.

Ist das erste Mal, dass ich mit der Suchen-Funktion erfolglos geblieben bin.


Es geht darum, mit einer IdHttp ein Form zu füllen und auch die Textarea korrekt zu übermitteln. Funktioniert auch, wenn im übermittelten String für die Textarea keine "&"-Zeichen enthalten sind.

Meine Frage: Wie kann man das "&" passend escapen, dass es per POST an die Website übermittelt wird. Ich habe schon \& und && probiert, aber es klappert eben nicht.


Hat jemand einen Tipp? Vielleicht auch, wie ich in diesem Fall besser hätte suchen können.

Viele Grüße und schon mal vielen Dank,
Uwe
Uwe
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Escapezeichen bei Übergabe mit Post

  Alt 6. Apr 2008, 23:02
Moin Uwe,

probier's mal mit %26 als Ersatz. (26 ist der Hexcode von &)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: Escapezeichen bei Übergabe mit Post

  Alt 6. Apr 2008, 23:43
Ich glaube ja nicht, dass das was bringt, aber schreibe mir doch mal, wie ich Deiner Meinung nach meinen Code umschreiben muss, damit ich die "&"-Zeichen auch behalte.

Delphi-Quellcode:
sMessage := StringReplace(sMessage, '&', '', [rfReplaceAll]); // funktioniert provisorisch
sMessage := StringReplace(sMessage, '&', '%26', [rfReplaceAll]); // funktioniert genauso provisorisch
sMessage := StringReplace(sMessage, '&', '\&', [rfReplaceAll]); // funktioniert nicht
sMessage := StringReplace(sMessage, '&', '&&', [rfReplaceAll]); // funktioniert nicht
Uwe
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Escapezeichen bei Übergabe mit Post

  Alt 6. Apr 2008, 23:48
Richtiges HTML wäre & aber ich habe keine Ahnung ob das auch mit IdHttp geht.

Vielleicht hilft das hier ja weiter.

Gruss
Thorsten
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

Re: Escapezeichen bei Übergabe mit Post

  Alt 7. Apr 2008, 09:56
Servus,

danke für die Antworten, aber eine Lösung hat sich daraus bisher noch nicht ergeben.

Nochmal ein Beispiel:

var1=abc
var2=def
var3=uvw&xyz

bei der Übergabe per Post kommt dabei wohl soetwas heraus:

http://www.eineseite.de?var1=abc&var2=def&var3=uvw&xyz damit erwartet er eigentlich noch einen Wert für die irrtümliche erkannte Variable xyz.

Wie muss ich den String uvw&xyz ändern, damit er als Ganzes übergeben wird und nicht fehlinterpretiert wird?

Einfache oder doppelte Hochkommata funktionieren nicht. Das & zu escapen hat bisher mit üblichen Methoden auch nicht funktioniert.

Bin etwas ratlos.

Hat jemand noch eine Idee?

Viele Grüße,
Schorsch
Uwe
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Escapezeichen bei Übergabe mit Post

  Alt 7. Apr 2008, 11:10
Hallo Uwe,

Christian Seehase hat die einzig korrekte Lösung gepostet. Ich zitiere mal:

Zitat von Christian Seehase:
Moin Uwe,

probier's mal mit %26 als Ersatz. (26 ist der Hexcode von &)

Die Variable musst du natürlich in der php-Datei wieder in den ursprünglichen String verwandeln. Dazu schaue dir mal die Funktionen
urldecode und urlencode an. Klick mich!

[edit] Ein Escapen ist in einer Url nicht möglich, daher muss man mit den Ascii - Werten arbeiten
Gruß
Ansgar
Ansgar
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Escapezeichen bei Übergabe mit Post

  Alt 7. Apr 2008, 11:16
Hallo Uwe,

die Indy-Komponenten erledigen das Encoding / Decoding auf der Client-Seite für dich, PHP bzw. die Server-Seite ist ein anderes Thema:

Code:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  s: TStrings;
begin
  s := TStringList.Create;
  s.Values['demo'] := 'Me&You';
  try
    s.Text := HTTP.Post(S_URL, s);
    // ...
  finally
    s.Free;
  end;
end;
Die Option hoFOrceEncodedParams ist die Standardannahme.

Grüße vom marabu
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

Re: Escapezeichen bei Übergabe mit Post

  Alt 12. Apr 2008, 18:02
So, jetzt bin ich's nochmal.

Nochmals Danke für Eure Tipps.

Im Prinzip funktioniert der Ansatz mit %26. Allerdings habe ich auf den php-Code keinen Einfluss und kann die %26-Codierung nicht wieder rückgängig machen.

Es geht darum, in einem Forum eines meiner Postings immer wieder automatisch zu aktualisieren. In dem Posting wird eine Tabelle angezeigt, die sich vollautomatisch aktualisieren soll.

Diese Tabelle enthält auch einige &-Zeichen, die natürlich auch als &-Zeichen dargestellt werden sollen.

Füge ich die Tabelle von Hand in das Formular des Forums ein, funktionieren die &-Zeichen.

Schicke ich die Tabelle mit der Indy-Http-Komponente, dann schneidet er mir den zu übermittelnden String vor dem ersten &-Zeichen ab. Das heißt, das erste &-Zeichen und der ganze Rest verschwinden.

Sowas wie "Du & Ich" würde also als "Du " ankommen.

Das Beispiel von oben

Code:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  s: TStrings;
begin
  s := TStringList.Create;
  s.Values['demo'] := 'Me&You';
  try
    s.Text := HTTP.Post(S_URL, s);
    // ...
  finally
    s.Free;
  end;
end;
funktioniert bei mir mit diesem Forum jedenfalls nicht.


Gibt es vielleicht doch noch eine andere Möglichkeit die Textarea des Formulars zu füllen und wieder korrekt abzuschicken?



Viele Grüße,
Schorsch
Uwe
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Escapezeichen bei Übergabe mit Post

  Alt 12. Apr 2008, 21:12
Hallo,

Zitat von Schorschi5566:
... Im Prinzip funktioniert der Ansatz mit %26. Allerdings habe ich auf den php-Code keinen Einfluss und kann die %26-Codierung nicht wieder rückgängig machen. ...
kennst du die PHP-Funktion urldecode()?

Freundliche Grüße
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

Re: Escapezeichen bei Übergabe mit Post

  Alt 12. Apr 2008, 22:42
Servus Marabu,

ja, nur damit komme ich doch hier auch nicht weiter.

Zitat:
Allerdings habe ich auf den php-Code keinen Einfluss und kann die %26-Codierung nicht wieder rückgängig machen.
Ich frage mich ja nur, wie es PHP bei direkter Eingabe in die Textarea hinbekommt. Die Indy-Komponenten machen da irgendetwas anders, oder?

Also nochmal, ich kann nicht an der PHP-Seite rumschrauben. Ich muss es von der Clientseite aus hinbekommen. Ein plumper Workaround ist es zur Zeit, alle &-Zeichen in Texten durch "und" zu ersetzen. Ist aber wirklich plump, weil es manchmal "and" heißen müsste. Pluszeichen gehen ja auch nicht.

Mich wundert nur, dass scheinbar nur ich dieses Problem habe. Hat noch niemand eine textarea in einem Forum mit Indy ausgefüllt und ist auf das &-Problem gestoßen?

Wusste doch, dass ich solche Probleme anziehe.

Vielleicht weiß ja noch jemand einen Rat oder hat einen völlig anderen Ansatz.

Danke soweit und viele Grüße,
Schorsch
Uwe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz