You are not logged in.

  • Login

1

Thursday, September 20th 2007, 12:56pm

Dynamischer PHP Include

Hallo,

bisher habe ich diesen Code:

PHP Quellcode

1
2
3
4
5
<?php 
                           if (!isset($_GET['site'])) { $_GET['site']="news"; } 
                             if (file_exists($_GET['site'].".php")) { include($_GET['site'].".php"); } else { echo " 
                               <b><center>Noch nicht implementiert</center></b> ";  } 
                                 ?>

Verwendet jedoch beinaltet er Sicherheitslücken und da es heist "index.php?go=asd" kommt es Teilweise zu Problemen mit Gästebüchern ETC.

Kann mir jemand dazu eine Alternative anbieten damit ich genauso auf dem selben Effekt komm?

Ziel:
Einbinden anderer Seiten in den (Inhalte) in den Content.

MfG

2

Thursday, September 20th 2007, 1:52pm

Hast du eine Bootstrap datei? Wie ist deine Ordner Struktur?

eine möglichkeit ist du schützt deine applicationen mit .htaccess [deny from all]

Und baust in deine Bootstrap folgendes ein.

PHP Quellcode

1
2
3
4
5
6
7
switch (true) {
case empty($_GET['modul']):
require_once('default/view/home.php');
break;
default:
require_once('default/view/home.php');
}


Du musst halt genau abfangen was übergeben werden darf und was nicht, bei der methode ist es so wenn irgend ein klump übergeben wird greift default; ein und hohlt sich die entsprechende Content datei.

Wenn du das strikt auf Module aufbauen willst und sauber trennen willst, rate ich dir zu einem Framework, das macht das ganze einfacher...

3

Thursday, September 20th 2007, 7:09pm

Sry bin ned so erfahren ^^ was is eine Bootstrap Datei?

4

Thursday, September 20th 2007, 7:14pm

Unter einer Bootstrap Datei versteht man eine Datei, welche die Auslieferung der gesamten Website erledigt. Bei einer MVC-Anwendung (Model-View-Controller) sollte dies in der Regel die einzige ausführbare PHP Datei im öffentlichen Verzeichnis des Projektes sein. Durch das Aktivieren der RewriteEngine vom Apache Webserver haben wir sichergestellt, dass alle Anfragen an den Webserver auf diese Bootstrap Datei umgeleitet wird.

Quelle: http://www.ralfeggert.de/2006/08/28/syst…asse/#bootstrap

5

Thursday, September 20th 2007, 7:17pm

UNd nun so ein Inlcude wie ich möchte xD ^^

6

Thursday, September 20th 2007, 7:20pm

Habe ich dir doch oben schon geschrieben in meinem Code-Beispiel... Da steht genau wie man Dynamisch Content includiert und wie eine kleine Außnahmebehandlung.

7

Thursday, September 20th 2007, 7:38pm

Bei deinen wer es jetzt so ?modul=blub

und standart home und wenn nix da is default also home.. oda?

8

Thursday, September 20th 2007, 7:48pm

Richtig, das default tritt dann in kraft wenn keine der case segmente erfüllt ist.

9

Thursday, September 20th 2007, 8:56pm

Jetzt habe ich aber das selbe Problem wie vorher. Wenn ich jetzt zum Beispiel eine Datei namens gb erstellen würde.

In der nur:

PHP Quellcode

1
<?php include('gb/'); ?>


Dann wird das gb in die datei gb.php includet jedoch kommt es dann zuu einen Konflikt mit dem Include Script der page denn bei den meisten GB´s is es so das es nach den selben system arbeiten sprich ?...=....

10

Thursday, September 20th 2007, 9:02pm

Problem ist doch viel eher, dass die Links wieder ganz anders lauten.

Wenn dein Problem nur die includes sind, die nicht funktionieren, weil sie in einem anderen Ordner liegen, kannst du chdir benutzen.

11

Friday, September 21st 2007, 10:01am

Mmh sag das doch , das du ein verlinkungs Problem hast.

D0nut hat dir schon einen Lösungsvorschlag gegeben. Da ich chdir nicht mag, bevorzugere ich eine etwas elegantere Methode :)

PHP Quellcode

1
2
3
4
5
6
7
8
9
date_default_timezone_set('Europe/Berlin');
set_include_path('.' . PATH_SEPARATOR . '../library'
	 . PATH_SEPARATOR . '../application/'
	 . PATH_SEPARATOR . '../application/default/controllers/plugins/'
	 . PATH_SEPARATOR . '../application/default/models/'
	  . PATH_SEPARATOR . '../application/produkte/models/'
	  . PATH_SEPARATOR . '../application/mynoro/models/'
	   . PATH_SEPARATOR . '../application/cms/models/'
     . PATH_SEPARATOR . get_include_path());


Ist im endefekt fast das gleiche :) kannst dir quasi eine aussuchen.

12

Friday, September 21st 2007, 10:34am

Bei Donuts Art wer es doch so das wenn ich meine gb.php hätte

Könnte ich in die reinschreiben

PHP Quellcode

1
2
3
4
<?php
 chdir('gb');
include('index.php'); 
 ?>


Jetzt sollte ich in der Verzeichnis gb sein und include die index.php. Aber im endeffekt include ich ja die gb.php wieder in meiner index über ?modul=gb und somit müsste es doch wieder zu einem Konflikt mit meinem ?modul=.... kommen! Da manche auch über dieses Art von Include laufen bsp. Triggers TG V.1! Würde damit in Konflikt kommen!

13

Friday, September 21st 2007, 10:46am

Wie gesagt: chdir, includepath, ... haben rein gar nichts damit zu tun, dass die Links umgeschrieben werden.
Dazu brauchst du größere Geschütze.

Entweder du änderst die Ausgabe indem du alles mit ob_start und ob_get_contents in einen Puffer schreibst und mit einem regulären Ausdruck die Links änderst.
Oder änderst die Verarbeitung indem du per mod_rewrite alles über eine zentrale PHP Datei auswertest.

14

Friday, September 21st 2007, 11:28am

Wenn du das wie D0nut vorgeschlagen hast über eine zentrale datei laufen lässt, sind wir wieder beim thema Bootstrapping!! Dann kannst du wunderbar in der datei mit set_include_path() sagen wo deine Files liegen und kannst das alles mit switch & case abfragen, was oben schon alles steht wie man das macht.

15

Tuesday, September 25th 2007, 9:56pm

Hallo hier ist mal mein Problem

http://alg.tut-base.net/skydive/index.php?site=gb -> dies sollte nun die gallerie in dem ordner aufn space -> http://alg.tut-base.net/gallerieco <--- diese Gallerie möchte ich mit PHP includen habt ihr ne idee? so dass auch die css usw includet wird?

MfG
Nick

16

Wednesday, September 26th 2007, 10:08am

include ist da um php quelltexte einzubinden. Nicht um Linkpfade, Bildpfade oder sonstiges zu ändern.

Schau dir mal deinen Quelltext an...
<html><body>hauptseite<html>coppermine</body></html>

So kommst du nicht weiter.. du templates bearbeiten, linkpfade ändern, controller dateien erstellen, ... viel spaß ;)
Ansonsten nimm dir halt nen iframe.

Social bookmarks