1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. ip_trainer

Beiträge von ip_trainer

  • Mehrere POST-Felder in einem Request übermitteln

    • ip_trainer
    • 15. Januar 2011 um 01:56

    Hab's rausgefunden:

    [autoit]


    $sData = "--" & $sBoundary & @CRLF
    $sData &= 'Content-Disposition: form-data; name="einFeld"' & @CRLF & @CRLF & "FeldWert" & @CRLF & @CRLF
    $sData &= "--" & $sBoundary & @CRLF
    $sData &= 'Content-Disposition: form-data; name="nocheinFeld"' & @CRLF & @CRLF & "Weiterer Wert" & @CRLF & @CRLF
    $sData &= "--" & $sBoundary & @CRLF
    $sData &= 'Content-Disposition: form-data; name="drittesFeld"' & @CRLF & @CRLF & "Irgendwas" & @CRLF & @CRLF

    [/autoit]
  • Mehrere POST-Felder in einem Request übermitteln

    • ip_trainer
    • 15. Januar 2011 um 01:42

    Hi zusammen,

    ist nur ein kleines Problem(chen), hoffe ich. Weiß jemand wie man mit WinHTTP in einem Request mehrere POST-Felder auf einmal übermitteln kann?
    Ich verweise hier auf die Lösung dieses Themas: [ gelöst ] Datei via SSL an ein htaccess-geschütztes PHP-Skript senden.

    Diesen Teil hier meine ich:

    [autoit]


    $sData &= 'Content-Disposition: form-data; name="einFeld"' & @CRLF & @CRLF & "FeldWert" & @CRLF

    [/autoit]

    Vielen Dank für jede Hilfe
    Trainer

  • Datei via SSL an ein htaccess-geschütztes PHP-Skript senden

    • ip_trainer
    • 15. Januar 2011 um 01:21

    Hallo,

    dank ProgAndys Hilfe kann ich nun eine Lösung zur Verfügung stellen - vielleicht braucht es ja noch mal jemand.

    Spoiler anzeigen
    [autoit]


    #include "WinHTTP.au3"

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

    ;----------------------------------------------------------
    ;htaccess-Zugangsdaten
    $Username = "username"
    $Password = "password"

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

    ;Server
    $Host = "domain.de" ;Ohne https:// etc.
    $Path = "/test.php" ;PHP-Datei welche die Datei entgegennimmt

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

    ;Upload-File
    $Upload_field = "file_upload" ;$_FILES-Array-Feldname (PHP)
    $Upload_file = "datei.zip" ;Lokale Datei

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

    ;----------------------------------------------------------

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

    $sBoundary = "--------WinHTTPMultiPaRtEXAMPLE"
    $sHeader = "Content-Type: multipart/form-data; boundary=" & $sBoundary & @CRLF

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

    ;POST-Data
    $sData = "--" & $sBoundary & @CRLF
    $sData &= 'Content-Disposition: form-data; name="einFeld"' & @CRLF & @CRLF & "FeldWert" & @CRLF & @CRLF

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

    ;File-Data
    $sData &= "--" & $sBoundary & @CRLF
    $sData &= __WinHttpFileContent("", $Upload_field, $Upload_file)
    $sData &= "--" & $sBoundary & "--" & @CRLF

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

    ;=======================================================================
    ; Los geht's....
    ;=======================================================================

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

    ;Anfrage starten
    $hOpen = _WinHttpOpen()
    $hConnect = _WinHttpConnect($hOpen, $Host)

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

    $hRequest = _WinHttpSimpleSendSSLRequestPassword($hConnect, $Username, $Password, "POST", $Path, Default, StringToBinary($sData,0), $sHeader)

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

    ;Antwort des Servers
    ConsoleWrite(@CRLF & $hrequest & @CRLF)

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

    ;=======================================================================

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

    Func _WinHttpSimpleSendSSLRequestPassword($hConnect, $sUsername, $sPassword, $sType = Default, $sPath = Default, $sReferrer = Default, $sData = Default, $sHeader = Default)
    ;Author: ProgAndy
    ;Modified: Trainer

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

    If $sType = Default Or $sType = -1 Then $sType = "GET"
    If $sPath = Default Or $sPath = -1 Then $sPath = ""
    If $sReferrer = Default Or $sReferrer = -1 Then $sReferrer = $WINHTTP_NO_REFERER
    If $sData = Default Or $sData = -1 Then $sData = $WINHTTP_NO_REQUEST_DATA
    If $sHeader = Default Or $sHeader = -1 Then $sHeader = $WINHTTP_NO_ADDITIONAL_HEADERS

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

    Local $hRequest = _WinHttpOpenRequest($hConnect, $sType, $sPath, Default, $sReferrer, Default, BitOR($WINHTTP_FLAG_SECURE, $WINHTTP_FLAG_ESCAPE_DISABLE))
    If Not $hRequest Then Return SetError(1, @error, 0)

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

    ;htaccess-Authentifizierung
    _WinHttpSetCredentials($hRequest, $WINHTTP_AUTH_TARGET_SERVER, $WINHTTP_AUTH_SCHEME_BASIC, $sUsername, $sPassword)

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

    ;Anfrage starten
    If $sType = "POST" And $sHeader = $WINHTTP_NO_ADDITIONAL_HEADERS Then $sHeader = "Content-Type: application/x-www-form-urlencoded" & @CRLF

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

    _WinHttpSendRequest($hRequest, $sHeader, $sData)
    If @error Then Return SetError(2, 0 * _WinHttpCloseHandle($hRequest), 0)

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

    _WinHttpReceiveResponse($hRequest)
    If @error Then Return SetError(3, 0 * _WinHttpCloseHandle($hRequest), 0)

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

    ;Server-Antwort
    If _WinHttpQueryDataAvailable($hRequest) Then
    $answer = _WinHttpReadData($hRequest)
    Else
    $answer = "Der Server lieferte keine gültige Antwort zurück!"
    EndIf

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

    Return $answer

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

    EndFunc ;==>_WinHttpSimpleSendSSLRequestPassword

    [/autoit]

    Hier noch ein Beispiel für ein PHP-Skript, welches die POST-Daten / die Datei entgegen nehmen kann, also für obiges Beispiel wäre das: https://domain.de/test.php. Das Skript läge hier im htaccess-geschützten Wurzelverzeichnis. Dort landet dann im Erfolgsfall auch die Datei (Verzeichnisrechte nicht vergessen zu setzten, damit die Datei auch geschrieben werden kann).

    Spoiler anzeigen
    PHP
    echo "Hallo...\n\n";
    
    
    echo "POST:\n";
    var_export($_POST); echo "\n\n";
    
    
    echo "-----------------------------------------\n\n";
    
    
    if (!isset($_FILES['file_upload']) and  $_FILES['file_upload']['error'])
    	{
        echo "Error: -1\n";
        exit;
    	}
    
    
    else if ($_FILES['file_upload']['size'] > 1024*1024*100)
    	{
        echo "Error: -2\n";
        exit;
    	}
    
    
    else
    	{
    	echo "Files:\n";
    
    
    	echo "Name:".$_FILES['file_upload']['name']."\n";
    	echo "Size:".$_FILES['file_upload']['size']."\n";
    	echo "Type:".$_FILES['file_upload']['type']."\n";
    
    	move_uploaded_file($_FILES['file_upload']['tmp_name'], "./".$_FILES['file_upload']['name']);
    	}
    Alles anzeigen

    Viel Spass damit - und noch mal Danke an alle 8o ...
    Trainer

  • Datei via SSL an ein htaccess-geschütztes PHP-Skript senden

    • ip_trainer
    • 23. November 2010 um 18:13

    Hi progandy - danke, dass du dich gemeldet hast. Studium geht natürlich vor, das ist klar. Mein Projekt hat auch nicht allerhöchste Wichtigkeitsstufe, es brennt also nicht. Aber, falls du irgendwann Zeit findest und mir ein Stück weiterhelfen kannst, bin ich dir sehr dankbar. :thumbup:

    Gruß
    trainer

  • Datei via SSL an ein htaccess-geschütztes PHP-Skript senden

    • ip_trainer
    • 23. November 2010 um 14:52

    Hallo liebe Gemeinschaft,

    hat denn keiner eine Idee oder einen Ansatz für mich...? :(
    Ich habe es auch schon im englischsprachigen Forum versucht, aber irgendwie scheint das Problem nicht wirklich trivial zu sein :) ...

    Gruß
    trainer

  • Datei via SSL an ein htaccess-geschütztes PHP-Skript senden

    • ip_trainer
    • 22. November 2010 um 03:15

    Hi progandy,

    danke für deine Antworten. Einen weiteren Teil (eine Datei hochladen) habe ich nun geschafft :) ... Trotzdem bin ich nach fast 2 vollen Tagen immer noch nicht am Ziel: eine zip-Datei SSL-verschlüsselt an ein .htaccess-geschütztes php-Skript auf dem Server zu senden.. ;(

    Was klappt ist:
    - SSL-verschlüsslelt ASCII-Daten via POST an ein .htaccess-geschütztes php-Skript senden (Skript 1).
    - NICHT-SSL-verschlüsselt eine Datei an ein NICHT-.htaccess-geschütztes php-Skript senden (Skript 2).

    Was eben noch nicht klappt ist die Mischung aus beidem.

    Vielleicht kannst du mir ja weiterhelfen. Das wäre echt super - ich habe schon alles mögliche versucht: _WinHttpSimpleSendSSLRequest ins Skript 2, bzw, _WinHttpWriteDataBin ins Skript 1 reinzuwursteln, etc. - und ich habe absolut keine Idee mehr...

    Gruß
    trainer

    Skript 1:

    Spoiler anzeigen
    [autoit]

    $http = ObjCreate("WinHttp.WinHttpRequest.5.1")
    $http.Open("POST", "https://www.domain.de/test.php", false)
    $http.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    $http.SetCredentials("user", "passwort", 0)
    $http.Send("content=123")
    ConsoleWrite($http.ResponseText & @CR)

    [/autoit]


    Skript2:

    Spoiler anzeigen
    [autoit]


    #include-once
    #include "Array.au3"
    #include "WinHTTP.au3"

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

    Dim $file[1][2] = [["file_upload","export.zip"]]
    $test = post_multipart("http://www.domain.de/test.php", "", 0, $file)
    ConsoleWrite($test[0] & @CR)
    ConsoleWrite($test[1] & @CR)

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

    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

    Global $MIMETypes[1][2] = [["zip", "application/zip"]]
    _ArraySort($MIMETypes, 0, 0, 0, 2)

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

    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

    Func post_multipart($host, $selector, $fields, $files)
    Local $Return = encode_multipart_formdata($fields, $files)
    Local $content_type = 'Content-Type: ' & $Return[0] & @CRLF
    $body = $Return[1]
    Local $URL = _WinHttpCrackUrl($host)
    Local $hSession = _WinHttpOpen()
    Local $hConnection = _WinHTTPConnect($hSession,$URL[2],$URL[3])
    Local $hRequest = _WinHttpOpenRequest($hConnection,"POST",$URL[6]&$URL[7],"HTTP/1.1","http://"&$URL[2])
    _WinHttpSendRequest($hRequest,$content_type,$WINHTTP_NO_REQUEST_DATA,StringLen($Return[1]))
    _WinHTTPWriteDataBin($hRequest,StringToBinary($Return[1]))
    _WinHttpReceiveResponse($hRequest)
    Local $Return[2]
    If _WinHttpQueryDataAvailable($hRequest) Then
    Local $temp
    While 1
    $temp = _WinHttpReadData($hRequest)
    If $temp = "" Then ExitLoop
    $Return[1] &=$temp
    WEnd
    $temp =""
    EndIf
    $Return[0] = _WinHttpQueryHeaders($hRequest)
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnection)
    _WinHttpCloseHandle($hSession)
    Return $Return
    EndFunc

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

    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

    Func _WinHttpWriteDataBin($hRequest, $binary)
    Local $lpBinary
    Local $iNumberOfBytesToWrite
    If IsDllStruct($binary) Then
    $lpBinary = DllStructGetPtr($binary)
    $iNumberOfBytesToWrite = DllStructGetSize($binary)
    Else
    $iNumberOfBytesToWrite = BinaryLen($binary)
    Local $sBinary = DllStructCreate("byte[" & $iNumberOfBytesToWrite & "]")
    DllStructSetData($sBinary, 1, $binary)
    $lpBinary = DllStructGetPtr($sBinary)
    EndIf
    Local $a_iCall = DllCall("Winhttp.dll", "int", "WinHttpWriteData", _
    "hwnd", $hRequest, _
    "ptr", $lpBinary, _
    "dword", $iNumberOfBytesToWrite, _
    "dword*", 0)
    If @error Or Not $a_iCall[0] Then
    Return SetError(1, 0, 0)
    EndIf
    Return SetError(0, $a_iCall[4], 1)
    EndFunc

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

    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

    Func encode_multipart_formdata($fields, $files)
    Local Const $BOUNDARY = getBoundary()
    $L = ""
    For $i = 0 To UBound($fields) - 1
    $L &= ('--' & $BOUNDARY) & @CRLF
    $L &= ('Content-Disposition: form-data; name="' & $fields[$i][0] & '"') & @CRLF
    $L &= @CRLF
    $L &= $fields[$i][1] & @CRLF
    Next
    For $i = 0 To UBound($files) - 1
    $L &= ('--' & $BOUNDARY) & @CRLF
    $L &= ('Content-Disposition: form-data; name="' & $files[$i][0] & '"; filename="' & $files[$i][1] & '"') & @CRLF
    $content_type = get_content_type($files[$i][1])
    $L &= ('Content-Type: ' & $content_type) & @CRLF
    $L &= @CRLF
    $L &= FileRead($files[$i][1]) & @CRLF
    Next
    $L &= ('--' & $BOUNDARY & '--') & @CRLF
    $L &= @CRLF
    $content_type = 'multipart/form-data; boundary="' & $BOUNDARY & '"'
    Local $Return[2] = [$content_type, $L]
    Return $Return
    EndFunc

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

    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

    Func get_content_type($path)
    Local $szExt = StringLower(StringRegExpReplace( $path ,".*(?:\.([^.\\/]*))?\Z","$1"))
    If $szExt = "" Then Return 'application/octet-stream'
    Local $mimeid = _ArrayBinarySearch2D($MIMETypes, $szExt)
    If $mimeid = -1 Then Return SetError(1, 0, 'application/octet-stream')
    Return $MIMETypes[$mimeid][1]
    EndFunc

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

    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

    Func _ArrayBinarySearch2D(Const ByRef $avArray, $vValue, $iStart = 0, $Column = 0, $iEnd = 0)
    If Not IsArray($avArray) Then Return SetError(1, 0, -1)
    Local $iUBound = UBound($avArray) - 1
    ; Bounds checking
    If $iEnd < 1 Or $iEnd > $iUBound Then $iEnd = $iUBound
    If $iStart < 0 Then $iStart = 0
    If $iStart > $iEnd Then Return SetError(4, 0, -1)
    Local $iMid = Int(($iEnd + $iStart) / 2)
    If $avArray[$iStart][$Column] > $vValue Or $avArray[$iEnd][$Column] < $vValue Then Return SetError(2, 0, -1)
    ; Search
    While $iStart <= $iMid And $vValue <> $avArray[$iMid][$Column]
    If $vValue < $avArray[$iMid][$Column] Then
    $iEnd = $iMid - 1
    Else
    $iStart = $iMid + 1
    EndIf
    $iMid = Int(($iEnd + $iStart) / 2)
    WEnd
    ; Entry not found
    If $iStart > $iEnd Then Return SetError(3, 0, -1)
    Return $iMid
    EndFunc

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

    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

    Func getBoundary()
    return Stringleft(_TimeGetStamp()*random(10,256,1), 16)
    EndFunc

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

    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

    Func _TimeGetStamp()
    Local $av_Time
    $av_Time = DllCall('CrtDll.dll', 'long:cdecl', 'time', 'ptr', 0)
    If @error Then
    SetError(99)
    Return False
    EndIf
    Return $av_Time[0]
    EndFunc

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

    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    [/autoit]
  • Datei via SSL an ein htaccess-geschütztes PHP-Skript senden

    • ip_trainer
    • 22. November 2010 um 00:12

    Hi...

    Das hatte ich zuerst probiert, damit kam aber gar nichts an, weder in den Files noch bei Post.

  • Datei via SSL an ein htaccess-geschütztes PHP-Skript senden

    • ip_trainer
    • 21. November 2010 um 21:40

    Hi,

    dank Cyberdyne's Hilfe bin ich jetzt schon soweit, dass ich ASCII-Text als POST-Variable in php auswerten kann. Jetzt hänge ich daran fest, wie man Binär-Dateien (zip) via WinHTTP hochladen kann. :S

    Ich weiß, es gibt viele Artikel dazu, aber irgendwie schaffe ich es nicht so ganz. Was ich schon erreicht habe ist, dass die Datei zum Server gesendet wird und als $_POST auftaucht (und nicht in $_FILES, wie ich erwartet hatte). Allerdings sieht das Ergebnis noch recht kryptisch aus. Ich vermute es fehlt nicht mehr viel, um diesen Datenstrom wieder als .zip-Datei in php zu speichern. Kann mir vielleicht jemand helfen, in welchem Format diese Daten auf dem Server ankommen, oder was ich sonst noch falsch mache?


    Danke
    trainer


    Ein weiterer link dazu (der mich weiter gebracht hat): [ gelöst ] Problem mit WinHTTP Upload

    Mein Code (mit dem ich "export.zip" auf den Server lade):

    [autoit]


    #include "WinHttp.au3"

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

    Global $hOpen = _WinHttpOpen()

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

    ; Get connection handle
    Global $hConnect = _WinHttpConnect($hOpen, http://www.domain.de)

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

    ; Specify the reguest
    Global $hRequest = _WinHttpOpenRequest($hConnect, "POST", "test.php")
    Global $sPostData = FileRead("export.zip")

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

    ; Send request
    _WinHttpSendRequest($hRequest, "Content-Type: application/x-www-form-urlencoded", $sPostData)

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

    ; Write additional data to send
    _WinHttpWriteData($hRequest, $sPostData, 1)

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

    ; Wait for the response
    _WinHttpReceiveResponse($hRequest)
    ;Close
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hOpen)

    [/autoit]


    Und hier das Ergebnis von $_POST auf dem Server: :rolleyes:

    array (
    'PK' => '©1¸Ç˜' . "\0" . '' . "\0" . '¾' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . 'Neues Textdokument.txtíWKnÛ0ÝÈæ' . "\0" . 'Fî´Ë¢›¢“cg~’ã69}e)6‚)ÐÔZ‚MIä¼Ï<Éæ‡\\$’Õ"ùr¡ª8JÛË©J“f¸Èsœ¦=IÐV6TÅ“WŽ”r²øH¢%fOMâ€"šê-5²F·' . "\0" . '!i "ï}°GÂí¬Þ!šñ
    Ý6:HÉ$¹öÕìœULÀð‹Õ–É[žJŽ÷…©ÈÖâ
    }j8uàÉtÏÕÓÞ¶RöEÒl©bbã{Œû•“k†õµÑϽ¸¡Õ§Õ§·ô‰èúêúê½i%6ˆ³@b˜^ÔŠôù£lº“ä‹,ÄÉÁÂ`›ôé¸$µB~@S9úû`P?VÓf`AiÚ‰í•% iÇNƒÖŽ?ÛRN¾DèècÉ^3ÌÜ\'&shy;U#=˜Ò6pò`0–*h L1' . "\0" . '>=
    ä%HêjmoP3“',
    'w ü0<SvÆÄ´Ÿ»ô¹ÑWð#Š€¦¨}pÀ)ÇMw£¶¶bžä›§\'4\'êò¢Ëe(±ê@øñm}Ö' => 'GêÁ8£¹üòC`7fa׿iÈ£$®Hæcú·ºœ—ÙÌeI¯úWã²þ$þžO·ÏÄŸCçô1ÑŸUtE“‘]ôÑH›<óÙ`\\Ä1Û<29}._p´3ý£Ç èä×lBw¦cœÜ±cN=ùs>½mžæGíÝå ÿݯ>ý>ÍÐjǛէËû´œÿ&shy; Ú^½žKïnÖMøS²n—° ÿPK' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . 'Q®u=©1¸Ç˜' . "\0" . '' . "\0" . '¾' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . ' ' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . 'Neues Textdokument.txtPK' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . 'D' . "\0" . '' . "\0" . '' . "\0" . 'Ì' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '',
    )

  • Datei via SSL an ein htaccess-geschütztes PHP-Skript senden

    • ip_trainer
    • 20. November 2010 um 13:14

    Super, genau das was ich gesucht habe... vielen Dank!

    trainer

  • Datei via SSL an ein htaccess-geschütztes PHP-Skript senden

    • ip_trainer
    • 20. November 2010 um 01:30

    Hallo zusammen,

    ich möchte via WinHttp auf einen durch .htaccess geschützten Bereich auf einen Server zuzugreifen. Und das klappt (nach langer Recherche und vielen Versuchen) sogar. :) Der Code dazu steht unten.

    Nun meine Frage: muss ich wirklich vor jeder Anfrage eine erneute Authentifizierung durchführen oder mache ich da was falsch? Ich vermute mal, dass es an dem „Open“- Befehl liegt, und dass ich eher mit „Send“ arbeiten müsste, aber ich finde irgendwie keine vernünftige Anleitung oder ein Thema in der Hilfe, wie in Autoit mit WinHttp umgegangen wird. Was ich gefunden habe, ist die Seite von MS: http://msdn.microsoft.com/en-us/library/…2(v=VS.85).aspx – hier konnte ich schon einige Infos rausziehen. Aber vielleicht hat ja jemand ein kurzes Beispiel, wie man via WinHttp Webinhalte richtig ausliest und Daten auf den Webserver schickt.

    Vielen Dank für jede Hilfe
    trainer

    [autoit]


    ;WinHttp-Objekt erzeugen
    $http = ObjCreate("WinHttp.WinHttpRequest.5.1")

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

    ;Seite 1 ansteuern
    $http.Open("GET", "URL_1", false)

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

    ;htaccess-Autentifizierung
    $http.SetCredentials("username", "passwort", 0)
    $http.Send()

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

    ;Status und Header anzeigen
    ConsoleWrite($http.Status + " --> " + $http.StatusText & @LF)
    ConsoleWrite($http.GetAllResponseHeaders & @LF)
    ConsoleWrite($http.ResponseText & @LF)

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

    $ergebnis_1 = $http.ResponseText
    ConsoleWrite($ergebnis_1 & @LF)

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

    ;+++++++++++++++++++++++++++++++++++++++++++++++++++

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

    ;Seite 2 ansteuern
    $http.Open("GET", "URL_2", false)

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

    ;htaccess-Autentifizierung
    $http.SetCredentials("username", "passwort", 0)
    $http.Send()

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

    $ergebnis_2 = $http.ResponseText
    ConsoleWrite($ergebnis_2 & @LF)

    [/autoit]
  • 2 Labels hintereinander

    • ip_trainer
    • 18. September 2009 um 13:40

    Hi,

    eine Frage: wenn ich in einer GUI zwei Labels (z.B. Name und Wert) hintereinander setzen will, in Form von: Name: Wert - wie schaffe ich es dann, dass sich die Position des 2. Labels in Abhängikeit von der Länge des 1. Labels nach rechts verschiebt. Muss ich das wirklich mit StringLen und GUICtrlSetPos machen (so wie hier: [ gelöst ] Wie ermittle ich die Anzeigenbreite eines Labels .), oder gibt es da vielleicht ein Häkchen, dass ich setzen kann ;) ?

    MfG
    trainer

  • Listview nach deutschen Datum sortieren

    • ip_trainer
    • 18. September 2009 um 13:28

    :rolleyes: oh yes, die Regulären Ausdrücke... habe ich bisher immer kapituliert davor.

    Jedenfalls danke für Alternative und den link!

  • Listview nach deutschen Datum sortieren

    • ip_trainer
    • 18. September 2009 um 12:05

    Hi,

    hier nun der Codeschnipsel für alle die das mal brauchen:

    MfG
    trainer

    [autoit]


    ;========================================== Includes und Definitionen =================================================================
    #include <GUIConstantsEx.au3>
    #include <Guilistview.au3>
    #include <ListViewConstants.au3>

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

    ;========================================== GUI-Erzeugung =============================================================================
    $hGui = GUICreate("Nach deutschem Datum in einer Listview sortieren", 505, 200, 50, 50)
    ; Listview erstellen
    $hListView = GUICtrlCreateListView("Spalte 1|Spalte 2|Spalte 3|Spalte 4|Datum|", 0, 0, 505, 200, $LVS_SHOWSELALWAYS)
    $hLVHandle = GUICtrlGetHandle($hListView)
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Spalte 1",100, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Spalte 2", 100, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Spalte 3", 100, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Spalte 4", 100, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 4, "Datum", 100, 1)
    ;Noch ein paar Daten einfügen
    GUICtrlCreateListViewItem("Test_1_a|Test_1_b|Test_1_c|Test_1_d|01.01.2008", $hListView)
    GUICtrlCreateListViewItem("Test_2_a|Test_2_b|Test_2_c|Test_2_d|02.01.2008", $hListView)
    GUICtrlCreateListViewItem("Test_3_a|Test_3_b|Test_3_c|Test_3_d|01.04.2008", $hListView)
    GUICtrlCreateListViewItem("Test_4_a|Test_4_b|Test_4_c|Test_4_d|13.01.2009", $hListView)
    GUICtrlCreateListViewItem("Test_5_a|Test_5_b|Test_5_c|Test_5_d|11.11.2010", $hListView)
    GUICtrlCreateListViewItem("Test_6_a|Test_6_b|Test_6_c|Test_6_d|15.03.2009", $hListView)
    GUICtrlCreateListViewItem("Test_7_a|Test_7_b|Test_7_c|Test_7_d|01.02.1999", $hListView)
    GUICtrlCreateListViewItem("Test_8_a|Test_8_b|Test_8_c|Test_8_d|02.01.2007", $hListView)
    _GUICtrlListView_RegisterSortCallBack($hLVHandle) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann
    GUISetState(@SW_SHOW)

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

    ; =========== Meldungen der GUI(s) abfangen =================
    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]

    ;Nach Spaltenüberschrift sortieren
    Case $hListView

    ;Falls nach Datum sortiert werden soll
    If GUICtrlGetState($hListView) = 4 Then

    _GUICtrlListView_BeginUpdate($hLVHandle); Aktionen vor Benutzer verstecken
    Local $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge in sortierbares Datum umzuwandeln
    _GUICtrlListView_SetItemText($hLVHandle, $i, Date_German_2_AutoIt(_GUICtrlListView_GetItemText($hLVHandle, $i, 4)), 4)
    Next

    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView));Einträge sortieren
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge wieder ins das deutsche Format umzuwandeln
    _GUICtrlListView_SetItemText($hLVHandle, $i, Date_AutoIt_2_German(_GUICtrlListView_GetItemText($hLVHandle, $i, 4)), 4)
    Next

    _GUICtrlListView_EndUpdate($hLVHandle); Aktionen wieder sichtbar machen

    ;Bei anderen Spalten sparen wir uns das alles...
    Else
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView))
    EndIf

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

    ;Programm beenden
    Case $GUI_EVENT_CLOSE
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit
    EndSwitch
    WEnd

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

    ;========================================== Funktionen ================================================================================
    ;Datum von YYYY/MM/DD nach DD.MM.YYYY umwandeln
    Func Date_AutoIt_2_German($conv_date)
    $conv_parts = StringSplit($conv_date, "/")
    Return $conv_parts[3] & "." & $conv_parts[2] & "." & $conv_parts[1]
    EndFunc ;==>Date_AutoIt_2_German

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

    ;Datum von DD.MM.YYYY nach YYYY/MM/DD umwandeln
    Func Date_German_2_AutoIt($conv_date)
    $conv_parts = StringSplit($conv_date, ".")
    Return $conv_parts[3] & "/" & $conv_parts[2] & "/" & $conv_parts[1]
    EndFunc ;==>Date_German_2_AutoIt

    [/autoit]
  • Listview nach deutschen Datum sortieren

    • ip_trainer
    • 18. September 2009 um 11:08

    Ok, das geht natürlich. 8)

    Vielen Dank für den Tip, das werde ich gleich mal umsetzen.

  • Listview nach deutschen Datum sortieren

    • ip_trainer
    • 18. September 2009 um 10:50

    Hi zusammen,

    ich habe ein Listview, bei der eine Spalte ein Datum enthält, welches ich mit _NowCalcDate() erzeuge. Jetzt habe ich mir 2 Funktionen gebastelt (teilweise kopiert), die das Datum vom Format YYYY/MM/DD nach DD.MM.YYYY und zurück umwandeln, s.u...

    Schreibe ich nun aber das "deutsche" Datum in das Listview, kann ich es logischerweise nicht mehr chronologisch sortieren lassen - das andere sieht aber schrecklich aus :rolleyes: . Gibt es da irgend eine Möglichkeit?

    Danke für jede Hilfe und Gruß
    trainer


    Funktionen:

    [autoit]

    ;Datum von YYYY/MM/DD nach DD.MM.YYYY umwandeln
    Func Date_AutoIt_2_German($conv_date)
    $conv_parts = StringSplit($conv_date, "/")
    Return $conv_parts[3] & "." & $conv_parts[2] & "." & $conv_parts[1]
    EndFunc ;==>Date_AutoIt_2_German

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

    ;Datum von DD.MM.YYYY nach YYYY/MM/DD umwandeln
    Func Date_German_2_AutoIt($conv_date)
    $conv_parts = StringSplit($conv_date, ".")
    Return $conv_parts[3] & "/" & $conv_parts[2] & "/" & $conv_parts[1]
    EndFunc ;==>Date_German_2_AutoIt

    [/autoit]
  • Bildgröße GuiCtrlCreatePic(...)

    • ip_trainer
    • 3. September 2009 um 23:58

    Hi,

    aus einem anderen Forum:

    Zitat

    I got Microsoft to admit it was a negative sideeffet of a Security Update and Service Pack 2!

    That means I have also got a solution now! ;o)

    RESOLUTION:

    You may experience the above described unexpected result after the installation of security update 908531 (security bulletin MS06-015, which is also included in Windows 2003 Server Service Pack2).

    The solution is to allow access to the extended file attributes by adding the following registry entry.

    Either add the following entry, or copy the below lines, paste them in an empty text file and save it with the .reg extension. Then run the file to add the appropriate values into the registry.

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Cached]"{875CB1A1-0F29-45DE-A1AE-CFB4950D0B78} {0000010B-0000-0000-C000-000000000046} 0x401"=dword:00000001

    Your problem was a consequence introduced by the security update MS06-015 analogous to http://support.microsoft.com/kb/918165

    So now I will stop this thread, and DEAR ROB!! I thank You very much for all your tries in finding the impossible solution.. but now I finally found it and I have pasted it here, so others can solve this frustrating problem.. ;o)

    Alles anzeigen


    ==> Die Infos für Height, Width und einiges andere wird nicht mehr zurückgeliefert.

    In der Registry muss o.g. Schlüssel eingetragen werden, damit es wieder funzt. Liegt im Anhang. Einfach entpacken, doppelt anklicken, und die Infos werden hinzugefügt. Dann noch den Rechner neu starten, sonst funktioniert es nicht...

    Es kann sein, dass man ab SP3 o.g. Methode wieder ohne Probleme nutzen kann, ist aber nur eine Vermutung.

    Gruß
    trainer

  • Outlook Kontaktbild via com Objekt auslesen

    • ip_trainer
    • 2. September 2009 um 19:55

    Hab's rausgefunden :thumbup:

    Gruß
    trainer

    [autoit]

    $oOutlook = ObjCreate("Outlook.Application")
    $oNamespace = $oOutlook.GetNamespace("MAPI")
    $oFolder = $oNamespace.GetDefaultFolder(10)
    $oColItems = $oFolder.Items
    $iNumOfContacts = $oColItems.Count
    $contact_to_display = 3
    MsgBox(0,"",$oColItems.Item($contact_to_display).FirstName & " " & $oColItems.Item($contact_to_display).LastName)
    If $oColItems.Item($contact_to_display).Attachments(1).DisplayName = "ContactPicture.jpg" Then $oColItems.Item($contact_to_display).Attachments(1).SaveAsFile("C:\Contact.jpg")

    [/autoit]
  • Outlook Kontaktbild via com Objekt auslesen

    • ip_trainer
    • 2. September 2009 um 18:52

    Hi,

    weiß jemand, wie man an das Kontaktbild eines Outlook-Kontakts kommt? In einem anderen Forum habe ich gelesen, dass man es unter "ContactPicture.jpg" in den Anlagen des Kontakts findet. Aber auch da weiß ich nicht, wie man dran kommt :rolleyes: . Es gibt leider kein Feld à la ".Email1Address" oder ".MobileTelephoneNumber", oder?

    Danke und Gruß
    trainer

  • Outlook com Objekt erstellen schlägt fehl

    • ip_trainer
    • 31. August 2009 um 00:47

    Also, eine genauere Fehleranalyse hat folgendes gebracht:

    ---------------------------
    We intercepted a COM Error !
    Number is: 800401F3
    Windescription is: Ungültige Klassenzeichenfolge
    ---------------------------

    Darauf hin habe ich in der Registry unter "HKEY_Classes_Root" gesucht und festgestellt, dass dort nur der Eintrag "Outlook.Application.12" existiert, nicht aber "Outlook.Application". Wenn ich nun den Code in folgendes abwandle , funktioniert es:

    [autoit]


    $ol = ObjCreate ("Outlook.Application.12")

    [/autoit]

    Also habe jetzt den entsprechenden Schlüssel in der Registry angelegt, damit ich wieder standardkonformen Code verwenden kann:

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\Outlook.Application]
    @="Microsoft Outlook 12.0 Object Library"

    [HKEY_CLASSES_ROOT\Outlook.Application\CLSID]
    @="{0006F03A-0000-0000-C000-000000000046}"

    [HKEY_CLASSES_ROOT\Outlook.Application\CurVer]
    @="Outlook.Application.12"


    Gruß
    trainer

  • Outlook com Objekt erstellen schlägt fehl

    • ip_trainer
    • 31. August 2009 um 00:12

    ... ich habe noch mal gestestet:

    Allem Anschein nach funktioniert es nur auf diesem einen speziellen PC nicht, auf anderen schon.

    Unter VB habe ich seltsamerweise kein Problem bei der Erstellung, aber Autoit hat keine Lust ?( .

    Sei's drum.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™