Korrekte Daten an Server senden

  • Hi Leuts. Ich bin neu in der AutoIt-Szene und hab mich gleich ma an mein erstes Script gesetzt und habe ein Problem:

    Mein Script soll bestimmte Postdaten von einem Formular an den Server senden.... Soweit kein Problem.
    Und nun kommt das ABER:
    Ich will als $matamount den Wert "1*-9" übergeben. Soll heissen: Das Script soll auch wirklich 1*-9 senden und NICHT ausrechnen was 1*-9 ist und dann das ausgerechnete senden.
    Weis mir im Moment nicht wirklich zu helfen. ich habs mit Anführungsstrichen (") versucht aber auch das funktioniert nicht richtig.
    Gibts da vielleicht irgendeinen Trick den ihr mir da verraten könnt?


    mfg Blubkuh

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • Danke schonmal für die schnelle Antwort :)
    Es funktioniert leider trotzdem nicht.
    Mit dieser Funktion hat die variable nur einen wert von 1... nicht von 1*-9
    weitere Vorschläge? ^_____^

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]

    Einmal editiert, zuletzt von Blubkuh (30. Dezember 2006 um 10:28)

    • Offizieller Beitrag

    Hallo!

    Wenn du uns zumindest den entscheidenden Teil von deinem Code zeigst, wird es wesentlich einfacher dir zu helfen.
    In AutoIt reicht

    [autoit]

    $matamount = "1*-9"

    [/autoit]


    Allerdings schreibst du, dass du das als Post-Daten versenden willst. Das bedeutet, dass du zumindest den Stern darin escapen musst. Bei Wikipedia sollte sich finden lassen, wie...

    peethebee

  • poste am besten einen teil deines scriptes....wenn man bei formulardaten mit Send befehl arbeitet find ich das unschön gibt ja schließlich die IE.au3 da sind so gut wie alle funktionen die man braucht... :rolleyes:

  • [autoit]

    $oForm = _IEFormGetObjByName ($o_IE1, "formular1337")
    $oArmor= _IEGetObjByName($oForm,"blub")
    $oType = _IEGetObjByName($oForm,"amount")
    _IEFormElementSetValue ($oArmor, $var1)
    _IEFormElementSetValue ($oType, $var2)
    _IEFormSubmit($oForm)

    [/autoit]

    So wähle ich aus welches Formular gemeint ist und wie ich es sende

    Und so sieht dann das aus was noch fehlt:

    [autoit]

    $var1 = 19
    $var2 = 1*-9

    [/autoit]


    Das mit dem stern escapen hab ich noch ned probiert. ma bisl wiki lesen.. danke schonma :)

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • wenn du das ganz so änderst...

    [autoit]

    $var2 = "1*-9"

    [/autoit]


    und dein script anpsst geht das ganze...du könntest die form auch per index ansprechen...

  • Zitat

    Original von Blubkuh
    Ich will als $matamount den Wert "1*-9" übergeben.[...] ich habs mit Anführungsstrichen (") versucht aber auch das funktioniert nicht richtig.

    Dachte du hast das schon probiert. Dann versuch mal:

    [autoit]

    $var2 = String("1*-9")

    [/autoit]
  • Ja ich habs schon mit Anführungsstrichen probiert und wie gesagt es hat nicht funktioniert :S
    Edit: Habs grad mit Anführungsstrichen nochmal getestet und der gibt den richtigen Wert aus. Nur leider funktioniert es nicht O___O
    Wenn ich es per Hand bei meinem Browser eingebe ( Hab ein Plugin zum ändern von post-daten) dann funktioniert alles perfekt mit 1*-9 wenn das script 1*-9 sendet funktioniert es nicht .... :weinen:

    Irgendwie hab ich das Gefühl das ihr mir da auch nicht helfen könnt ohne es selbst zu testen nee? ^^
    Prob ist: Es ist ein Script für ein Browsergame und nur ich besitze von uns hier die möglichkeit es live zu testen :S

    warum geht es wenn man manuel 1*-9 eintippt aber warum geht es nicht wenn autoit es macht? ^^
    tja ich bin ahnungslos :(

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • Wird dir nicht viel bringen wenn ich dir sage das es sich dabei um Mittelalter, Ritter, Orks, Elfen, Zwerge etc handelt weil ich gerade dabei bin es zu proggen und es nur auf meinem pc existent ist ^____^

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • Ich habe sowas mit HTML und AutoIt gelöst. AutoIt erstellt die HTML, mit den Feldern im Formular und dem abschicken und löscht diese dann wieder. Vllt nur eine Alternative, aber finde ich besser, als mit der iE.au3 rumzufuchteln!

    Ansonsten auf die Leute warten mit mehr Know-How ^^

  • soo nächstes prob (ich mach ma nicht sofort nen neuen Thread auf sondern mach hier weiter :))

    Code
    <option value="1" >Gorgol 100/20</option>
                   ^     ^    ^   ^
                   |     |    |   |
                   |     |    |   |
                   |     |    |   variiert zwischen 0 - 100 
                   |     |    variiert zwischen 0 - 100 (das brauch ich)
                   |     Name des Charas (je nach char unterschiedlich lang)
                   variiert zwischen 1-5

    Ich will per autoit script die zahl vor dem backslash als variable ausgegeben bekommen.... da jedoch die anzeige nicht immer gleich ist (im gegenteil sie ist eigentlich immer anders ^^) hab ich es leider nicht geschafft :(

    Nu kann ich nurnoch auf euch hoffen

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]

    Einmal editiert, zuletzt von Blubkuh (31. Dezember 2006 um 13:52)

  • das hatten wir schon soooooo oft , dass man bei browsergames schummeln will... abgesehen davon dass es meist Scriptschutz gibt, kann die boardsuche helfen... sogar in der helpfile steht schon was drüber, wenn ich mich nicht irre...

    • Offizieller Beitrag

    Wollen wir mal nicht so sein, huggy.

    Stichworte InetGet oder _InetGetSource, dann _FileReadToArray, StringInStr in For-Schleife, dann StringSplit oder StringRegExp. Evtl. auch gleich StringRegExp auf die komplette Datei.

    Aber wie gesagt, Beispiele findest du mit der Boardsuche :)
    In der Hilfe steht dazu konkret meines Wissens nichts, aber die neue habe ich nicht 100% im Kopf...

    peethebee

  • Sowas ähnliches hatte ich schon fertig... aber dadurch, dass die werte variieren konte ich sie nicht aus dem string extrahieren :(

    Hier mal was ich ca hatte:

    [autoit]


    Func _checkhp($charlist) ;prüft hp des geg. charakters
    Local $attack = 0
    Local $displayendposition = 0
    $source = _IEDocReadHTML($o_IE1)
    $displayendposition = StringInStr ($source, "</option>", 0, $charlist)
    $displayendposition = $displayendposition - 7
    $hp = StringMid($source, $displayendposition, 3)

    IF (StringIsDigit($hp) = 1) Then
    $attack = 1
    Else
    $hp = StringMid($source, $displayendposition, 2)
    EndIf

    IF (StringIsDigit($hp) = 1) Then
    IF ($hp > $attackprozent or $hp = $attackprozent) Then
    $attack = 1
    EndIf
    EndIf

    Return $attack
    EndFunc

    [/autoit]


    tja und das hat halt leider nicht funktionert weil bei $displayendposition-7 es ja nicht unbedingt 7 stellen dsein müssen die man zurückgehen muss sondern vielleicht auch einfach nur 5 (100/0</option>)
    Meinen Ansatz fand ich ganz gut aber heute morgen um 4 uhr hat ich dann doch keinen bock mehr xD

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • Zitat

    Original von huggy
    das hatten wir schon soooooo oft , dass man bei browsergames schummeln will... [...]


    Wenn man ihm glauben schenken darf, dann existiert dieses Browsergame nur auf seinem PC, bzw steht bei ihm in der Entwicklung.

    Würde aber auch Vorschlagen:
    _InetGetSource (Habe es vorher immer mit "_IEDocReadHTML" - Danke dafür!)
    $Blub = _StringBetween($Source, '" >', '</option>')
    $Ziel = _StringBetween($Blub[0], " ", "/")
    Fertig. Wenn ich jetzt nicht falsch liege!

  • 1. Worin besteht der unterschied zwischen _InetGetSource und _IEDocReadHTML


    2. _StringBetween gibts in keinem meiner helpfiles Brauch ich da vielleicht die neuste beta oder so?

    3. Würdest du bitte so gut sein und mir sagen was es schritt für schritt macht?

    als erstes den quelli raussuchen dann speichert der das was zwischen > und </option ist
    undletzte zeile bekomm ich ned auf die reihe.


    btw: es gibt mehrere option im quelltext und es ist nicht immer das erste option was benötigt wird. kann man da einstellen nach dem wievieltem option er sucht?

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • Lad dir einfach die neuste Stable-Version, Beta gibts ja nicht. 3.2.2.0 ist die Version! Und dann ist es bei der UDF String.au3!!

    Ich weiß den Unterschied jetzt auch nicht genau, aber:
    _IEDocReadHTML macht aus & :amp; und wenn ich es in eine *.txt schreibe, sieht es leider auch nicht schön formatiert aus. Aber ansonsten ist es gleich :P

    Schritt für Schritt macht es:
    Quelltext holen
    Text zwischen " > und </option> rausziehen
    Text zwischen Leerzeichen und / rausziehen, als Source dient, der Text von ein Schritt vorher!

    _StringBetween gibt ein Array aus, wo alle möglichen gefunden Strings drinne sind. Kannste dir anzeigen lassen mit _ArrayDisplay! Nach welchen Kriterien du es weiter filterst, ist ja dann deine Sache!

    Einmal editiert, zuletzt von Zen (31. Dezember 2006 um 15:21)