Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Kleines Problem mit header LOCATION

Frage Entwicklung PHP

Mitglied: DeeDee0815

DeeDee0815 (Level 1) - Jetzt verbinden

19.01.2006, aktualisiert 23.01.2006, 6185 Aufrufe, 11 Kommentare

Ich möchte auf meiner Seite dafür sorgen, dass wenn man die index.php aufruft automatisch zur index.php?section=startpage weitergeleitet wird. Hier gibt es ein kleines Problem, da der HEADEr schon gesendet wurde...

Hallo,

Ich habe auf meiner Homepage in der index.php folgende Schleifen:

<font class="code"> if(isset($_GET['section'])) {

switch($_GET['section']) {

case "startpage":
include "sections/startpage.php";
break;

case "article":
include "sections/article.php";
break;

case "feature":
include "sections/feature.php";
break;

case "download":
include "sections/download.php";
break;

case "board":
include "sections/board.php";
break;

case "link":
include "sections/link.php";
break;

case "feedback":
include "sections/feedback.php";
break;

case "impress":
include "sections/impress.php";
break;

case "disclaimer":
include "sections/disclaimer.php";
break;

default:
include "sections/error.php";
break;
}

} else {

include "sections/startpage.php";

}</font>

ELSE-Teil unten soll den folgenden Befehl enthalten:

<font class="code">header("LOCATION: index.php?section=startpage");</font>

Was ich bisher gemacht habe, ruf zwar dieselbe Seite auf, ich finde es aber doof wenn in der Adresszeile dann nur 'index.php' steht, und nicht 'index.php?section=startpage".

Was das problem ist, wei� ich schon: Oben in der Datei werden schon einige "ECHOS" gemacht, so ist die Header-Info nicht mehr änderbar, bzw. schon gesendet, bevor PHP "wei�", das diese eingentlich modifiziert werden soll.

Wie kann ich dieses Problemchen beheben?

GruÃ?
DeeDee0815
Mitglied: DeeDee0815
19.01.2006 um 19:26 Uhr
Also ich denke nicht, dass es meine aufgabe ist Umlaute selber in '&auml;' etc. umzuwandeln. Ich denke hier sollten mal die Programmierer dieser Seite etwas entspechendes einbauen. Ich denke es handelt sich um einen temporären Fehler, das war voher auch nicht so.

Gruß
DeeDee0815
Bitte warten ..
Mitglied: filippg
19.01.2006 um 19:48 Uhr
Hallo,

du kannst PHP anweisen, die erzeugten Daten nicht gleich zu senden, sondern erst am Ende des Skripts oder bei einem entsprechenden Befehl. Ergebnis: die Header werden noch nicht gesendet und du kannst sie noch modifizieren. Wie der Befehl heisst weiss ich aus dem Stehgreif auch nicht, aber du wirst ihn in der PHP-Doku sicherlich finden.
Aber ich würde mich gegen die Weiterleitung entscheiden, das braucht ja nur nochmal zusäztliche Zeit.

Filipp
Bitte warten ..
Mitglied: badrulecracker
19.01.2006 um 19:49 Uhr
Hi,

also da gibt es den Weg über das Apache Addon mod rewrite.
Infos: www.modrewrite.de

dein .htaccess file müsste glaube ich etwa so aussehen:

RewriteEngine on
RewriteRule index.php$ index.php?section=startpage


Kleiner Tip für den Programmierstiel:
Mach es doch so, nicht über eine normale switch anweisung, sondern mach ein array mit den dateien als inhalt:

$section = array();
$section['startpage'] = 'sections/startpage.php';
$section['article'] = 'sections/article.php';
$section['feature'] = 'sections/feature.php';

und dann wo du momentan die switch anweisung hast machst du etwa folgendes:

if(isset($_GET['section']) AND isset($section[$_GET['section']]))
{
include $section[$_GET['section']];
}
else
{
include $section['startpage'];
}

Somit brauchst du nur noch für jede weitere Section die du machst einen Eintrag im Array erstellen und nicht mehr im code herumändern...

Ach, übrigens: das ist keine schleife, sondern eine Switch anweisung ;)

Mit freundlichen Grüßen, brc
Bitte warten ..
Mitglied: Dani
19.01.2006 um 21:06 Uhr
Warum so kompliziert??

du könntest dies doch so machen:

if(isset($_GET['section']))
{
$modul=$_GET['section'];

include ("sections/".$modul.".php");
}
else
{
include ('sections/startpage.php');
}

So würde ich das machen!!!
Bitte warten ..
Mitglied: DeeDee0815
20.01.2006 um 17:18 Uhr
Danke für den Tipp. Aber das löst leider das Problem nicht.
Bitte warten ..
Mitglied: Dani
20.01.2006 um 17:22 Uhr
Wo sendest du den Header noch??
Bitte warten ..
Mitglied: filippg
20.01.2006 um 17:25 Uhr
Kopie aus der offiziellen PHP-Hilfe (nur die eckigen Klammern sind in wirklichkeit spitz):

Beachten Sie, dass header() aufgerufen werden muss, bevor eine Ausgabe gesendet wurde, egal ob normale HTML Tags, leere Zeilen in einer Datei oder von PHP. Ein weit verbreiteter Fehler ist mittels include(), require(), oder anderen Dateizugriffsmethoden Code zu lesen, und so unbewusst Leerzeichen oder Leerzeilen auszugeben, bevor header() aufgerufen wird. Das gleiche Problem besteht auch bei Verwendung einer einzigen PHP/HTML Datei.


[html]
[?php]
Dies funktioniert nicht. Beachten Sie die
obige Ausgabe noch vor dem header()-Aufruf
header('Location: http://www.example.com/');
?]


Anmerkung: In PHP 4 können Sie dieses Problem umgehen, indem Sie Output Buffering benutzen (mit dem Overhead, dass alle Ihre Ausgaben an den Browser gepuffert werden, bis Sie diese Senden). Um dies zu tun, verwenden Sie in Ihrem Skript ob_start() und ob_end_flush(), oder setzten die Konfigurationsdirektive output_buffering in der php.ini bzw. in den Server Konfigurationsdateien.
Hast du ob_start() mal ausprobiert?

Filipp
Bitte warten ..
Mitglied: DeeDee0815
20.01.2006 um 17:30 Uhr
Danke für die Hilfe. Ob die Weiterleitung nun Zeit kostet oder nicht. Sowas mache ich ja nicht ständig. Und außerdem würde es kaum auffallen. Meine domain verweist ohnehin auf den Parameter. So kostet die Weiterleitung nur die Zeit, die der "Domanserver" benötigt.

EDIT: Ich habe meine Meinung geändert. Vielleicht ist es doch besser keine Weiterleitung zu machen. Denn wer achtet schon auf die Adressleiste....

Gruß
DeeDee0815
Bitte warten ..
Mitglied: Dani
20.01.2006 um 17:33 Uhr
Geht das bei PHP 5 auch??
Bitte warten ..
Mitglied: filippg
20.01.2006 um 17:37 Uhr
Geht das bei PHP 5 auch??
Keine Ahnung, ich habe hier gerade nur die 4er Doku. Und in die Onlinedoku schauen kannst nun wirklich auch selber.

Filipp
Bitte warten ..
Mitglied: DeeDee0815
23.01.2006 um 19:17 Uhr
Ja es geht! Vielen Dank für eure Hilfe.

Gruß
DeeDee0815
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Multimedia & Zubehör
BENQ Beamer Fernbedingung Frequenz Problem (2)

Frage von xbast1x zum Thema Multimedia & Zubehör ...

Windows Server
Google Chrome Web Store Problem auf Terminal Farm

Frage von dakoerry zum Thema Windows Server ...

Multimedia & Zubehör
gelöst Problem: DVI zu VGA (8)

Frage von Protected zum Thema Multimedia & Zubehör ...

Windows Server
Problem bei Zertifikatsverlängerung auf SBS2008 (2)

Frage von Firewire zum Thema Windows Server ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...