[HTML] bei form action werte mit dazuschreiben

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Vallan
Beiträge: 223
Registriert: 20.01.2006 19:34
Kontaktdaten:

[HTML] bei form action werte mit dazuschreiben

Beitrag 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.
Zuletzt geändert von Vallan am 06.07.2007 15:59, insgesamt 1-mal geändert.
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

Guck dir mal die PHP-Befehle
$_POST und $_GET an...

Deine Fragestellung ist übrigens recht wirr und schwer verständlich...
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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> 
Benutzeravatar
dead_cox
Beiträge: 56
Registriert: 05.05.2007 13:25
Wohnort: Stasi 2.0

Beitrag 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.
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag 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... :?
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

hab ich wahrscheinlich überlesen
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
chrizl
Beiträge: 60
Registriert: 31.08.2004 15:03
Wohnort: Pbg.
Kontaktdaten:

Beitrag 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.
Mit freundlichen Grüßen,
chrizl
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
chrizl
Beiträge: 60
Registriert: 31.08.2004 15:03
Wohnort: Pbg.
Kontaktdaten:

Beitrag 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 ;)
Mit freundlichen Grüßen,
chrizl
Antworten