Variable zwei mal in folge mit header übergeben?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Geh die gesamte Transportkette noch einmal schrittweise durch. In den Webentwicklungstools deines Browsers (Network-Tab) kannst du prüfen, welcher Payload mit deinen Requests übertragen wurde. Insofern kannst du ermitteln, ob es folgend beim Lesen des Werts oder bei der Weitergabe scheitert.

Anhand der von dir geteilten Informationen ist nicht ersichtlich, wo es genau scheitert. Man könnte lediglich vermuten, dass du in Schritt 2 kein Formular nutzt oder in Schritt 3 tatsächlich eine undefinierte Variable einsetzt.

Ein funktionaler Weg würde jedenfalls so aussehen:

Initialer Trigger:

<?php header("Location: page2.php?variable=123");

page2.php:

<!-- ... -->
<form action="page3.php" method="post">
  <!-- ... -->
    <input type="submit" name="a" value="<?= $_GET['variable'] ?>">
  <!-- ... -->
</form>

page3.php:

<?php
  if (isset($_POST['a'])) {
    header("Location: a.php?variable=" . $_POST['a']);
    exit;
  }

a.php:

<?php print $_GET['variable'];

Wenn alle drei Seiten über dieselbe Domain laufen und sich der Wert zwischen dem ersten und letzten Schritt nie ändert, wäre es allerdings durchaus eine Überlegung wert, den Wert stattdessen in einer Session abzulegen.

Erste Seite:

<?php
  session_start();
  $_SESSION['variable'] = 123;

Letzte Seite:

<?php
  session_start();
  print $_SESSION['variable'];

Auch auf allen dazwischenliegenden Seiten muss am Dateianfang erst die session_start-Funktion aufgerufen werden, um die bestehende Session nicht zu verlieren.

Wäre eine Session nicht das Richtige für diesen Fall?

Woher ich das weiß:Berufserfahrung – > 20 Jahre in der Softwareentwicklung
Frage9547 
Fragesteller
 05.04.2024, 17:07

Ja, jetzt geht es, danke

Ich hab sogar davor schon Session Variablen verwendet, nur daran hab ich irgendwie nicht gedacht...

1

Hi Frage9547,

ersteimal hast sollte man zwischen den Methoden POST und GET in PHP unterscheiden. Wenn du Daten von einer zur anderen Seite übertragen möchtest, wäre es doch schlau diese in einem Cookie via JavaScript zu speichern. Du kannst auch SESSION in PHP nutzen um Sachen zu speichern und dann via Ajax speichern oder abrufen.

Zu Submit-Button:

Ein Submit-Button ist da um ein Formular zu versenden. Dabei wird die Seite normalerweise neu geladen. Hier empfielt sich aber kein Submit-Button sondern ein Button der einen EventListener in JavaScript triggert, der wiederum Ajax-Request sendet mit den Daten die wiederum gespeichert werden kann in einer SESSION oder direkt ohne SESSION über ein Cookie.

Woher ich das weiß:Berufserfahrung – Ich bin gelernter Mediengestalter Digital und Print(IHK)

Woher soll der hier denn in $variable einen Wert haben?

if (isset($_POST["a"])) {
  header("Location: a.php?variable=".$variable);
}

müsste wohl eher so:

if (isset($_POST["a"])) {
  header("Location: a.php?variable=".$_POST["a"]);
}

Und dann frage ich mich, woher der weiss, das es POST ist? Hast du ein Form Tag vor dem Submit Button? Und warum nimmst du da dann nicht einfach Get, dann würde ein Request wie a.php?a=[Bottun value] rauskommen und du sparst den Umweg...

Frage9547 
Fragesteller
 05.04.2024, 12:52

Das sind insgesamt drei Seiten

Seite 1 -> gibt die Variable a bei header mit

Seite 2 -> nimmt die Variable a auf und soll sie beim drücken vom Button weiter reichen mit header

Seite 3 -> sollte eigentlich diese Variable wieder aufnehmen, aber das funktioniert nicht, weil sie nicht mitgeschickt wird

Das heißt, ich brauche die gleiche Variable wie bei Seite 1 auch wieder auf Seite 3

0