andere seite laden wenn 404 kommt

  • guten tag,

    gleich mal vorneweg, also ich arbeite mit der IE.au3 und habe nicht vor die FF zu benutzten.

    also dann mal zu mein Problem :wacko:
    ich möchte eine if schleife machen die mit z.B.

    [autoit]

    _IECreate("http://localhost/xampp/phpinfo.php", 0)

    [/autoit]

    überprüft ob die Seite da ist, fehlt oder ein Passwort abfrage kommt.

    Normal liefert die Seite ja 200 zurück wenn die Seite da ist, und 404 liefert die Seite zurück wenn der Pfad nicht existiert, aber man keine Zugriffsrechte hat (htacces o.ä.) liefert die Seite 403 zurück.

    ja ich will halt das meine if schleife immer was anderes macht bei eine bestimmten meldung.

    zuerst dachte ich an sowas in der Art aber das hat leider nicht funktioniert:

    [autoit]

    #include <IE.au3>
    $oIE = _IECreate ("http://localhost/xampp/phpinfo.php", 0)
    If @Error = 0 Then
    MsgBox(0, "", "xampp/phpinfo.php existiert!")
    Else
    MsgBox(0, "", "xampp/phpinfo.php existiert nicht!")
    EndIf

    [/autoit]

    so spuckt es einfach immer aus das die seite existiert...

    hoffe mir kann einer helfen.

    • Offizieller Beitrag

    Habe zwar im Grunde genommen keine Ahnung von den IE Funktionen, aber eventuell könnte der Rückgabewert von _IECreate für dich Wichtig sein.

    Werte mal den @error aus.

  • das ist ja das Problem, es kommt bei @Extended und @error immer Null raus, egal ob die Seite existiert oder nicht.

  • Ich habe auch keine Ahnung - vor allem ist IE so kompliziert :D

    Dann such einfach auf der Seite per _IEBodyReadText und StringInsStr die Fehlermeldung.

    aaah ja... ok des peil ich schon nicht ...

  • Aus der AutoIt-Hilfe für _IEBodyReadText:

    [autoit]

    ; *******************************************************
    ; Example 1 - Open a browser with the basic example, read the body Text
    ;(the content with all HTML tags removed) and display it in a MsgBox
    ; *******************************************************
    ;
    #include <IE.au3>
    $oIE = _IE_Example ("basic")
    $sText = _IEBodyReadText ($oIE)
    MsgBox(0, "Body Text", $sText)

    [/autoit]

    Auf dein Skript geändert:

    [autoit]

    #include <IE.au3>
    $oIE = _IECreate ("http://localhost/xampp/phpinfo.php")
    $sText = _IEBodyReadText ($oIE)
    If StringInStr($sText, "Beispielfehler") = 0 Then;Bei "Beispielfehler" kommt dann der Fehler rein, der erscheint
    ;z.B. 404 hauptsache ein Wort (oder ein Satz), das angezeigt wird wenn "xampp/phpinfo.php" nicht existiert^^
    MsgBox(0, "", "xampp/phpinfo.php existiert!")
    Else
    MsgBox(0, "", "xampp/phpinfo.php existiert nicht!")
    EndIf
    ;Wenn bei StringInStr 0 zurück gibt dann wird das Wort nicht gefunden und wenn es eine andere Zahl zurück
    ;gibt dann wird es gefunden!

    [/autoit]

    MfG xXTobi93Xx

  • Mit kompliziert meinte ich eher "umständlich"

    Nachdem du Seite mit _IECreate aufgerufen hast, den Seitenquelltext auf die Fehlermeldung hin durchsuchen:

    [autoit]

    $sText = _IEBodyReadText($oIE) ; damit hast du alles was auf der Interseite steht in der Variablen $sText
    ; sobald der Text "Fehlermeldung" nun dort drinsteht, erscheint die MsgBox
    If StringInStr($sText,"Fehlermeldung") Then MsgBox(64,"Fehler", "Seite konnte nicht geladen werden")

    [/autoit]

    OK - zu spät

  • joa cool funkt sogar, also ich nehm dann einfach mal als satzt "Error 404" des steht ja immer da wenn ne seite nicht vorhanden ist....

    also dann bedanke ich mich mal bei euch beiden, habt mir super geholfen! :thumbup: