Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 6258 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 ;)

mfg, 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 ..
Ähnliche Inhalte
Outlook & Mail
gelöst Outlook 365 - Header (von - an.) bei Ausdruck plötzlich sehr klein (2)

Frage von mandragora zum Thema Outlook & Mail ...

Blogs
Jimdo Stockholm Header (5)

Frage von LeniundPaul zum Thema Blogs ...

iOS
Frage zu Mail Header (8)

Frage von rocco61 zum Thema iOS ...

Windows Server
Access 2013 - Trusted Location in Registry verteilen (4)

Frage von Henere zum Thema Windows Server ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Windows 10
Windows 10 Fall Creators Update Fehler (14)

Frage von ZeroCool23 zum Thema Windows 10 ...

Windows Server
Frage zu Server Rack (9)

Frage von rainergugus zum Thema Windows Server ...