post simulieren mittels sockets
cheops
- php
hi zusammen.
ich simuliere mittels sockets das abschicken eines
formulars und benutze folgenden code:
$fp = fsockopen ("192.168.0.2", 80);
if ($fp)
{
$sockmsg = "
POST /webroot/receive.php HTTP/1.1
Host: 192.168.0.2
Content-Length: 29
Content-Type: application/x-www-form-urlencoded
Connection: Close
variable1=bla&variable2=blubs
";
fputs ($fp, $sockmsg);
..klappt auch alles bestens, nur kann ich keine texte
abschicken (variable1, variable2), die ein "&" im text
haben, weil dadurch die "formularfelder" getrennt werden.
ich könnte jetzt zwar die "&" durch html-code ersetzen
(&) aber das will ich nicht unbedingt, weil bei einem
"richtigen" formular-post das problem ja auch nicht auftaucht
und man dort textareas ja auch mit einem "&" übermitteln kann.
hat jemand ne ahnung wie ich die felder korrekt an die sockets
weitergeben muss?
danke im voraus
gruß
cheops
Hi!
hat jemand ne ahnung wie ich die felder korrekt an die sockets
weitergeben muss?
So wie Du es im content-type definierst!
1. Möglichkeit: Guck Dir die Funktion1 urlencode() an.
2. Möglichkeit: verwende den content-type "multipart/form-data"
Nr. 1 ist vermutlich erheblich einfacher.
Grüße
Andreas
hi,
urlencode bringt mir nicht viel, da ich auf der empfängerseite ja wieder die daten decoden müsste.
im forum hab ich einen link gefunden, der das thema auch
behandelt:
http://www.dclp-faq.de/q/q-code-post.html
leider ist hier genau das gleiche problem, dass texte mit
einem "&" das ganze unbrauchbar machen.... gibt es denn dafür
keine brauchbare lösung??
gruß
cheops
Hi!
hat jemand ne ahnung wie ich die felder korrekt an die sockets
weitergeben muss?
So wie Du es im content-type definierst!
- Möglichkeit: Guck Dir die Funktion1 urlencode() an.
- Möglichkeit: verwende den content-type "multipart/form-data"
Nr. 1 ist vermutlich erheblich einfacher.
Grüße
Andreas
Hi cheops,
der einfachste Weg ist wirklich die Verschlüsselung aller einzelnen Felder (!) mit rawurlencode() und die Entschlüsselung mit rawurldecode().
Der query-String sollte dabei wie folgt zusammengebaut werden:
$query;
$params = array(
"name" => "cheops",
"message" => "das & kann hier problemlos verwendet werden"
);
foreach ($params as $name => $value)
$query .= $name . "=" . rawurlencode($value) . "&";
und NICHT:
foreach ($params as $name => $value)
$query .= "$name=$value&";
$query=rawurlencode($query);
Gruß,
Hi!
der einfachste Weg ist wirklich die Verschlüsselung aller einzelnen Felder (!) mit rawurlencode() und die Entschlüsselung mit rawurldecode().
Im Manual steht:
string urlencode ( string str)
Zeigt eine Zeile an, bei der alle nicht alphanumerischen Zeichen bis auf -_. durch das Prozentzeichen (%) ersetzt werden, gefolgt von zwei Hexzeichen und Leerzeichen durch ein Pluszeichen (+) ersetzt werden. Genauso werden auch Daten kodiert, die über ein WWW-Formular gesendet werden und auf die gleiche Weise mit application/x-www-form-urlencoded kodiert werden. Dies unterscheidet sich von der Kodierung in RFC1738 (siehe rawurlencode()) bei dem aus historischen Gründen Leerzeichen wie Pluszeichen (+) kodiert werden.
Grüße
Andreas
PERFEKT!
dank dir... klappt bestens...
gruß
cheops
Hi cheops,
der einfachste Weg ist wirklich die Verschlüsselung aller einzelnen Felder (!) mit rawurlencode() und die Entschlüsselung mit rawurldecode().
Der query-String sollte dabei wie folgt zusammengebaut werden:
$query;
$params = array(
"name" => "cheops",
"message" => "das & kann hier problemlos verwendet werden"
);foreach ($params as $name => $value)
$query .= $name . "=" . rawurlencode($value) . "&";und NICHT:
foreach ($params as $name => $value)
$query .= "$name=$value&";
$query=rawurlencode($query);Gruß,
- Johannes