[PHP] Problem mit Unterverzeichnis

02/25/2014 10:22 mastermo#1
Guten Tag Leute,

ich habe folgendes Problem: ich möchte eine Seite auf folgender Weise wiedergeben, aber er will einfach kein Unterverzeichnis nehmen.

So funktioniert es:

PHP Code:
<?php
    
if ($_GET['site'] == "music.php")
    {
        
$included_page_title Music;
    }    
?>

So funktioniert es nicht:
PHP Code:
<?php    
    
if ($_GET['site'] == " /contents/music.php")
    {
        
$included_page_title Music;
    }    
?>
Hätte jemand für mich einen Lösungsvorschlag?


Gruß

Mo
02/25/2014 10:30 Requi#2
echo mal die Value vom GET.
Vielleicht sieht es anders aus.
02/25/2014 10:33 mastermo#3
Könntest du mir nen Beispiel von meinem schreiben? Bin noch nicht so fit im Umgang mit php :)
02/25/2014 10:41 Kentika#4
Mach das ganze mal anders. Benutz Switch-Case

PHP Code:
<?php

   
if(!isset($_GET['site']) || empty($_GET['site']))
   {
     
header('location: index.php?site=home');
     exit();
   }

   switch(
$_GET['site'])
   {
      case 
"home":
                 include 
'path_to_home_page';
      break;
      case 
"music":
                 include 
'path_to_music_page';
      break;
      default:
                 include 
'path_to_error_page';
      break;
   }

?>
Wenn folgendes bspw. aufgerufen wird: [Only registered and activated users can see links. Click Here To Register...] included er die Startseite, so auch bei music, wird jetzt aber etwas included was nicht vorhanden ist, springt er zum default case und included die error page.

Wenn ich dein Problem jetzt richtig interpretiert habe.
02/25/2014 10:41 MrPuschel#5
Du musst Parameter mit Steuerzeichen escapen. Dann kannst du beliebige Zeichenketten per Parameter übergeben ohne das es dir die Inhalte auf der Zielseite zerreist.

Das machst du über diese beiden Funktionen:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Es ist einfach, schau in die Kommentare für Anwendungsbeispiele. Kentikas Lösung funktioniert auch, ich empfehle dir aber trotzdem dich mal mit url encode und decode auseinanderzusetzen.
02/25/2014 10:49 mastermo#6
@Kentika: sieht soweit ganz gut aus, aber ich nutze noch folgendes dazu womit ich u.a. den Titel direkt mit einpflege.

PHP Code:
<?php
if (isset($_GET['site'])){if (file_exists($_GET['site'].".php")) include $_GET['site'].".php"; else include "404.php";}else{header('Location: ./index.php?site=home');}
?>

@MrPuschel: Ich fuchse mich da mal rein, in der Hoffnung damit nen Unterverzeichnis reinzukriegen. Wenn alle Contents im Hauptverzeichnis bleiben habe ich hinterher tausend contentfiles im Hauptverzeichnis und blicke auf dem ftp garnicht mehr durch :)
02/25/2014 16:01 BlackTrader#7
@mastermo
Ich denke das zweite wird wie "/contents/music.php" interpretiert, also
rootverzeichnis des systems dann der ordner contents und dann die datei music.php
teste mal ./ statt / am anfang
02/25/2014 16:36 mastermo#8
Hmm ne funktioniert nicht :(

Der eingesetzte Code:

Quote:
PHP Code:
<?php

if (isset($_GET['site']))
{
    if (
$_GET['site'] == "404")
    {
        
$included_page_title $pagetitle;
    }
    if (
$_GET['site'] == "home")
    {
        
$included_page_title Home;
    }
    if (
$_GET['site'] == "news")
    {
        
$included_page_title News;
    }
}
?>
PHP Code:
<?php
if (isset($_GET['site'])){if (file_exists($_GET['site'].".php")) include $_GET['site'].".php"; else include "404.php";}else{header('Location: ./index.php?site=home');}
?>
Im ersten Teil wird quasi der Dateiname gesucht und im zweiten geprüft obs da ist und wenn ja nen .php angefügt womit er dann die Seite lädt. Wenn ich jetzt "./contents/news.php" drin habe, dann habe ich am Ende "./contents/news.php.php" und die ist natürlich nicht da => 404.php wird ausgelöst.


Irgendwie muss ich dem beibringen, dass der /Unterverzeichnis/Dateiname im ersten Codeteil annimmt, ohne es als zweites Unterverzeichnis oder so zu interpretieren :)

Bin etwas ratlos
02/25/2014 18:07 MrPuschel#9
Quote:
Irgendwie muss ich dem beibringen, dass der /Unterverzeichnis/Dateiname im ersten Codeteil annimmt, ohne es als zweites Unterverzeichnis oder so zu interpretieren
Ich habe dir die zwei Methoden gepostet mit denen du das hinkriegst.