PHP und _INetGetSource / Variable übergeben / kein "+" mehr in SQL Tabelle / htmlentities??urlencode??

  • Hallo!

    Ich möchte per PHP und _INetGetSource eine Variable in ein .php Script übergeben und in eine SQL Tabelle einfügen, was auch klappt.

    Jedoch steht in der SQL Tabelle dann der Wert ohne Plus "+" Zeichen! Hab jetzt was von htmlentities und urlencode gelesen, jedoch keine Ahnung wie ich das anwenden soll! Hat jemand nen Tip für mich?

    $aFragenArray[$i][0] = "Wieviel sind 3 + 5 ?"

    _INetGetSource("http://sqlserver/conn2.php?Fragen=" & $aFragenArray[$i][0])

    Und in der Tabelle steht dann nur "Wieviel sind 3 5 ?"

    Einmal editiert, zuletzt von Morrison (20. Februar 2013 um 12:44)

  • Hallo Morrison,

    Wie du anscheinend schon festgestellt hast, ist das "+" Zeichen als Ersatz für das Leerzeichen da.
    Um das halt zu umgehen, wirst du um das Encoden der Zeichen nicht rum kommen.

    Aber das Encoden muss auf der AutoIt-Seite stattfinden weil die PHP-Datei das + direkt umwertet.

    Hier die Funktion von ProgAndy:

    [autoit]


    Func _URLEncode($sData)
    Local $aData = StringToASCIIArray($sData, Default, Default, 2)
    Local $sOut
    For $i = 0 To UBound($aData) - 1
    Switch $aData[$i]
    Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
    $sOut &= Chr($aData[$i])
    Case 32
    $sOut &= "+"
    Case Else
    $sOut &= "%" & Hex($aData[$i], 2)
    EndSwitch
    Next
    Return $sOut
    EndFunc ;==>_URLEncode

    [/autoit]

    Einfach bevor du mit die Daten sendest den String einmal damit "bearbeiten"

    lg


  • Danke! Funzt super!! :rock:


    Hey,
    ich habe mal eine kleine Frage. Und zwar möchte ich auch (wenn ich dich richtig verstanden habe) eine Variable aus Autoit an ein PHP-Script weitergeben, welches dann diese Variable(n) in in meiner Datenbank abspeichert. Hier stehe ich aber vor einem Problem.

    Und zwar will das ganze nicht so richtig und ich verstehe einfach nicht woran das ligen könnte. Ich denke es muss an dem Autoitteil liegen, da das sehr einfache PHP-Script funktioniert (Manuelles aufrufen mit Testwerten statt den Postvariablen, schreibt diese dann in die Tabelle).... Anbei mein Code. Vielleicht kannst du deinen kurz posten? Oder irgendjemand sieht den Fehler bei mir? DANKE schonmal! Ich würde mich RIESIG freuen

    [autoit]

    #include <WinHttp.au3>

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

    Global $hOpen = _WinHttpOpen()
    Global $hConnect = _WinHttpConnect($hOpen, "http://meinedomain.de")

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

    $sPost = "InsertV1=Test1&InsertV2=Test2"
    _WinHttpSimpleRequest($hConnect, "POST", "/Pfad/Datei.php", Default ,$sPost)

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

    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hOpen)

    [/autoit]
  • Ich denke es muss an dem Autoitteil liegen

    denke ich nicht denn lt. Funktionskopf:

    übergibst du die Werte in der richtigen Reihenfolge.

    Mache daher ein eigenes Thema auf und stelle dort auch die Rückgabe von _WinHttpSimpleRequest ein.

    mfg autoBert