HTML-Seite von Server herunterladen, bearbeiten, wieder hochladen.

  • Huhu Com ;)

    Ich habe für meinen Freund neulich eine Homepage hochgestellt, mit einer Seite wo er für sein Spiel das er spielt, Level und Rang angibt... Da ich aber nicht immer online bin um sein Level zu editieren wollte ich ihm ein kleines Tool basteln. Es soll die about.html vom FTP-Server herunterladen, Level und Rang auslesen (Funktioniert, mit einer Testdatei probiert), die neuen Daten per Knopfdruck in der lokalen Datei ersetzen und dann diese Datei wieder hochladen. Mein Problem liegt jetzt halt darin, dass das Programm diese Datei erstmal garnicht herunterladen will... Hier der Source (FTP-Daten natürlich zensiert):

    Spoiler anzeigen
    [autoit]

    #include <FTPEx.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>

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

    $bsLevel = "<p><b>Level: "
    $beLevel = "</b></p>"
    $bsRank = "<p><b>Rank: "
    $beRank = "</b></p>"
    $sKey = 1111
    $fServer = "[DOMAIN]"
    $fUser = "[BENUTZER]"
    $fPass = "[PASSWORT]"
    $fSession = String(Random(1,10))
    $fOpen = _FTP_Open($fSession)
    $fConnect = _FTP_Connect($fOpen,$fServer,$fUser,$fPass)

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

    If FileExists("about.html") Then
    FileDelete("about.html")
    EndIf

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

    _FTP_FileGet($fConnect,$fServer & "/www/about.html",@ScriptDir & "\about.html", True)

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

    If FileExists("about.html") Then
    $fRead = FileRead("about.html")
    Else
    Exit MsgBox(48,"Fehler","Die Datei konnte nicht richtig geladen werden.")
    EndIf

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

    $Level = _StringBetween($fRead,$bsLevel,$beLevel)
    $Level = $Level[0]
    $Rank = _StringBetween($fRead,$bsRank,$beRank)
    $Rank = $Rank[0]
    $rLevel = $bsLevel & $Level & $beLevel
    $rRank = $bsRank & $Rank & $beRank

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("HPEditor", 194, 138, -1, -1)
    $Label1 = GUICtrlCreateLabel("Level:", 8, 8, 33, 17)
    $Label2 = GUICtrlCreateLabel("Rang:", 8, 40, 33, 17)
    $Input1 = GUICtrlCreateInput($Level, 88, 8, 25, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_NUMBER))
    $Input2 = GUICtrlCreateInput($Rank, 48, 40, 65, 21)
    $Button1 = GUICtrlCreateButton("Ändern", 8, 72, 105, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Schließen", 8, 104, 105, 25, $WS_GROUP)
    $List1 = GUICtrlCreateList("", 120, 8, 17, 123)
    GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9")
    $List2 = GUICtrlCreateList("", 136, 8, 17, 123)
    GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9")
    $List3 = GUICtrlCreateList("", 152, 8, 17, 123)
    GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9")
    $List4 = GUICtrlCreateList("", 168, 8, 17, 123)
    GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _FTP_Close($fConnect)
    Exit
    Case $Button1
    $s1 = GUICtrlRead($List1)
    $s2 = GUICtrlRead($List2)
    $s3 = GUICtrlRead($List3)
    $s4 = GUICtrlRead($List4)
    $s5 = Number($s1 & $s2 & $s3 & $s4)
    If $s5 = $sKey Then
    $n1 = $bsLevel & GUICtrlRead($Input1) & $beLevel
    $n2 = $bsRank & GUICtrlRead($Input2) & $beRank
    $n3 = StringReplace($fRead,$rLevel,$n1)
    $n4 = StringReplace($n3,$rRank,$n2)
    FileDelete("about.html")
    FileWrite("about.html",$n4)
    _FTP_FileDelete($fConnect,$fServer & "/www/about.html")
    _FTP_FilePut($fConnect,@ScriptDir & "\www\about.html",$fServer & "/www/about.html")
    Else
    MsgBox (48,"Fehler","Der Sicherheitsschlüssel wurde falsch eingegeben.")
    EndIf
    Case $Button2
    _FTP_Close($fConnect)
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Hoffe ihr könnt helfen... :)

  • was gibt den @error bei ftp_open und ftp_connect zurück?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hmmm... hab ich vorher nicht daran gedacht das zu überprüfen, also hab ich's jetzt getan:
    _FTP_Open - @Error = 0
    _FTP_Connect - @Error = Ebenfalls 0

  • Dann würde ich noch zwei sachen Prüfen, ob _FTP_FileGet dann einen error zurück gibt und wenn nicht ob mit _FTP_FileGetSize zumindestens die größe der Datei bekommst. Weil so weiß dann zumindestens schonmal ob das Script die Datei an sich überhaupt findet.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Es liegt an dem

    [autoit]

    _FTP_FileGet($fConnect,$fServer & "/www/about.html",@ScriptDir & "\about.html", True)

    [/autoit]

    Das muss einfach

    [autoit]

    _FTP_FileGet($fConnect,"/www/about.html",@ScriptDir & "\about.html", True)

    [/autoit]

    heißen.

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"