php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Seitenafruf mit switch und case


 
Mistert77
09-11-2005, 17:20 
 
habe folgenden code hier im Forum gefunden:

//Prüfen des Startwerts
if (!isset ($_GET["page"]))
$page = "home";
else
$page = $_GET["page"];

// header and stuff

//def. aller seiten - inlcudes
switch ($page)
{
case "home":
include ("home.php");
break;

case "links";
include ("links.php");
break;

//usw


//für falsche Parameter bzw. default
default:
include ("not_found.php");
break;
}

wenn ich meine Seite so programmiert habe, dass ich sie mit den Links:

index.php?cat=main&site=home
index.php?cat=main&site=info
etc

wie löse ich das Problem dass keiner die Unterseiten über den "richtigen" Pfad aufrufen kann?
d.h. die Seite index.php?cat=main&site=home
also die inlcude Seite liegt in www.domain.de/main/home.php

wenn ein User jetzt diesen Pfad eingibt kommt er drauf.... ohne aber "aussenherum" das!

 
Hazzardous
09-11-2005, 17:28 
 
Umleitung mit header()?

 
onemorenerd
09-11-2005, 17:34 
 
htaccess?
Außerhalb des DocRoot legen?

 
Mistert77
09-11-2005, 17:39 
 
das mit header() hab ich schon versucht

dann bekomme ich die Fehlermeldung:

header is already sent.....

 
Hazzardous
09-11-2005, 17:50 
 
Original geschrieben von Mistert77
das mit header() hab ich schon versucht

dann bekomme ich die Fehlermeldung:

header is already sent.....

header vor allem anderen.

 
Mistert77
09-11-2005, 21:22 
 
hab alle Leerzeichen weg... funzt trotzdem noch nicht...

Ich hab hier mal meine Beispiele

also meine index.php sieht so aus:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Homepage</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel=stylesheet href='inc/style.css' type=text/css>
<script language="JavaScript">
paar zeilen java...
</script>
</head>
<?php
if (!isset ($_GET["cat"]))
$cat = "main";//Startwert
if (!isset ($_GET["site"]))
$site = "start";//Startwert
?>
<body bgcolor="#FF0000">

etc...


meine Seite home.php sieht so aus:


<?php
if (($_GET["cat"] == main) AND ($_GET["site"] == home))
{
?>

Inhalt der Seite

<?php
}
else
{
header("Location:index.php?cat=main&site=home");
exit;
}
?>

 
onemorenerd
10-11-2005, 00:31 
 
Wenn sich hinter "etc." in der index.php das switch verbirgt, brauchst du dich nicht wundern. Denn dann wird die home.php irgendwo dort mitten in der index.php includiert. Zuvor gibst du aber schon Teile der index.php aus.

Es ist nicht nur wichtig, dass in der Datei, die header() nutzt, keine Ausgabe bis dahin erfolgt, sondern falls diese Datei ein Include ist, darf auch in der 'Mutterdatei' noch keine Ausgabe erfolgt sein!
Includes werden Teil des Datenstroms, der letztlich als Website beim User ankommt. Dieser Strom darf noch nicht begonnen haben, sonst ... *zonk*.

 
stekoe2000
10-11-2005, 07:35 
 
Original geschrieben von Mistert77
hab alle Leerzeichen weg... funzt trotzdem noch nicht...

Ich hab hier mal meine Beispiele

also meine index.php sieht so aus:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Homepage</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel=stylesheet href='inc/style.css' type=text/css>
<script language="JavaScript">
paar zeilen java...
</script>
</head>
<?php
if (!isset ($_GET["cat"]))
$cat = "main";//Startwert
if (!isset ($_GET["site"]))
$site = "start";//Startwert
?>
<body bgcolor="#FF0000">

etc...


meine Seite home.php sieht so aus:


<?php
if (($_GET["cat"] == main) AND ($_GET["site"] == home))
{
?>

Inhalt der Seite

<?php
}
else
{
header("Location:index.php?cat=main&site=home");
exit;
}
?>


If Abfrage umdrehen?


<?php
if (($_GET["cat"] != main) AND ($_GET["site"] != home))
{
header("Location:index.php?cat=main&site=home");
exit;

}
else
{
?>
Inhalt
<?
}
?>


Abgesehen davon kann man trotzdem noch von aussen auf dieDatei so zugreifen...

 
Hazzardous
10-11-2005, 09:22 
 
header vor allem anderen hast du nicht erfüllt.

 
Mistert77
11-11-2005, 12:17 
 
ich blick grad nicht durch....

könnte mir jemand mal aufzeigen wie index.php und home.php auszusehen hat, wo die includes hinmüssen...

wäre sehr nett....

:)

-archiv-

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:53 Uhr.