Der Martin: Nach input durch User Seite direkt ausgeben

Beitrag lesen

Hi,

Ich kann eine Seite, deren Nummer ein User eingibt, bisher nur über 2 Klicks ausgeben lassen.
input type submit ist der erste Klick.
Die Zahl wird gesendet, geprüft und dann wird ein Seitenlink ausgegeben, der einen erneuten Klick nötig macht, um diese Seite aufzurufen.

das ist nicht nötig. Mir fallen auf Anhieb zwei Möglichkeiten ein, das gewünschte Ziel mit nur einem Klick (1x Submit) zu realisieren.

Womit wird das gemacht? Kann man dafür überhaupt eine Verlinkung nehmen?

Ein Link (im Sinne von HTML) hat hier gar keinen Auftritt.

Möglichkeit 1: Ein HTTP-Redirect
Dein PHP-Script prüft die übergebene Nummer auf Gültigkeit, und sendet dann einen Redirect auf die entsprechende Seite:

$newpage = "http://www.example.net/page" . $seitennummer . ".html");
 header("Location: $newpage");

Dabei darf vor der header-Anweisung kein Code an den Client ausgegeben werden, weil diese Art der Weiterleitung über HTTP-Header realisiert wird, die immer vor den Nutzdaten ausgegeben werden müssen.

Möglichkeit 2: Inhalt direkt ausgeben
Dein PHP-Script prüft die übergebene Nummer auf Gültigkeit, und sendet dann selbständig die Inhalte der gewünschten Seite, ohne noch einmal umzuleiten. Das könnte man mit include oder readfile lösen:

$incpage = "http://www.example.net/page" . $seitennummer . ".inc");
 readfile($incpage);

Ich möchte das Problem nicht mit Javascript lösen.

Das würde ich auch nicht wollen.

// definiert Konstante 'seitennummer'
   if ( ! isset ($_POST['seitennummer']))
        { $_POST['seitennummer'] = '0'; }

Das ist nicht unelegant - falls kein POST-Parameter übergeben wurde, erzeugst du ihn selbst. Der Kommentar ist allerdings gelogen - hier wird keine Konstante angelegt.

// wandelt Konstante in Variable
        $seitennummer = $_POST['seitennummer'];

Warum kopierst du den Parameter hier nochmal um, nachdem du eben sichergestellt hast, dass er existiert? Das sieht man oft, es ist aber ineffizient und verschleiert die Herkunft der Daten. Arbeite im Script ruhig direkt mit $_POST['seitennummer']. Da sieht man wenigstens direkt, wo's herkommt.

So long,
 Martin

--
Ich bin im Prüfungsstress, ich darf Scheiße sagen.
  (Hopsel)