online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon howdie vom 27.03.2020, 20:11 Options

PHP Post mit abfragesyntax

Guten Tag zusammen,

ich würde gerne in PHP programm schreiben dass eine abfragesyntax wie diese "human=1&uin=%s&uin4login=&password4login=123456789"
an eine bestimmte URL schickt.

ist das in PHP möglich?

danke schonmal

mfg
howdie


Antwort schreiben

Antwort 1 von henna vom 27.03.2020, 20:41 Options

ja ist möglich. soll es als post- oder get-request übertragen werden?

Antwort 2 von Supermax vom 27.03.2020, 20:51 Options

Dazu kannst du entweder (falls die fopen_url_wrapper auf deinem Server/Webspace aktiviert sind) gleich file_get_contents() oder file() verwenden, ansonsten kannst du die cURL-Funktionen verwenden

Antwort 3 von howdie vom 28.03.2020, 07:43 Options

@1: POST request sollte es sein.

@2 " fopen_url_wrapper" ist bei mir leider nicht installiert
und für die cURL müsste ich etwas installieren, falls ich das richtig gesehen habe. ich hab aber leider nur einen webspace und keinen (v)server.

aber danke schonmal.

Antwort 4 von Supermax vom 28.03.2020, 07:57 Options

Notfalls kannst du dir auch mit fsockopen() einen eigenen kleinen HTTP-Client basteln; das erfordert aber zumindest Grundkenntnisse über den Aufbau eines HTTP-Requests.

Antwort 5 von howdie vom 28.03.2020, 08:07 Options

Ah, super danke!

grundkenntnisse bei HTTP-requests... hm, daran mangelts wohl. aber ich werd mich mal versuchen.

vielen dank!

Antwort 6 von Supermax vom 28.03.2020, 08:12 Options

Hier findest du ein fertiges Codebeispiel für eine einfache HTTP-Abfrage mittels fsockopen(), fwrite und fread(). (Example #1).

Für einen POST-Request wäre das Beispiel allerdings etwas umfangreicher, da du in diesem Fall auch Content-Length und Content-Type als Request-Header übergeben müßtest.

Antwort 7 von howdie vom 28.03.2020, 08:32 Options

DANKE! ich werd mich mal einlesen.

Antwort 8 von son_quatsch vom 28.03.2020, 09:28 Options

Zitat:
Für einen POST-Request wäre das Beispiel allerdings etwas umfangreicher, da du in diesem Fall auch Content-Length und Content-Type als Request-Header übergeben müßtest.

Dafür wär dieser Kommentar am passendsten: http://at2.php.net/manual/de/function.fsockopen.php#49938

Antwort 9 von henna vom 28.03.2020, 09:42 Options

hi howdie

hier findest du die nötigen http-infos. ist keine grosse sache!
aus meiner erfahrung gibt es aber zwei stolpersteine:
1. du darfst nicht den ganzen body komplett url-encoden. wenn das so aussieht: "var1=wert1&var2=wert2&..." dann müssen nur alle variablennamen und alle werte kodiert werden. die gleichheitszeichen und kaufmannsünder dazwischen müssen unkodiert bleiben!
2. falls du nach dem login noch seiten runterladen willst, kann es sein dass du auf einen server triffst, der im chunked-transfer-mode antwortet. das ist bei dynamisch generiertem content weit verbreitet.
das bedeutet für dich zusätzliche programmierarbeit. dieser modus ist auch von der formalen beschreibung für nichthochbegabte schwer zu verstehen. ich kapier ihn bis heute nicht vollständig. im supportnet konnte mir da damals auch keiner helfen. ich hab dann aber ein codebeispiel im netz gefunden. melde dich im falle nochmals, dann suche ich dir den link raus. tückisch ist auch, dass man auswirkung einer nicht erkannten chunked-übertragung nicht leicht bemerkt. die html-seiten sehen auf den ersten blick normal aus, nur hin und wieder stehen irgendwo zahlen, wo keine hingehören.
du solltest deshalb auf die response-header achten. da steht es drin.

Antwort 10 von howdie vom 28.03.2020, 10:26 Options

Wow, vielen vielen dank schonmal für die grosse hilfe.
ich habe maldie antwort vorn nr 8 (son_quatsch ) genommen und daraus meinen request gebastelt.

wäre das so richtig?

$host= [URL zum Loginbereich]
$path=explode('/',$host);
$path='/'.(implode('/',$path));
$post="POST $path HTTP/1.1\r\nHost: $host\r\nContent-type: application/x-www-form-urlencoded\r\n${others}User-Agent: Mozilla 4.0\r\nContent-length: ".strlen($query)."\r\nConnection: close\r\n\r\n"human=1&uin=%s&uin4login=&password4login=123456789"";
$h=fsockopen($host,80);


mfg
howdie

ps: weiss leider nicht, wie ich den code hier als Code darstell..

Antwort 11 von son_quatsch vom 28.03.2020, 10:54 Options

Zitat:
wäre das so richtig?
Nein, du kannst ruhig die komplette Funktionsdeklaration übernehmen und sie anschließend mit dem aufrufen, was du machen willst. Eine vollständige PHP-Datei würde dann so aussehen:

<?php

function post($host,$query,$others=''){
    $path=explode('/',$host);
    $host=$path[0];
    unset($path[0]);
    $path='/'.(implode('/',$path));
    $post="POST $path HTTP/1.1\r\nHost: $host\r\nContent-type: application/x-www-form-urlencoded\r\n${others}User-Agent: Mozilla 4.0\r\nContent-length: ".strlen($query)."\r\nConnection: close\r\n\r\n$query";
    $h=fsockopen($host,80);
    fwrite($h,$post);
    for($a=0,$r='';!$a;){
        $b=fread($h,8192);
        $r.=$b;
        $a=(($b=='')?1:0);
    }
    fclose($h);
    return $r;
}

$antwort= post('www.seite.de/path/login.php', 'human=1&uin=%s&uin4login=&password4login=123456789');
echo 'Antwort des Servers:<br /><br />'. $antwort;

?>


Zitat:
ps: weiss leider nicht, wie ich den code hier als Code darstell..
Code tippen, danach markieren, danach Button Code anklicken.

Antwort 12 von howdie vom 28.03.2020, 11:42 Options

Achso, na klar!!

super!!! vielen vielen dank an alle!!!!!

Ähnliche Themen

Session ID
sebi2006  14.01.2007 - 129 Hits - 2 Antworten

Post-Box
kittlitz  10.03.2007 - 66 Hits -

PHP-Abfrage ... get und post
neworker  28.09.2007 - 49 Hits - 5 Antworten

Mit PHP Post-Anfrage Senden
luac.  04.11.2007 - 100 Hits - 4 Antworten

Html interpretation ausstellen
Dota  04.04.2008 - 24 Hits - 6 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Sun Jan 25 18:15:21 2026