Weiterleitung

LoMo

Erfahrenes Mitglied
Ich hab ein Problem und zwar möchte ich am Ende einer Funktion in eine andere html Datei springen. Weiss jemand wie das geht ?

mfg lomo
 
Bei mir bringt er folgenden Fehler wenn ich den header sende:

Code:
Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\Apache Group\Apache2\htdocs\www2\Praesentationsseite.php:19) in C:\Programme\Apache Group\Apache2\htdocs\www2\Praesentationsseite.php on line 33

Hier der Code meiner Page:

PHP:
<?php
	function datenbank_verbinden($username,$password,$database)
	{
		$connection = mysql_connect("localhost",$username,$password);
		
		if ($connection)
		{
			// Erfolgreich mit Server verbunden
			mysql_select_db($database,$connection); // Wählt eine Datenbank aus
		}
		else
		{
			echo "Konnte keine Verbindung zur Datenbank herstellen";
		}
		return $connection;
	}
?>

<?
	function praesentationsseite_1($objekt)
	{
	
	}
	
	function praesentationsseite_2($objekt)
	{
	
	}
	
	function praesentationsseite_3($objekt)
	{
		echo $objekt->SeitenArt3_Pfad;
		header("Location: ".$objekt->SeitenArt3_Pfad.""); // HIER KOMMT DER FEHLER 
	}
?>
<? 
	$db = datenbank_verbinden("xxx","xxx","xxx");
	$query = 'select * from praesentationsseite where NR like '.$_GET['s'].'';
	$rs = mysql_query($query,$db);

	if (mysql_num_rows($rs) > 0)
	{
		$objekt = mysql_fetch_object($rs);
		
		switch ($objekt->SeitenArt)
		{
			case 0:
			break;
			case 1:
				praesentationsseite_1($objekt);
			break;
			case 2:
				praesentationsseite_2($objekt);
			break;
			case 3:
				praesentationsseite_3($objekt);
			break;
		}
		mysql_close($db);
	}
	else
	{
		mysql_close($db);
		exit();
	}
?>

Weiss jemand wo hier der Fehler liegt oder wie ich das berichtigen könnte ?

Ps. Wenn ich schon mal dabei bin gibt es irgend einen Befehl bzw. Funktion mit der man des Programm einfach von da an wo es steht beenden kann ? des exit() haut irgendwie nicht so hin.

mfg lomo
 
Zuletzt bearbeitet:
Setz mal an den Anfang ob_start(); und an's Ende ob_end_flush();

By the way, das Thema wurde schon 2,734 Millionen mal behandelt und die Suchfunktion haette Dir sich ein paar tausend Threads zeigen koennen warum das passiert und was man da alles gegen tun kann.
 
Ja ich weiss schon hab aber nix auf meinen Fall entsprechend gefunden. Bei mir ist das Problem, dass ich erst Infos aus einer Datenbank hohlen muss und dann kann ich erst den header senden.

Viele sagen, dass man davor keine Variablen setzen darf und das er immer gleich am Anfang stehen muss aber wie realisiert man dann z.B. ein Loginscript wenn man weder was setzen darf noch mitten im Code benutzen darf ?

Ich bräuchte einen Lösungsvorschlag speziell für den obigen Code. Nicht für die allgemeine Benutzung von headern!

Hat jemand vielleicht einen Vorschlag ? Es muss nicht unbedingt mit header sein vielleicht gibt es ja einen anderen Lösungsweg.

Ps. geht trotz ob_start(); uws...... nicht.

mfg lomo
 
Includest Du das Script?
Dann musst du ob_start() an den Anfang des includenden Scripts setzen.
Es darf vor header() nichts an den Browser gesendet werden.
Du kannst ruhig Variablen setzen, aber es darf nichts an den Browser gehen.
Nichtmal <html> oder auch nur ein Space.
 
Ne is nicht included es wird in ein Frameset geladen.

Ich mach eigentlich keine Ausgabe vor dem senden des Headers. gmmml

Hier mal der aktuelle a bisl ausgebesserte Code:
PHP:
<?php
	function datenbank_verbinden($username,$password,$database)
	{
		$connection = mysql_connect("localhost",$username,$password);
		
		if ($connection)
		{
			// Erfolgreich mit Server verbunden
			mysql_select_db($database,$connection); // Wählt eine Datenbank aus
		}
		else
		{
			echo "Konnte keine Verbindung zur Datenbank herstellen";
		}
		return $connection;
	}
?>

<?
	function praesentationsseite_1($objekt)
	{
	
	}
	
	function praesentationsseite_2($objekt)
	{
	
	}
	
	function praesentationsseite_3($objekt)
	{
		header("Location: ".$objekt->SeitenArt3_Pfad."");
	}
?>
<? 
	ob_start();
	$db = datenbank_verbinden("xxx","xxx","xxx");
	$query = 'select * from praesentationsseite where Index like '.$_GET['s'].'';
	$rs = mysql_query($query,$db);

	if (mysql_num_rows($rs) > 0)
	{
		$objekt = mysql_fetch_object($rs);
		
		switch ($objekt->SeitenArt)
		{
			case 0:
			break;
			case 1:
				praesentationsseite_1($objekt);
			break;
			case 2:
				praesentationsseite_2($objekt);
			break;
			case 3:
				praesentationsseite_3($objekt);
			break;
		}
		mysql_close($db);
	}
	else
	{
		mysql_close($db);
		exit();
	}
	ob_end_flush();
?>
 
Juhu es geht wenn ich den Code so aufbau:

PHP:
<?php
	
	ob_start();
	$db = datenbank_verbinden("xxx","xxx","xxx");
	$query = 'select * from praesentationsseite where Index like '.$_GET['s'].'';
	$rs = mysql_query($query,$db);

	if (mysql_num_rows($rs) > 0)
	{
		$objekt = mysql_fetch_object($rs);
		
		switch ($objekt->SeitenArt)
		{
			case 0:
			break;
			case 1:
				praesentationsseite_1($objekt);
			break;
			case 2:
				praesentationsseite_2($objekt);
			break;
			case 3:
				praesentationsseite_3($objekt);
			break;
		}
		mysql_close($db);
	}
	else
	{
		mysql_close($db);
		exit();
	}
	
	ob_end_flush();
	
	
	// Funktionen
	function datenbank_verbinden($username,$password,$database)
	{
		$connection = mysql_connect("localhost",$username,$password);
		
		if ($connection)
		{
			// Erfolgreich mit Server verbunden
			mysql_select_db($database,$connection); // Wählt eine Datenbank aus
		}
		else
		{
			echo "Konnte keine Verbindung zur Datenbank herstellen";
		}
		return $connection;
	}
	function praesentationsseite_1($objekt)
	{
	
	}
	
	function praesentationsseite_2($objekt)
	{
	
	}
	
	function praesentationsseite_3($objekt)
	{
		header("Location: ".$objekt->SeitenArt3_Pfad.""); //$objekt->SeitenArt3_Pfad = /test/seite/1202_index.html
	}

?>

aber er kann die Seite nicht finden. Bei der Pfadangabe habe ich "/test/seite/1202_index.html" (Der Pfad ist korrekt und die Datei ist vorhanden und alles richtig geschrieben [geht aber nicht]) muss man da denn vollen Pfad angeben oder vom root Verzeichniss aus ?

mfg lomo
 
Zuletzt bearbeitet:
Zurück