Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Escapezeichen bei Übergabe mit Post (https://www.delphipraxis.net/111627-escapezeichen-bei-uebergabe-mit-post.html)

Schorschi5566 6. Apr 2008 21:37


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

Christian Seehase 6. Apr 2008 22:02

Re: Escapezeichen bei Übergabe mit Post
 
Moin Uwe,

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

Schorschi5566 6. Apr 2008 22:43

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

omata 6. Apr 2008 22:48

Re: Escapezeichen bei Übergabe mit Post
 
Richtiges HTML wäre & aber ich habe keine Ahnung ob das auch mit IdHttp geht.

Vielleicht hilft das hier ja weiter.

Gruss
Thorsten

Schorschi5566 7. Apr 2008 08:56

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

angos 7. Apr 2008 10:10

Re: Escapezeichen bei Übergabe mit Post
 
Hallo Uwe,

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

Zitat:

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

marabu 7. Apr 2008 10:16

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

Schorschi5566 12. Apr 2008 17:02

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

marabu 12. Apr 2008 20:12

Re: Escapezeichen bei Übergabe mit Post
 
Hallo,

Zitat:

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

Schorschi5566 12. Apr 2008 21:42

Re: Escapezeichen bei Übergabe mit Post
 
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. :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 11:17 Uhr.
Seite 1 von 2  1 2      

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