_post variable mit autoit belegen

  • Hallo Leute,
    Ich habe folgendes Problem:
    Undzwar wollte ich mir ein kleines Anmeldescript erstellen, welches die _POST-Variable ersetzt und an ein Php-script auf einem Server schickt. Das Php-Script verarbeitet dann die Eingabe und schickt ein entsprechenden Befehl an das Autoitscript oder an ein Autoitscript auf einem anderen Client.
    Dummerweise habe ich noch keine Funktion dafür gefunden.


    Danke für schnelles Helfen

    Einmal editiert, zuletzt von ohjelma (26. Februar 2011 um 13:47)

  • Hallo ohjelma,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die deutsche Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deiner Frage, dazu benötigst du afaik die WinHttp.au3, ich habe aber damit noch nichts gemacht. Benutze einfach einmal die boardeigen Suchfunktion. Afair müsste @progandy der Haupverdächtige mit den hilfreichsten ANtworten dazu sein,

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (25. Februar 2011 um 22:35)

  • Hi,
    ich hab hier mal eine kleine Funktion. Damit kannst du einen Post String an eine Addresse senden.

    [autoit]

    Func EasyPost($sAddr, $sPost)
    Local Static $oWinHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oWinHTTP.Open("POST", $sAddr, False)
    $oWinHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 4.0.20506)")
    $oWinHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oWinHTTP.Send($sPost)
    Return $oWinHTTP.ResponseText
    EndFunc ;==>EasyPost

    [/autoit]
  • Das ganze geht auch mit der WinHTTP-UDF, die dei DLL statt dem Objekt verwendet. Das Beispiel in der Hilfe unter _WinHttpSimpleRequest sollte (fast) alles nötige beinhalten. Für eine POST-Anfrage muss die Zeile dann so aussehen:

    [autoit]

    ...
    $sResult = _WinHttpSimpleRequest($hConnect, "POST", "/Pfad/Zur/Datei.php", Default, $sPOSTDaten)
    ...

    [/autoit]
  • Danke für die schnellen Antworten, aber ich glaub ich bin einfach zu blöd dafür ?(

    könnte mir also jemand bitte ein Codebeispiel geben, in dem zuerst die Variable $Inhalt über das Post Array :

    PHP
    $_Post['Test']

    an das Script Localhost/test.php gesendet wird und dann in einer MessageBox, den vom Php-Scipt gesendeten Inhalt (also nicht den Header), ausgibt.
    Mein Versuch

    [autoit]

    #include <WinHttp.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $hOpen = _WinHttpOpen()
    Global $hConnect = _WinHttpConnect($hOpen, "localhost")

    [/autoit][autoit][/autoit][autoit]

    $Inhalt = "Test Inhalt, der vom Php-Script eigenlich zurückgeliefert werden sollte"
    MsgBox(64, "Antwort des Scriptes",_WinHttpSimpleRequest($hConnect, "POST", "test.php", "Test",$Inhalt) )

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hOpen)

    [/autoit]

    gibt nämlich nur einen leeren String aus

    Vielen Dank für alle Antorten

  • [autoit]

    #include <WinHttp.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $hOpen = _WinHttpOpen()
    Global $hConnect = _WinHttpConnect($hOpen, "localhost")

    [/autoit][autoit][/autoit][autoit]

    $sPost = "test=Wert"
    MsgBox(64, "Antwort des Scriptes",_WinHttpSimpleRequest($hConnect, "POST", "/test.php", Default ,$sPost) )

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hOpen)

    [/autoit]
  • Wenn du keine Dateien senden willst, ist das Format für $sPost ziemlich einfach.
    Es ist das gleiche, wie wenn du die Variablen an die URL anhängen würdest.

  • Es gib in PHP nur ein Post-Array. Falls du mehrere Variablen meinst:

    Code
    $sPost = "variable=urlkodierter_wert&nocheinevariable=ein_anderer_urlkodierter_wert"