POST Daten ber PHP versenden (ohne Formular
Hallo zusammen
Ich möchte über den Aufruf einer Seite POST-Daten an eine andere Seite senden. Ich möchte dies nicht durch ein Formular machen, da bereits beim Aufruf (nicht erst beim klicken auf submit) die Daten abgeschickt werden sollen. Habe dazu bereits etwas gegoogelt und folgendes zusammengestiefelt:
So sollten also die Daten
pdata/ErsterWert/1=1
pdata/Zweiter/2=10
an die Seite www.Zielseite.com/home/Pfad/sonstwas.php gesendet werden. leider geschieht nichts. Die Funktion wird ausgeführt bis zum Schluss (Getestet mit Echo-Ausgaben an versch. Stellen) und es gibt keine Fehlermeldung. Aber kein POST wird gesendet (Tamper Extension für Firefox)
Allerdings erhalte ich im Tamper zu einem Get ein 404. Sehe darin aber nirgends meine URL.
Hoffe das ist jetzt nicht zu kompliziert. Währe wirklich dankbar für Hilfe, ich komm hier nicht mehr weiter weil mir das Fachwissen fehlt und dabei würde es mich wahnsinnig interessieren...
Danke schön, schönen WM-Abend an alle
Ich möchte über den Aufruf einer Seite POST-Daten an eine andere Seite senden. Ich möchte dies nicht durch ein Formular machen, da bereits beim Aufruf (nicht erst beim klicken auf submit) die Daten abgeschickt werden sollen. Habe dazu bereits etwas gegoogelt und folgendes zusammengestiefelt:
function sendToHost($host,$path,$file)
{
$file = str_replace("\r", '', $file);
$file = str_replace("\n", '', $file);
$file = urlencode($file);
$fp = fsockopen($host, 80);
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-length: " . strlen($file) . "\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $file);
while (!feof($fp)) {
$fget = fgets($fp, 128);
$buf .= $fget;
}
fclose($fp);
return $buf;
}
sendToHost('www.Zielseite.com','/home/Pfad/sonstwas.php','pdata%2FErsterWert%2F1=1&pdata%2FZweiter%2F6=10');
So sollten also die Daten
pdata/ErsterWert/1=1
pdata/Zweiter/2=10
an die Seite www.Zielseite.com/home/Pfad/sonstwas.php gesendet werden. leider geschieht nichts. Die Funktion wird ausgeführt bis zum Schluss (Getestet mit Echo-Ausgaben an versch. Stellen) und es gibt keine Fehlermeldung. Aber kein POST wird gesendet (Tamper Extension für Firefox)
Allerdings erhalte ich im Tamper zu einem Get ein 404. Sehe darin aber nirgends meine URL.
Hoffe das ist jetzt nicht zu kompliziert. Währe wirklich dankbar für Hilfe, ich komm hier nicht mehr weiter weil mir das Fachwissen fehlt und dabei würde es mich wahnsinnig interessieren...
Danke schön, schönen WM-Abend an alle
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 34147
Url: https://administrator.de/contentid/34147
Ausgedruckt am: 26.11.2024 um 03:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo,
sieht auf den ersten Blick ganz vernünftig aus. Das einzige, was mir auffällt, ist, dass die PHP-Hilfe fwrite empfiehlt:
<?php
/* Send POST request to https://secure.example.com/form_action.php
$sock = fsockopen("ssl://secure.example.com", 443, $errno, $errstr, 30);
if (!$sock) die("$errstr ($errno)\n");
$data = "foo=" . urlencode("Value for Foo") . "&bar=" . urlencode("Value for Bar");
fwrite($sock, "POST /form_action.php HTTP/1.0\r\n");
fwrite($sock, "Host: secure.example.com\r\n");
fwrite($sock, "Content-type: application/x-www-form-urlencoded\r\n");
fwrite($sock, "Content-length: " . strlen($data) . "\r\n");
fwrite($sock, "Accept: */*\r\n");
fwrite($sock, "\r\n");
fwrite($sock, "$data\r\n");
fwrite($sock, "\r\n");
$headers = "";
while ($str = trim(fgets($sock, 4096)))
$headers .= "$str\n";
echo "\n";
$body = "";
while (!feof($sock))
$body .= fgets($sock, 4096);
fclose($sock);
?>
(Aus der PHP-Hilfe, lässt sich dort als CHM-Datei (kompilierte HTML) herunterladen.
Filipp
sieht auf den ersten Blick ganz vernünftig aus. Das einzige, was mir auffällt, ist, dass die PHP-Hilfe fwrite empfiehlt:
<?php
/* Send POST request to https://secure.example.com/form_action.php
- Include form elements named "foo" and "bar" with dummy values
$sock = fsockopen("ssl://secure.example.com", 443, $errno, $errstr, 30);
if (!$sock) die("$errstr ($errno)\n");
$data = "foo=" . urlencode("Value for Foo") . "&bar=" . urlencode("Value for Bar");
fwrite($sock, "POST /form_action.php HTTP/1.0\r\n");
fwrite($sock, "Host: secure.example.com\r\n");
fwrite($sock, "Content-type: application/x-www-form-urlencoded\r\n");
fwrite($sock, "Content-length: " . strlen($data) . "\r\n");
fwrite($sock, "Accept: */*\r\n");
fwrite($sock, "\r\n");
fwrite($sock, "$data\r\n");
fwrite($sock, "\r\n");
$headers = "";
while ($str = trim(fgets($sock, 4096)))
$headers .= "$str\n";
echo "\n";
$body = "";
while (!feof($sock))
$body .= fgets($sock, 4096);
fclose($sock);
?>
(Aus der PHP-Hilfe, lässt sich dort als CHM-Datei (kompilierte HTML) herunterladen.
Filipp
einen GET
für ein Objekt favicon.ico für das
ich 404 zurückbekommen habe (also nicht
erreichbar).
Der ist erklärbar. Dein Browser will automatisch das Favicon laden (wird vor Lesezeichen und in der Adressleiste vor der URL angezeigt), dass der Webserver aber wohl nicht anbietet.für ein Objekt favicon.ico für das
ich 404 zurückbekommen habe (also nicht
erreichbar).
POST will der Browser aber keines senden und
ich erhalte auch weder Fehler- noch sonst
eine Meldung.
Das war aber ein Schreibfehler, oder? Den Request sendet der Server (auf dem PHP ausgeführt wird), nicht der Browser.ich erhalte auch weder Fehler- noch sonst
eine Meldung.
Oh, oder doch nicht? Klar, dass du im Tamper keine Request siehst...
Wenn der Request vom Browser aus gesendet werden soll, dann musst du auch eine Sprache nehmen, die dort ausgeführt wird, nicht auf dem Server. Also etwa JavaScript. Für dich käme dann wohl sowas wie AJAX in Frage.
Filipp
Hallo,
grundsätzlich ist es schon so: du hast im Browser ein Formular, dann klickst du da auf Senden und der Browser sendet diese Formular (per HTTP-GET oder -POST) an einen Server.
Aber: Auch ein Server kann beliebige Daten (u.a. Formulare) an andere Server schicken. Das wird auch teilweise gemacht, damit kann man z.B. Ergebnisse von Suchmaschinen in eigene Seiten einbinden. Und dazu nimmt man u.a. PHP.
Grundsätzlich wird PHP immer auf dem Server ausgeführt, d.h. wenn du ein Formular per PHP versendest, dann wird es vom Server aus versendet. Der Server verarbeitet die PHP-Befehle und liefert dann nur das Ergebnis an den Browser aus. Schau doch einmal bei einer Seite, die mit PHP erstellt wurde in den Quelltext im Browser: da ist vom PHP nichts mehr da.
Wenn du Befehle auf dem Client (Browser) ausführen willst gibt es dafür andere Sprachen, z.B. JavaScript oder Java (Applets).
Vielleicht solltest du einfach mal sagen, was du überhaupt machen willst, ich befürchte du hast da irgendwo einen sehr grundsätzlichen Denkfehler.
Filipp
grundsätzlich ist es schon so: du hast im Browser ein Formular, dann klickst du da auf Senden und der Browser sendet diese Formular (per HTTP-GET oder -POST) an einen Server.
Aber: Auch ein Server kann beliebige Daten (u.a. Formulare) an andere Server schicken. Das wird auch teilweise gemacht, damit kann man z.B. Ergebnisse von Suchmaschinen in eigene Seiten einbinden. Und dazu nimmt man u.a. PHP.
Grundsätzlich wird PHP immer auf dem Server ausgeführt, d.h. wenn du ein Formular per PHP versendest, dann wird es vom Server aus versendet. Der Server verarbeitet die PHP-Befehle und liefert dann nur das Ergebnis an den Browser aus. Schau doch einmal bei einer Seite, die mit PHP erstellt wurde in den Quelltext im Browser: da ist vom PHP nichts mehr da.
Wenn du Befehle auf dem Client (Browser) ausführen willst gibt es dafür andere Sprachen, z.B. JavaScript oder Java (Applets).
Vielleicht solltest du einfach mal sagen, was du überhaupt machen willst, ich befürchte du hast da irgendwo einen sehr grundsätzlichen Denkfehler.
Filipp