Programmgesteuerter Start einer WebSite.php

TinniTuss

Erfahrenes Mitglied
Hallo Freunde

Abhängig vom Inhalt einer Variablen will ich eine bestmmte (von mehreren vorgegebenen)
WebSite.php starten ohne vorher nochmal auf echo '<a href="xyz.php...' etc.
klicken zu müssen.... irgend etwas mit 'case'..., aber ich weiß nicht, wie ich per
php eine WebSite.php startet. Würde mir da bitte jemand einen Tip geben.

Oder kann mir evtl. jemand sagen, nach was ich da suchen muß, mit meiner Suche komm' ich selbst nicht weiter...

Viele Grüße
HH.
 
Danke für den Tip...
... aber hast Du auch etwas weniger umständliches in Deiner Trickkiste?

Die Parameter die übergeben werden ($_GET), werden erst 'weiter unten seziert' ich müßte
hier schon im header die Parameter auseinandernehmen und mit einem Array vergleichen.

Vielleicht sehe ich das auch nur falsch...?

Ich bin nicht der Fitteste in PHP, könntest Du die Handhabe bitte etwas näher beschreiben?

HH.
 
Irgendwie versteh ich nicht ganz was du vorhast. Wenn du erst spät im Script die Variablen setzt, welche auf die aufzurufende Datei weiterleiten soll kannst du es doch so machen:

PHP:
switch($var){
   case 'wert1' : $header = "website1.php"; break;
   case 'wert2' : $header = "website2.php"; break;
   case 'wert3' : $header = "website3.php"; break;

   default : $header = "standart.php"; break;
}
header( "Location: " . $header );
 
Nach der 'header'-Beschreibung von php.net, muß die header()-Funktion vor der ersten ersten Ausgabe von irgendetwas erfolgen, und das ist bei mir nicht der Fall.
In meiner Anwendung reagiere ich auf Suchanfragen mit unterschiedlichen Ergebnissen.
Innerhalb der Suchauswertung möchte ich an Hand bestimmter 'Schlüssel-Begriffe' komplett andere Anwendungen aufrufen.

Nach dem testweisen Einbau einer Konstruktion wie die folgende passiert nix, außer einer Fehlermeldung.

Zeile 112: if ($suchbegriff = 'exundhopp') header("Location: schleudersitz.php");

PHP Warning: Cannot modify header information - headers already sent by (output started at [...]/index.php:9) in /[...]/includes/880000-suchen-und-finden.inc.php on line 112


Ratlos!
 
"Was will uns dieser freundliche Helfer sagen...?"
"Keine Ahnung!"


Das was im Manual unter 'ob_start()' geschrieben steht verstehe ich ohne den
nötigen Background nicht.

Das ist mir hier und jetzt am 'lebenden Objekt' zu haarig.

...und um mir dazu erstmal eine Experimentalanwendung zu schreiben, damit ich auch
verstehe was ich mache, dafür ist es mir nicht wichtig genug. Da muß ich mir wohl
etwas gaaanz anderes einfallen lassen... oder die Problematik auf die Zeit zwischen
'Weihnachten und Neujahr' verschieben...

Danke
HH.
 
ob_start() puffert deine Ausgabe, so das der header verarbeitet werden kann.
Am Ende der Seite ob_end_flush() zum löschen des puffers.

Nicht nur auf php.net nachsehen sondern auch google bemühen...
 
Nope. So schlimm ist es nicht.

PHP-Code ist an sich noch keine Ausgabe. Wenn due aber in deiner Datei zuerst HTML-Zeugs und so weiter hast, dann ist das bereits eine Ausgabe vor deiner Zeile 112.

Nun kann an aber mittels PHP die ganezn Ausgaben zurückhalten und erst am Schluss ausgeben. Dazu beginnst du deine Seite mit ob_start() und kannst dann nach deiner Zeile 112 mit ob_end_flush() alles angestaute ausgeben und weiterfahren. Wenn in diesem bereich ein Header gesendet wird, so wird der flush unterbrochen. Somit hat der header() priorität.

So sollte deine Datei dann etwa aussehen
PHP:
<?php ob_start(); ?>
<html>
  <header>....</header>
  <body>
    irgendwas
<?php
  if($_GET['a'] == 'a'){
    header("Location: WebSite.php"); 
  }
  ob_end_flush();
?>
    weiteres Zeugs
  </body>
</html>
 
Danke Yaslaw...

...das sieht gut aus, klingt verständlich, und nachvollziehbar... dann geh' ich dadoch nochmal dran. Das schaffe ich wahrscheinlich noch vor Ostern ;-)
 
Zurück