Seite 1 von 2

[HTML] bei form action werte mit dazuschreiben

Verfasst: 06.07.2007 15:31
von Vallan
so ich habe ein Prob mit HTML:

Code: Alles auswählen

<form action='auflisten.php?suche=&sort=#1' >
<input type='submit' value='Ändern'  />
</form>
Wenn man nun auf das so definierte formular klickt wird nur zur seite
"auflisten.php?#1"gewechselt.

Kann man überhaupt bei formularen so auf eine HP verlinkten
(es ist beabsichtigt das die beiden Variablen dann mit get ausgelesen werden können (mit "" als wert) und das das HTML dokument zur marke "1" springt.)


Wäre cool wenn mir jem Hilft ...

/So frage mal geändert.

Verfasst: 06.07.2007 15:39
von D@nte
Guck dir mal die PHP-Befehle
$_POST und $_GET an...

Deine Fragestellung ist übrigens recht wirr und schwer verständlich...

Verfasst: 07.07.2007 02:19
von a14xerus
also ich denke mal dich stört das "#1"...
Warum willst du denn zu einem Anker springen (wahrscheinlich noch auf der selben Seite).
So springt der Browser doch nur aber sendet keine Daten an den Server, und dann kann auch nichts mit PHP verarbeitet werden

Sollte die Sprungmarke auf einer anderen Seite liegen wird das Form den Browser dazu bringen diese Seite anzufordern und dann sprengt der Browser zu #1.
Allerdings übermittelt dein Form keine Daten

Code: Alles auswählen

<form action='auflisten.php=#1' method='post'> <!-- ?suche=&sort= weglasen, ist sinnlos... method='post' beschreibt das übermitteln der Daten per $_POST[""]-->
<input type='text' name='suche' /><br /><!-- Hier kann der User den Text eingeben der Mittels der Variable "suche" übergeben wird-->
<input type='submit' value='Ändern'  />
</form> 

Verfasst: 07.07.2007 10:37
von dead_cox

Code: Alles auswählen

<form action="?foo=bar&foo2=bar2" method="post">

</form>
Nur als bsp. So siehts bei mir aus wenn ich werte ueber ein Formular geben tue.

& = &, da es da XHTML Strict Konform ist. ;) Also kann da auch genauso gut "&" stehen, wenn man nur mit HTML Scriptet.

@Vallan, so wie es aussieht Probierst du 2 Variablen Werte in eine Variable zu Stecken, mach evtl das #1 zum anfang und Probier dann die Variablen zu Defenieren. Also dann: auflisten.php#1?suche=sort.

Verfasst: 07.07.2007 16:04
von PureBasic4.0
ich würde folgendes vorschlagen:

Bild

//edit: ich hab's in ein bild gepackt, weil phpBB mal wieder sämtliche Tags aussortiert hat... :?

Verfasst: 07.07.2007 19:30
von a14xerus
PureBasic4.0 hat geschrieben://edit: ich hab's in ein bild gepackt, weil phpBB mal wieder sämtliche Tags aussortiert hat... :?
Ich sachs dir jetzt zum zweiten mal: HTML deaktivieren...

Hier hab ich es dir schon mal gechrieben

Verfasst: 07.07.2007 20:00
von PureBasic4.0
hab ich wahrscheinlich überlesen

Verfasst: 25.08.2008 13:33
von chrizl
Guten Tag,

tut mir leid, wenn ich dieses "alte" Thema noch einmal wieder aufrufe, aber ich hab noch eine Frage dazu.

Erstmal aber zu der Antwort:
Jede Variable, die über ein Formular weiter übergeben wird an eine php-Datei wird nicht in der Form

Code: Alles auswählen

<form action="bla.php?variable1=wert1"> 
</form>
übertragen sondern:

Code: Alles auswählen

<form action="bla.php">
<input type="hidden" name="variable1" value="wert1">
</form>
Naja, aber nun zu dem, was ich vorhabe:

Ich will das ganze so ähnlich haben wie hier, nur dass die Variable über php als "POST" an PHP übergeben wird und das von PureBasic aus.

Also in meiner Anwendung habe ich eine Variable, in der z. B. ein Login-Name steht und eine weitere mit Kennwort.
Nun habe ich in meiner Anwendung ein Web-Gadget mit dem ich die Seite anzeigen lassen möchte, ohne dass ich mich dort extra einloggen muss.
Auf meiner PHP-Seite wird die Variable vom Formular aber per POST-Variable übergeben.
Wenn ich nun aber den Aufruf der Seite so starte:
http://www.seite.de/login.php?username= ... d=password

Naja, mit dieser Methode übergibt man die Variable jetzt aber mit dem GET- und nicht mit dem POST-Format.

Vlt. weiss ja einer von euch, wie ich das am besten machen kann, ohne meine PHP-Seite anpassen zu müssen.

Verfasst: 25.08.2008 13:39
von DarkDragon
Genau vor dem Problem steh ich auch grad (POST statt GET wegen der beschränkten Länge).

Ich hab allerdings kein WebGadget, sondern muss es im Hintergrund machen.

Desshalb hab ich hier meine alten Requests wieder ausgebuddelt:

Code: Alles auswählen

; HTTP Commands - DarkDragon
; ***************************
; Commands:
; ---------
; HTTPRequest(URL.s, *EndSize.LONG, PacketSize, *Callback) - Result: Pointer to a buffer containing the webdata
; URL.s       - [in]  Nullterminated string with the link to the file
; *EndSize    - [out] Pointer to a long variable which receives the size of the resulting buffer
; PacketSize  - [in]  Long variable containing the size of the packets(steps) to download
; *Callback   - [in]  Pointer to a callback method receiving the following parameters: CurrentDownloadedSize.l, MaximumLength.l

; HTTPRequest_Password(URL.s, *EndSize.LONG, PacketSize, Username.s, Password.s, *Callback) - Result: Pointer to a buffer containing the webdata
; URL.s       - [in]  Nullterminated string with the link to the file
; *EndSize    - [out] Pointer to a long variable which receives the size of the resulting buffer
; PacketSize  - [in]  Long variable containing the size of the packets(steps) to download
; Username.s  - [in]  Nullterminated string containing the username
; Password.s  - [in]  Nullterminated string containing the password(NOT encoded)
; *Callback   - [in]  Pointer to a callback method receiving the following parameters: CurrentDownloadedSize.l, MaximumLength.l

InitNetwork()

#TIMEOUT = 1500

Procedure.s ReceiveLine(ConnectionID)
  Text.s = ""
  While char.b <> #LF
    char = 0
    ReceiveNetworkData(ConnectionID, @char, 1)
    If char <> 0
      Text.s + Chr(char)
    EndIf
  Wend

  ProcedureReturn RemoveString(RemoveString(Text, #CR$), #LF$)
EndProcedure

Procedure HTTPRequest(URL.s, *EndSize.LONG, PacketSize, *Callback)
  Protected Size.l, Data_.s, s.l, Method.s, File.s, Content.s, Text.s, Length.l, Line.s
  Protected CurSize.l, oSize.l, t.l, ConnectionID.l

  If Left(URL, 7) = "http://" : URL = Right(URL, Len(URL)-7) : EndIf
  s = FindString(URL, "/", 1)
  Host.s = "" : File.s = ""
  If s <> 0 : Host.s = Left(URL, s-1) : File.s = Right(URL, Len(URL)-s) : Else : Host = URL : EndIf

  s = FindString(File, "?", 1)
  If s <> 0
    Method.s = "POST"
    Content.s = Right(File, Len(File)-s)
    File = Left(File, s-1)
  Else
    Method.s = "GET"
    Content.s = ""
  EndIf

  ConnectionID = OpenNetworkConnection(Host, 80)
  If ConnectionID
    Data_.s = Method+" /"+File+" HTTP/1.0"+#CRLF$
    Data_.s + "Host: "+Host+#CRLF$
    Data_.s + "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7"+#CRLF$
    If Content <> ""
      Data_.s + "Connection: close"+#CRLF$
      Data_.s + "Content-Type: application/x-www-form-urlencoded"+#CRLF$
      Data_.s + "Content-Length: "+Str(Len(Content))+#CRLF$
      Data_.s + #CRLF$ + Content.s + #CRLF$+#CRLF$
    Else
      Data_.s + "Connection: close"+#CRLF$+#CRLF$
    EndIf

    SendNetworkString(ConnectionID, Data_)
    While NetworkClientEvent(ConnectionID) <> 2 : Delay(10) : Wend

    Length = 0
    Line.s = ""
    Repeat
      Line = ReceiveLine(ConnectionID)
      Select LCase(StringField(Line, 1, ":"))
        Case "content-length"

          Length = Val(Trim(StringField(Line, 2, ":")))
      EndSelect
    Until Len(Trim(Line)) <= 4

    Size = 0
    If Length <> 0

      *Result = AllocateMemory(Length)

      While Size < Length
        If CurSize > 0
          Size + CurSize
          If *Callback
            CallFunctionFast(*Callback, Size, Length)
          EndIf
        EndIf
        If Size > (Length-PacketSize)
          PacketSize = Length-Size
        EndIf
        If PacketSize > 0
          CurSize = ReceiveNetworkData(ConnectionID, *Result+Size, PacketSize)
        EndIf
      Wend

    Else

      *Buffer = AllocateMemory(PacketSize)
      *Result = AllocateMemory(1)
      t = ElapsedMilliseconds()
      While ElapsedMilliseconds()-t <= #TIMEOUT
        If NetworkClientEvent(ConnectionID) = 2
          CurSize = ReceiveNetworkData(ConnectionID, *Buffer, PacketSize)
          If CurSize > 0
            oSize = Size
            Size + CurSize
            *Result = ReAllocateMemory(*Result, Size)
            CopyMemory(*Buffer, *Result+oSize, CurSize)
            If *Callback
              CallFunctionFast(*Callback, Size, 0)
            EndIf
          EndIf
          t = ElapsedMilliseconds()
        EndIf
      Wend
      Length = Size

    EndIf

    *EndSize\l = Length
    If *Callback
      CallFunctionFast(*Callback, Size, Length)
    EndIf

    CloseNetworkConnection(ConnectionID)

    ProcedureReturn *Result
  EndIf
EndProcedure

Procedure HTTPRequest_Password(URL.s, *EndSize.LONG, PacketSize, Username.s, Password.s, *Callback)
  Protected Size.l, Data_.s, s.l, Method.s, File.s, Content.s, Text.s, Length.l, Line.s
  Protected CurSize.l, oSize.l, t.l, ConnectionID.l

  If Left(URL, 7) = "http://" : URL = Right(URL, Len(URL)-7) : EndIf
  s = FindString(URL, "/", 1)
  Host.s = "" : File.s = ""
  If s <> 0 : Host.s = Left(URL, s-1) : File.s = Right(URL, Len(URL)-s) : Else : Host = URL : EndIf

  s = FindString(File, "?", 1)
  If s <> 0
    Method.s = "POST"
    Content.s = Right(File, Len(File)-s)
    File = Left(File, s-1)
  Else
    Method.s = "GET"
    Content.s = ""
  EndIf

  InputBuffer.s = Username+":"+Password
  OutputBuffer.s = Space(256)
  Base64Encoder(@InputBuffer, Len(InputBuffer), @OutputBuffer, 255)

  ConnectionID = OpenNetworkConnection(Host, 80)
  If ConnectionID
    Data_.s = Method+" /"+File+" HTTP/1.0" + #CRLF$
    Data_.s + "Host: "+Host + #CRLF$
    Data_.s + "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7" + #CRLF$
    Data_.s + "Authorization: Basic "+ OutputBuffer + #CRLF$
    If Content <> ""
      Data_.s + "Connection: close" + #CRLF$
      Data_.s + "Content-Type: application/x-www-form-urlencoded"+#CRLF$
      Data_.s + "Content-Length: "+Str(Len(Content))+#CRLF$
      Data_.s + #CRLF$ + Content.s + #CRLF$+#CRLF$
    Else
      Data_.s + "Connection: close" + #CRLF$ + #CRLF$
    EndIf

    SendNetworkString(ConnectionID, Data_)
    While NetworkClientEvent(ConnectionID) <> 2 : Delay(10) : Wend

    Length = 0
    Line.s = ""
    Repeat
      Line = ReceiveLine(ConnectionID)
      Select LCase(StringField(Line, 1, ":"))
        Case "content-length"
          
          Length = Val(Trim(StringField(Line, 2, ":")))
      EndSelect
    Until Len(Trim(Line)) <= 4

    Size = 0
    If Length <> 0

      *Result = AllocateMemory(Length)

      While Size < Length
        If CurSize > 0
          Size + CurSize
          If *Callback
            CallFunctionFast(*Callback, Size, Length)
          EndIf
        EndIf
        If Size > (Length-PacketSize)
          PacketSize = Length-Size
        EndIf
        If PacketSize > 0
          CurSize = ReceiveNetworkData(ConnectionID, *Result+Size, PacketSize)
        EndIf
      Wend

    Else

      *Buffer = AllocateMemory(PacketSize)
      *Result = AllocateMemory(1)
      t = ElapsedMilliseconds()
      While ElapsedMilliseconds()-t <= #TIMEOUT
        If NetworkClientEvent(ConnectionID) = 2
          CurSize = ReceiveNetworkData(ConnectionID, *Buffer, PacketSize)
          If CurSize > 0
            oSize = Size
            Size + CurSize
            *Result = ReAllocateMemory(*Result, Size)
            CopyMemory(*Buffer, *Result+oSize, CurSize)
            If *Callback
              CallFunctionFast(*Callback, Size, 0)
            EndIf
          EndIf
          t = ElapsedMilliseconds()
        EndIf
      Wend
      Length = Size

    EndIf

    *EndSize\l = Length
    If *Callback
      CallFunctionFast(*Callback, Size, Length)
    EndIf

    CloseNetworkConnection(ConnectionID)

    ProcedureReturn *Result
  EndIf
EndProcedure
Du könntest ja einfach die Daten dann in das WebGadget streamen.

Verfasst: 25.08.2008 14:03
von chrizl
Das muss ich mir erstmal anschauen.

Hab mir auch schon einige Beiträge, die ich durch die Suche gefunden habe angeschaut und einige Hilfen nachgelesen, aber noch nicht wirklich was gefunden, was ich brauchen könnte.

Meine Überlegung war gerade auch schon, die Seite wie du im Hintergrund vollständig zu lesen, also die Daten per POST zu übergeben und dann diese ins WebGadget zu schreiben.

Das Problem ist nur, dass ich selber mit WebGadget und Co noch nicht allzuviel ausprobiert habe.
Ich müsste ja eine Browser-Session erstellen um den Login aktiv zu halten.

Evtl. kennst du ja PHP-fusion (CMS).

Aber ich schau mir deine Requests an und hoffe, dass ich damit ein bischen was hinbekomme.
Ich muss mich selber erstmal wieder richtig in die Programmierung einarbeiten ;)