hemorieder
Lieutenant
- Registriert
- März 2003
- Beiträge
- 649
Hey,
ich bastle gerade an einem Skript, dass ein Formular aufruft und abschickt.
Anschließend will ich nur das Ergebnis des abgeschickten Formulares sehen.
Aus einem mir nicht nachvollziehbaren Grund, wird (glaube ich) die Session nicht beibehalten.
Wenn ich mir die entscheidenen Parameter auslesen lasse, JESSIONID und timestamp, so sind diese beide gefüllt.
Auf der original Seite kann man das Problem, welches das Skript erzeugt, wie folgt reproduzieren:
1. Seite aufrufen: https://igv-kfz.regioit.de/verkehr-igv/servlet/Internetgeschaeftsvorfaelle?AUFRUF=WKZ_BN
2. Auf "Suchen" drücken (mit oder ohne Eingabe)
3. Nun (nachdem man das Ergebnis sieht) in die Adresszeile gehen und "Enter" drücken
--> Ihre Eingaben konnten leider nicht übernommen werden, da Sie die Navigationsbuttons Ihres Browsers benutzt haben. Bitte wiederholen Sie Ihre Eingabe und klicken Sie anschließend auf die Buttons (zurück oder weiter) am Seitenende, um weiter auf der Webseite zu navigieren.
Hier mein Skript dazu:
Habt ihr einen Grund, wieso das nicht klappt?
ich bastle gerade an einem Skript, dass ein Formular aufruft und abschickt.
Anschließend will ich nur das Ergebnis des abgeschickten Formulares sehen.
Aus einem mir nicht nachvollziehbaren Grund, wird (glaube ich) die Session nicht beibehalten.
Wenn ich mir die entscheidenen Parameter auslesen lasse, JESSIONID und timestamp, so sind diese beide gefüllt.
Auf der original Seite kann man das Problem, welches das Skript erzeugt, wie folgt reproduzieren:
1. Seite aufrufen: https://igv-kfz.regioit.de/verkehr-igv/servlet/Internetgeschaeftsvorfaelle?AUFRUF=WKZ_BN
2. Auf "Suchen" drücken (mit oder ohne Eingabe)
3. Nun (nachdem man das Ergebnis sieht) in die Adresszeile gehen und "Enter" drücken
--> Ihre Eingaben konnten leider nicht übernommen werden, da Sie die Navigationsbuttons Ihres Browsers benutzt haben. Bitte wiederholen Sie Ihre Eingabe und klicken Sie anschließend auf die Buttons (zurück oder weiter) am Seitenende, um weiter auf der Webseite zu navigieren.
Hier mein Skript dazu:
PHP:
<?php
// Ziel-URL (https)
$url = "https://igv-kfz.regioit.de/verkehr-igv/servlet/Internetgeschaeftsvorfaelle?AUFRUF=WKZ_BN";
// cURL-Initialisierung
$ch = curl_init();
// User-Agent für die neueste Firefox-Version
$userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0";
// cURL-Optionen für die ursprüngliche Anfrage setzen
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); // Neueste Firefox-Version
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Deaktivieren der SSL-Überprüfung
// Anfrage ausführen und Header mit Cookies speichern
curl_setopt($ch, CURLOPT_HEADER, 1);
$response = curl_exec($ch);
// JSESSIONID-Cookie auslesen aus Header
$jsessionid = null;
$cookies = [];
preg_match_all('/Set-Cookie: (.*?);/i', $response, $cookies);
foreach ($cookies[1] as $cookie) {
if (strpos($cookie, 'JSESSIONID') !== false) {
$jsessionid = $cookie;
break;
}
}
// ZEITSTEMPEL aus der Seite auslesen
preg_match("/name='ZEITSTEMPEL' value='(.*?)'/", $response, $zeitstempelMatch);
$zeitstempelValue = $zeitstempelMatch[1];
// cURL-Sitzung schließen
curl_close($ch);
// Daten für das Formular
$formData = [
'INPUT-TXT_KENNZEICHENSUCHE_ERKENNUNGSZEICHEN' => 'ZZ',
'INPUT-TXT_KENNZEICHENSUCHE_ZIFFERN' => '1011',
'INPUT-OPT_KENNZEICHENSUCHE_BESONDERHEIT1' => 'NULL',
'ZEITSTEMPEL' => $zeitstempelValue // ZEITSTEMPEL-Wert hinzufügen
];
// cURL-Initialisierung für Formularsendung
$ch = curl_init();
// cURL-Optionen für das Formular setzen
$formSubmitUrl = "https://igv-kfz.regioit.de/verkehr-igv/servlet/Internetgeschaeftsvorfaelle"; // Anpassen zur tatsächlichen URL
curl_setopt($ch, CURLOPT_URL, $formSubmitUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($formData));
curl_setopt($ch, CURLOPT_COOKIE, $jsessionid); // JSESSIONID setzen
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); // Neueste Firefox-Version
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Deaktivieren der SSL-Überprüfung (nicht empfohlen in Produktionsumgebungen)
// Formular senden
$response = curl_exec($ch);
// Überprüfen auf Fehler
if ($response === false) {
echo 'Fehler: ' . curl_error($ch);
} else {
echo 'Antwort: ' . $response;
}
// cURL-Sitzung schließen
curl_close($ch);
?>
Habt ihr einen Grund, wieso das nicht klappt?
Zuletzt bearbeitet: