flip : böse?!?

Beitrag lesen

Hallo,

Also er soll generell Formulare ausfüllen können post oder get.

und dann abschicken?

Ja

Okay, dann bleibt dir nichts anderes übrig, als das Formular selbst zu parsen. Wenn das Dokument mit dem Formular immer valides XHTML wäre, könnte man ja einen XML-Parser darauf loslassen, etwa simplexml. Aber da HTML so fehlertolerant ist und so viele Schlampereien zulässt (und manche Autoren sogar noch schlampiger sind als eigentlich erlaubt), wirst du selbst eine Funktion schreiben müssen, die HTML-Tags und deren Attribute isoliert.

Suche und isoliere dazu erst das form-Element und extrahiere seine Attribute action und method. Sollte action leer sein, ersetze es durch die URL des Dokuments, das du gerade untersuchst; sollte method fehlen, nimm 'GET' als Default.
Wandere dann durch das Formular und suche alle Elemente vom Typ input, select und textarea. Untersuche ihre Attribute, denn du musst bei jedem ein bisserl anders reagieren: Das name-Attribut brauchst du von allen, aber während <input type="text"> und <textarea> beliebigen Text erlauben (deswegen kannst du deren value-Attribut getrost ignorieren oder höchstens als Defaultwert nehmen), sollten für <select> nur Werte übermittelt werden, die auch als option zur Verfügung stehen. Radiobuttons und Checkboxen sind wieder etwas anders zu behandeln, hier ist deren value zu beachten; und wenn du mehrere <input type="submit"> findest, solltest du auch nur einen davon übermitteln (oder gar keinen).
Definiere nun für jedes gefundene Elemente den Wert, den du übertragen möchtest.

Baue schließlich den kompletten Query-String zusammen, indem du alle zuvor ermittelten name/value-Pärchen verkettest:
name1=value1&name2=value2&name3=value3&usw.

Setze endlich einen weiteren Request ab. Für die GET-Methode nimmst du die action-URL, hängst ein Fragezeichen und den Query-String dran und überträgst das als Namen der angeforderten Ressource. Für POST trägst du _nur_ die action-URL als Request URL in den Header ein und versendest den Query-String als Request Body.

Ich habe das jetzt bewusst recht oberflächlich beschrieben, aber du siehst schon jetzt: Das ist immens viel Aufwand, vor allem wenn man in der Materie noch nicht sattelfest ist. Ich vermute, du hast dich mit dem Vorhaben etwas übernommen.

Ich möchte gerne die Funktion selber schreiben, denke mit eurer Hilfe und besser reinkommen in die Materie kann ich das schaffen.
Teilweise hat ich mir das schon so gedacht nur dachte ich man könnte die geparste Seite, über values ausfüllen und dann normal abschicken ohne den request zu konstruieren?

Aber wenn es nur so geht, mach ich es so!

Ehrlich gesagt hab ich richtig lust darauf, nur mann kennt sich halt noch nicht so aus.

Habe zunächst meinem Beispiel Formular value="" hinzugefügt.

Wozu? Und bei welchen Elementen?

Naja ich möchte ja die Values füllen oder, und Daniel sagte wenn die nicht vorhanden sind klappt da was nicht.

Halt so wie ich es angedacht hatte das ich die values halt fülle im Text usw.

bei den input type text elementen.

kein Ergebnis ausgegeben, aber auch kein Fehler!

Das glaube ich nicht. In der ersten Variante müsste $such einen positiven Zahlenwert ergeben, nämlich die Position des <form>-Tags innerhalb des Strings. Im zweiten Fall solltest du eine Fehlermeldung kassieren, weil strpos kein Array als ersten Parameter haben will.

while(!feof($fp))
{
 $erg[]=fgets($fp);
}
foreach($erg as $value)
{
 echo $value;
}
so klappt das wieder , ich bekomm dann Werte und das Formular.

ich möchte jetzt halt $erg nach <form durchsuchen und dann halt damit anfangen was du oben beschrieben hast.

Es gibt doch sowas wo ich in den Quelltext was schreibe, für Variablenausgabe und im Seitenquelltext über den Browser werden mir dann die Inhalte ausgegeben?!

Hä?

ja genau,

also um es nochmal zu verdeutlichen, in deiner Entwicklungsumgebung gibts du echo $_GET oder vielleicht auch eine andere supervariable, aber das ergebnis oder einen bestimmten Teil davon siehst du dann nicht im Browser, sondern im Quelltext anzeigen vom Browser.

So ein Lehrer von mir hat das öfters gemacht, um Fehlern auf die Schliche zu kommen.

mbg flip