Seite 1 von 1

Mittels php Seite aufrufen.

Verfasst: 24.07.2010, 17:25
von devolo01
Hi @ all

Stehe gerade etwas auf dem Schlauch. Und zwar möchte ich mittels PHP nach der Prüfung einer Bedingung automatisch eine neue Seite aufrufen lassen.

Sprich Beispiel:

Code: Alles auswählen

if ($wert = true) {
    öffne test.php;
}
else {
   echo 'Fehler bitte nochmal versuchen';
}
Entweder stehe ich nun gerade voll auf dem Schlauch, oder es gibt keine entsprechende Funktion. Daher meine Frage wie kann ich mittels PHP eine neue Seite Laden lassen?

Mittels header('Location:https://www.adressen.tld/geheim.htm'); komme ich leider nicht weiter, da die Bedingung am ende des Scripts geprüft wird.

VG und hoffe auf Feedback

Verfasst:
von

Verfasst: 24.07.2010, 17:29
von daniel5959
Hallo,

es darf nur noch keine Ausgabe gegeben haben, dann ist es egal ob header(...) am Ende des Codes steht.

Mal mehr Infos zum Script nennen, dann lässt sich evtl. eine Lösung finden.

daniel5959 :)

Verfasst: 24.07.2010, 17:45
von devolo01
Hi,

Jup das mit der Ausgabe ist mir bekannt, daher auch mein Problem.

Das Beim Script handelt ist der Aufbau wie folgt, da es mittlerweile mehr als 1000 Zeilen hat verzichte ich darauf es hier einzustellen :-).

Beim Aufruf des Scriptes werden Daten über MySQL in ein Formular eingeladen. Nun besteht die Möglichkeit entsprechende Daten zu ändern, die dann mittels Update in der DB Aktualisiert werden.

Nun wollte will ich mittels Bedingung ausgeben lassen, wenn das Update ohne Fehler ausgeführt worden ist auf eine neue Seite Springen zu lassen. Beim Fehler wird das Formular neu geladen.

Entweder stehe ich nun wirklich auf dem Schlauch oder ich habe Ihrgentetwas falsches eingegeben, da wenn ich in der Methode die URL Eingebe, wird nach bestätigen des Submit Buttons zwar gewechselt aber keine Prüfung durchgeführt.

VG

Verfasst:
von

Verfasst: 24.07.2010, 19:01
von devolo01
So,

habe nun nach etwas Suchen eine passable Lösung für mich gefunden.

Lasse nun in der Bedingen wenn Sie erfüllt wird einfach einen html refresh ausgeben.

Code: Alles auswählen

echo '<meta http-equiv=refresh content="0; url=../index.php">';
zwar nicht die Schönste Lösung aber funktional :-).

Java Script kam bei mir leider nicht in Frage daher dieser umständliche weg.

Grüße

Verfasst: 24.07.2010, 19:29
von Pheidippides
So mache ich es auch, es scheint keine bessere Lösung zu geben.
Setze noch nach dem refresh ein exit;

Verfasst: 24.07.2010, 19:36
von net(t)worker
du kannst in PHP die gesamte Ausgabe erstmal abfangen und nach der Abfrage dann entweder die Ausgabe ausgeben oder eben eine weiterleitung auf die andere seite... optimal wäre eine weiterleitung auf eine leere seite die direkt ein metarefresh auf die Zielseite macht, so könnte der User nicht einfach versehentlich durch die zurück taste im browser die formulareingabe nochmal absenden...

infos: https://www.php.net/manual/de/ref.outcontrol.php

Verfasst: 24.07.2010, 20:11
von 800XE
devolo01 hat geschrieben:So,

habe nun nach etwas Suchen eine passable Lösung für mich gefunden.

Lasse nun in der Bedingen wenn Sie erfüllt wird einfach einen html refresh ausgeben.
ich mach keine echo( $text );
sondern $content.=$text;

und er Echo kommt erst ganz am Ende
so kann ich überrall den "header" Befehl anwenden
Pheidippides hat geschrieben:So mache ich es auch, es scheint keine bessere Lösung zu geben.
Setze noch nach dem refresh ein exit;
Wenn doch Echos gemacht wurden,

kann man mit ob_start() dafür sorgen das diese nicht wirklich ausgegeben werden, sondern in einen Puffer
https://php.net/manual/de/function.ob-start.php
dann funktionierts auch mit dem HeaderBefehl obwohl vom Scriptcode schon Ausgaben gemacht wurden

Verfasst: 24.07.2010, 20:50
von devolo01
Vielen Dank euch nochmal,

werde mich in die Thematik der Output-Control-Funktionen einmal einlesen, und versuchen Es in Zukunft zu berücksichtigen.

ich mach keine echo( $text );
sondern $content.=$text;

Ansich eine super Idee, werde es mal versuchen beim nächsten Script entsprechend umzusetzen. Denke aber auch das hierfür ein komplettes Umdenken von meinen jetzigen Programmier Stiel notwendig ist.

VG

Verfasst: 26.07.2010, 09:30
von nerd
800XE hat geschrieben: ich mach keine echo( $text );
sondern $content.=$text;

und er Echo kommt erst ganz am Ende
so mach ichs auch meistens. erstmal den ganzen kram in einer variablen buffern (oder mehrere, z.b. fuer title und body) und dann diese variable an die entsprechende stelle auf der seite setzen. so kann man jederzeit umleiten, session setzen oder das script komplett abbrechen wenn was faul ist.

Verfasst: 26.07.2010, 10:35
von derHund
Normalerweise macht man das nicht per OB oder gar Meta-Refresh.

Wenn das Formular abgesendet wird und du die Daten geprüft hast, dann leitest du einfach bei gültigen Daten per header() weiter. Es hat vorher ja keine Ausgabe stattgefunden, was solltest du denn ausgegeben haben? Wenn du das Formular an sich selber sendest, kannst du dich bei ungültigen Daten sogar direkt auf den Inhalt vom POST beziehen.

Eingabe -> Verarbeitung -> Ausgabe lautet eigentlich das Prinzip, das dir ne Menge Ärger spart.

Dass du bei mehr als 1000 Zeilen, die die drei Teile mischen, Schwierigkeiten bekommst, kann ich nachvollziehen. Mit den Techniken meiner Vorposter machst du dir die Sache aber meiner Meinung nach nicht unbedingt einfacher.

Output Buffering (und ähnliche Techniken) sind, auch wenn es an dieser Stelle 'funktioniert', nicht für diesen Zweck vorgesehen.