Anstelle Formular senden alle Daten über URL übergeben

Hallo zusammen!

Ich hoffe ich habe mit meiner Frage das richtige Forum getroffen...

Ich möchte eine Exceltabelle mit historischen Aktienkursen füllen.
Dies kann ja komfortabel über die Funktion: Daten/Externe Daten importieren/Neue Webabfrage geschehen, wenn eine Internetseite zur Verfügung steht, auf der die Kurse abrufbar sind.
Eine solche Internetseite wäre folgende: http://www.handelsblatt.com/News/default.aspx?_p=200023&_t=wp1_quoteshistory&wp1_symbol=DAX.IND (hier z.B. für den DAX)

Nun kommt das eigentliche Problem. Die Kurse können nur über das Formular abgefragt werden, also der Zeitraum, der angezeigt wird.
Schön wäre es jedoch, wenn ich eine URL hätte, die alle notwendigen Formulardaten enthält und somit direkt die entsprechende Seite mit den Kursdaten aufgebaut wird. Diese URL kann ich dann nämlich über die schon erwähnte Excel-Funktion auslesen. So bräuchte man nur noch den Wert für "wp1_symbol" in der URL ändern und man würde die historischen Kurse für verschiedene Aktien oder Indizes erhalten.

Ich hoffe ihr versteht, was ich meine.
Danke schonmal für eure Hilfe!
 
Man kann keine POST Variablen (Formular) über die GET-Methode (URL) ändern (außer, dies ist über ein serverseitiges Script definiert), aber wenn du dir eine PHP-Seite machst (Stichwort cURL), die diese Seite mit den entsprechenden Einstellungen aufruft, wäre das Problem gelöst.
 
Kann ich nicht einfach die verschiedenen Werte über die URL an die Seite übergeben, indem ich sie folgendermaßen anhänge: seite?name=wert&...
Wobei name der Name des Input- oder beispielsweise Select-Feldes ist und der Wert eben der dazugehörige Wert.
Meiner Meinung nach funktioniert das prinzipiell.
Das Problem ist in diesem Fall nur, dass es hier ein nicht sichtbares Feld namens "__VIEWSTATE" gibt und dieses einen sehr langen Wert hat, den ich nicht ohne weiteres mit beschriebener Methodik an die URL anhängen kann. Da streikt der Browser...
 
Ich sehe das Problem nicht. Du kannst mit commandline Tools die Post Daten übermitteln, ich empfehle

"wget".

Die Syntax beim übermitteln ist dann der get Variante ähnlich:
Code:
--post "var1=string1&var2=string2"

Mit wget kannst du ganz bequem auch noch den referer, user agent usw. spoofen...
____________________

Um simpel herauszufinden, was beim Submit überhaut alles übermitelt wird, einfach einen Sniffer dran hängen. Ich nutze unter FF das Plugin "UrlParams".



Gruss
IsNull
 
Original von SPaRXLi
Wobei name der Name des Input- oder beispielsweise Select-Feldes ist und der Wert eben der dazugehörige Wert.
Meiner Meinung nach funktioniert das prinzipiell.

Das funktioniert nur unter 2 Voraussetzungen:
1.) das PHP-Script muss schlecht gecodet sein
und 2.) der Webserver muss schlecht gesichert sein.

Hier eine kleine Erklärung, wann und wieso sowas manchmal funktioniert:

Du hast 2 Methoden, wie du Werte an das Script übergeben kannst:
GET und POST

GET
GET sind die Variablen, die per URL übergeben werden.
Diese werden dann im Script (wenn man vernünftig codet) so ausgegeben:

URL: seite.php?arg1=foo&arg2=bar&sonstwas=blub
PHP:
<?
echo "Argument 1: ".$_GET["arg1"]."<br />Argument 2: ".$_GET["arg2"]."<br />Sonstwas: ".$_GET["sonstwas"];
?>


POST
POST ist die meist verwendete Methode in HTML-Formularen.
Code:
<form action="test.php" method="POST">
<input type="text" name="arg1" value="blub" />
<input type="submit" name="submitbutton" value="absenden" />
</form>

dieses wird dann über $_POST ausgegeben:
PHP:
<?
echo "Im Formular wurde ".$_POST["arg1"]." eingegeben!";
?>


REQUEST
Es gibt auch Fälle, wo eine Variable mal über GET und mal über POST kommt (wenn man z.B. eine Variable, z.B. den aktuellen Menüpunkt, die man vorher per GET übergeben hat dann auch über ein Formular weitergeben will) - da kann man dann auch $_REQUEST verwenden.
Wenn man jedoch ständig für alle Formular-Felder $_REQUEST verwenden würde anstatt $_POST, dann tritt der Fall ein, dass du die Formular-Daten per URL beeinflussen kannst.

Aber so codet eigentlich keiner (jedenfalls keiner, den ich kenne)


schlechte Server-Konfiguration
Es gibt noch eine weitere Methode, die leider viel zu oft praktiziert wird (zugegeben: das hab ich vor paar Jahren, als ich mit PHP begonnen hab, auch so gemacht, als ich es noch nicht besser wusste.... Asche auf mein Haupt...)
Dafür ist allerdings ein schlecht konfigurierter Webserver notwendig.
Und zwar muss in der PHP.ini die Eigenschaft register_globals auf "on" stehen.
Sollte dies der Fall sein, kann man sowohl $_GET["test"], als auch $_POST["test"] einfach über $test einlesen.

Und das ist, wenn diese Manipulation funktioniert, in den meisten Fällen der Fall.
 
Zurück
Oben