Weiterleitung in php
-
Es schaut derzeit so aus das ich in einen Member-Only bereich komme. Dieser
ist auch wunderbar gesichert. Nun kommt als erstes in den Internen Bereich
die Auswahl der Sprache. Diese wird durch Checkboxen ausgewählt. Als nächstes
werte ich die aus und hole mir eine language ID diese will ich dann per GET
halt immer weiter auf meine Homepage trage.Ich wollte die Weiterleitung dann so machen:
$url = "http://".$_SERVER['HTTP_HOST']."/root/index.php?id=2&language=".$link[0].""; header("Location: $url");
leider bekomme ich dann diese Meldung.
Warning: Cannot modify header information - headers already sent by (output started at C:\Apache2\htdocs\root\index.php:11) in C:\Apache2\htdocs\root\language.php on line 74
-------------------
ich komme von der Datei index.php die so ausschaut:<?php ob_start(); session_start(); include('include/header.inc.php'); include('../include/count.inc.php'); include('../include/db.connect.inc.php'); $connect = new connect_database(); $sites = ARRAY(1=> 'language', 2=> 'company', 3=> 'products', 4=> '**', 5=> '**', 6=> '**', 7=> 'language' ); $siteIndex = (array_key_exists($_GET['id'],$sites)) ? $_GET['id']:1; include($sites[$siteIndex].'.php'); ob_end_flush(); ?>
Da ich zum ersten mal in diese datei reinkomme und noch keine GET parameter habe
werde ich auf die Seite language weitergeleitet was auch richtig ist.
hier wähle ich auch welche language ich haben will und dann möchte ich wieder zurück auf das index.php geleitet werden blos das
ich dann die GET paramter habe: "index.php?id=2&language=1" oder was auch immer !jemand dafür eine idee !?
-------------------Na ja nun meine Frage wie leite ich das am besten auf die Seite index.php ohne die GET Variablen zu vernachlässigen.
Gruß
zyon
-
zyon schrieb:
Warning: Cannot modify header information - headers already sent by (output started at C:\Apache2\htdocs\root\index.php:11) in C:\Apache2\htdocs\root\language.php on line 74
Du erhälst diesen Fehler trotz ob_start()? Hast du mal probiert, dir sämtliche Fehler ausgeben zu lassen?
ini_set ('display_errors', 1); error_reporting (E_ALL);
Wieso möchtest du die Sprache per GET übergeben, wenn du ohnehin Sessions verwendest?
Und warum codet ihr immer so umständlich? :p
$url = "http://".$_SERVER['HTTP_HOST']."/root/index.php?id=2&language=".$link[0].""; header("Location: $url");
=>
header ("Location: /root/index.php?id=2&language=$link[0]");
-
Neku schrieb:
Und warum codet ihr immer so umständlich? :p
$url = "http://".$_SERVER['HTTP_HOST']."/root/index.php?id=2&language=".$link[0].""; header("Location: $url");
=>
header ("Location: /root/index.php?id=2&language=$link[0]");
PHP-Doku schrieb:
Anmerkung: HTTP/1.1 verlangt einen absoluten URI inklusive dem Schema, Hostnamen und absoluten Pfad als Argument von Location:, aber manche Clients akzeptieren auch relative URIs.
-
Danke für den Hinweis wegen HTTP/1.1.
Wenn ich mich recht erinnere, war HTTP_HOST nur unter Apache verfügbar. Aber das ist Jahre her, bin da nicht ganz auf dem Laufenden.
HTTP_HOST ist dagegen nicht verfügbar, wenn der Client kein "Host: ..." gesendet hat.$host = isset ($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_ADDR']; header ("Location: http://$host/root/index.php?id=2&language=$link[0]");
(grundsätzlich sollte man sich aber auf keine der $_SERVER-Variablen verlassen)