![]() |
Escapezeichen bei Übergabe mit Post
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 |
Re: Escapezeichen bei Übergabe mit Post
Moin Uwe,
probier's mal mit %26 als Ersatz. (26 ist der Hexcode von &) |
Re: Escapezeichen bei Übergabe mit Post
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 |
Re: Escapezeichen bei Übergabe mit Post
Richtiges HTML wäre & aber ich habe keine Ahnung ob das auch mit IdHttp geht.
Vielleicht hilft das ![]() Gruss Thorsten |
Re: Escapezeichen bei Übergabe mit Post
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:
Delphi-Quellcode:
damit erwartet er eigentlich noch einen Wert für die irrtümliche erkannte Variable xyz.
http://www.eineseite.de?var1=abc&var2=def&var3=uvw&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 |
Re: Escapezeichen bei Übergabe mit Post
Hallo Uwe,
Christian Seehase hat die einzig korrekte Lösung gepostet. Ich zitiere mal: Zitat:
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. ![]() [edit] Ein Escapen ist in einer Url nicht möglich, daher muss man mit den Ascii - Werten arbeiten Gruß Ansgar |
Re: Escapezeichen bei Übergabe mit Post
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:
Die Option hoFOrceEncodedParams ist die Standardannahme.
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; Grüße vom marabu |
Re: Escapezeichen bei Übergabe mit Post
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:
funktioniert bei mir mit diesem Forum jedenfalls nicht.
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; Gibt es vielleicht doch noch eine andere Möglichkeit die Textarea des Formulars zu füllen und wieder korrekt abzuschicken? Viele Grüße, Schorsch |
Re: Escapezeichen bei Übergabe mit Post
Hallo,
Zitat:
Freundliche Grüße |
Re: Escapezeichen bei Übergabe mit Post
Servus Marabu,
ja, nur damit komme ich doch hier auch nicht weiter. Zitat:
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. :mrgreen: Vielleicht weiß ja noch jemand einen Rat oder hat einen völlig anderen Ansatz. :) Danke soweit und viele Grüße, Schorsch |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz