Section includen

PHP:
<?php

if( !empty( $_GET[ id ] ) && empty( $_GET[ section ] ) )
{
 if( !file_exists( $_GET[ id ] .'.php' ) )
 die( '<b>Error</b><br>Diese Datei konnte nicht gefunden werden!');
 include( $_GET[ id ] .'.php' );
}
elseif( !empty( $_GET[ id ] ) && !empty( $_GET[ section ] ) )
{
 if( !file_exists( $_GET[ id ] .'/'. $_GET[ section ] .'.php'  ) )
 die( '<b>Error</b><br>Diese Datei konnte nicht gefunden werden!');
 include(  $_GET[ id ] .'/'. $_GET[ section ] .'.php' );
}
else
{
die( '<b>Error</b><br>Diese Datei konnte nicht gefunden werden!' );
}

?>

Frage: Wie macht man das, dass wenn die datei nicht gefunden wird, dass dan nicht die Fehlermeldung da steht, sondern einfach error.php included wird?
so gehts ja nicht: die( include('error.php'));


Ich habe mir das jetzt anders überlegt:
Ich möchte es doch so: index.php?section=veranstaltung&id=00001
also, dass zuerst section und dann id kommt!


1 Verstehe ich jedoch nicht.
Wiso geht nur

index.php?id=veranstaltung&section=0001
und nicht so:

index.php?id=home&section=0001

es ist eh in Ordnung, aber das würde mich interresieren (da ich ja gerade PHP lerne ;-)
 
Probier mal Folgendes:
PHP:
<?php

	$filepath = 'error';
	if( !empty($_GET['id']) ) {
		$filepath = basename($_GET['id']);
	}
	if( !empty($_GET['section']) ) {
		$filepath .= '/'.basename($_GET['section']);
	}
	if( !file_exists($filepath.'.php') ) {
		$filepath = 'error';
	}
	if( $filepath = 'error' ) {
		header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true);
	}
	include($filepath.'.php');

?>
 
Also, damit "error.php" nicht sofort aufgerufen wird,
hier eine erweiterte Version die das verhindert.


PHP:
<?php     
    if(isset($_GET['id']) || isset($_GET['id']) && isset($_GET['section'])){
    $filepath = 'error';
    if( !empty($_GET['id']) ) {
        $filepath = basename($_GET['id']);
    }
    if( !empty($_GET['section']) ) {
        $filepath .= '/'.basename($_GET['section']);
    }
    if( !file_exists($filepath.'.php') ) {
        $filepath = 'error';
    }
    if( $filepath = 'error' ) {
        header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true);
    }
    include($filepath.'.php');
    } 
?>
 
PHP:
<?php     
    if(isset($_GET['section']) || isset($_GET['section']) && isset($_GET['id'])){
    $filepath = 'error';
    if( !empty($_GET['section']) ) {
        $filepath = basename($_GET['section']);
    }
    if( !empty($_GET['id']) ) {
        $filepath .= '/'.basename($_GET['id']);
    }
    if( !file_exists($filepath.'.php') ) {
        $filepath = 'error';
    }
    if( $filepath = 'error' ) {
        header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true);
    }
    include($filepath.'.php');
    } 
?>

hab das jetzt mal geändert, dass zuerst section=xx
und dann &id=xxxx
aber das ist eh unwichtig.

Es funkt immer noch nicht.

Es wird immer nur noch error.php included!
 
PHP:
    if( $filepath = 'error' ) { 
        header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true); 
    }

Müsste doch eigentlich heißen:

PHP:
    if( $filepath == 'error' ) { 
        header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true); 
    }

MfG

DanielL
 
Zuletzt bearbeitet:
Zurück