BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Webdesign (http://www.black-board.net/board.php?boardid=19)
--- Includen .... (http://www.black-board.net/thread.php?threadid=15960)


Geschrieben von eotbc am 12.02.2004 um 19:46:

  Includen ....

Hi!

Ich bräuchte dringend hilfe bei einem Design....

1.) Das Design : http://www.designnation.de/webtemplate6/

Leider habe ich (noch großes Grinsen ) kaum Ahnung von Php und müsste dringend wissen wie ich Seiten in dieses "Hauptfenster" includen kann.

-> Also wenn man in der Navi einen Punkt auswählt , das die Seite dann in dier index.php included wird. <-


[Die Frage gabs warschlich schon öfters aber ich habe leider keine passende Antwort gefunden.... ]

THX



Geschrieben von assasine am 12.02.2004 um 21:30:

 

also hier ein tut dazu:

Navigation mit PHP
von Michael Schlüter

Frames sind unter Webdesignern nicht sonderlich beliebt. Es geht aber auch anders - mit PHP! Denn damit kann man ganz einfach fremde Dateien einladen.

Benötigt:
Webserver mit PHP3 (oder höher), HTML-Kenntnisse

Ziel:
Wir wollen eine Navigation, die funktioniert wie Frames, jedoch aussieht wie Einzelseiten. Beispiel: Bis jetzt hatten wir zwei Frames: links die Navigation, rechts der Inhalt. Da aber beide Dateien eine gewisse Länge haben entstehen zwei unschöne Scrollbalken.
Nun soll die Seite so aussehen, als handele es sich hier um nur eine Datei (mit Navigation und Inhalt), es soll sich aber wirklich um zwei Dateien handeln, damit wir mit Leichtigkeit einen der beiden Teile ändern können. Dies ist gerade bei der Navigation sehr wichtig, da man sonst beim hinzufügen eines Links, alle Dokumente ändern will.
Mit PHP ist es nun möglich zwei Dateien zu erstellen und diese "verschmelzen" zu lassen.

So wird's gemacht:
Zuerst erstellen wir eine Datei in der alle Teile sind, die ständig angezeigt werden. Am besten setzt man auf diese Seite eine Tabelle und lässt den Bereich, wo nachher die anderen Dateien erscheinen sollen leer. Diese wird unter dem Namen index.php3 (die Dateiendung ist dabei zwingend).
Nun erstellt man eine Seite die beim Start in unseren "Frame" geladen werden soll (start.html) sowie eine weitere Datei, die eine Unterseite darstellen soll (seite1.html).

In der index.php3 müssen nun zwei Änderungen vorgenommen werden. Zwischen <head> und </head> wird der folgende Text eingefügt:
Code


<?php

if ($page=="") $page="start.html";

?>


Damit wird festgelegt, welche Seite als erstes in unseren "Frame" geladen werden soll (hier: start.html).
Nun fügen wir an der Stelle wo die Startseite und alle weiteren Seiten nachher geladen werden sollen, folgendes ein:
Code


<?php
$fd = fopen($page, "r");
while (!feof($fd)) {
echo fgets($fd, 4096);
}
fclose ($fd);
?>

Dieser Text kann unverändert stehen bleiben.

Wenn man die Seite nun vom Webserver aufruft (geht nicht auf dem eigenen Rechner), sieht man die start.html an der Stelle in die index.php3 eingefügt, wo wir den obigen Quellcode angegeben haben.

Um nun eine andere Seite anstatt der start.html zu sehen benutzt man folgenden Link:
<a href="index.php3?page=seite1.html">
Hiermit wird nun die Datei seite1.html in unseren Frame geladen. Nun kann man mit den Link index.php?page + die zu ladende Datei (auch absoluter Pfad möglich) in den "Frame" laden.

Wenn man diese Datei jetzt aufruft und wirft einen Blick in den Quelltext wird man sehen, dass die beiden Dateien zu einer verschmolzen sind.

Fehler:
- Beim Aufruf wird keine Datei in den Frame geladen. Möglicher Fehler: Der Webserver unterstützt kein PHP3.
- Es kommt eine Fehlermeldung auf der Seite: Die aufzurufende Datei wurde nicht gefunden.
- Es werden Javascript - Fehler angezeigt und das Layout ist total verrutscht. Kann passieren wenn die Seite in einem richtigen Frame geladen wird.



Geschrieben von eotbc am 13.02.2004 um 13:41:

 

Yo Danke!

Wenns nicht klappen sollte , meld ich mich großes Grinsen



Geschrieben von LX am 13.02.2004 um 13:57:

 

Und genau auf diese Art und weise produzierst du eine schöne Sicherheitslücke, da du jede beliebige Datei via URL auf diese Weise einbinden lassen kannst (auch z.B. eine .htpasswd oder ähnlich sensitive Daten, vergleiche dazu Compuholics HackIt, welches auf dieser Lücke basiert).

Es empfiehlt sich daher eher, eine Art ID einzuführen, und jeder Unterseite eine ID zuzuweisen, sodass auch wirklich nur die Dateien eingebunden werden können, die dafür auch vorgesehen sind. Dann hast du analog dort wo eingebunden werden soll eine Switch-Anweisung:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
switch ($page)
{
  case 1: include ("links.html"); break;
  case 2: include ("downloads.html"); break;
  .
  .
  .
  default: include ("index.html"); break;
}


Ein Link sieht dann analog so aus:

code:
1:
<a href="index.php?page=2">Downloads</a>



Geschrieben von assasine am 13.02.2004 um 14:20:

 

@ LX

kannst du mir einen Gefallen tun??

Weil ich noch nich so viel php kann könntest du das was du gerade gesagt anhand des Tutorials erkären??

z.B so: statt blablabla gibt man dann blabla ein usw.

weil das tut hab ich verstanden aber was du geschrieben hast nicht! Und iochmöcht auch nich das meine neue Seite gehackt usw. wird!



Geschrieben von assasine am 15.02.2004 um 14:25:

 

also wie macht man dat jetzt mit switch und das mit der ID...? Aber so das es auch keine php profies verstehen!!



Geschrieben von LX am 15.02.2004 um 14:42:

 

Weiß net, was daran so schwierig ist...

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
[massig HTML Quellcode]
<!-- Beginn der Navigation -->
<a href="index.php?id=0">Home</a><br>
<a href="index.php?id=1">Downloads</a><br>
<a href="index.php?id=2">Links</a><br>
<a href="index.php?id=3">Gätebuch</a><br>
<!-- Ende Navigation -->

[noch mehr HTML]

<!-- Beginn Content-Bereich -->
<?php
switch ($_GET['id'])
{
  case 1: include("downloads.html"); break;
  case 2: include("links.html"); break;
  case 3: include("guestbook.html"); break;
  default: include("home.html"); break;
}
?>
<!-- Ende Content-Bereich -->

[restlicher HTML-Code]


Dabei ist natürlich zu beachten, dass blubb.html nicht die komplette HTML-Seite mitsamt HEAD etc. enthält, sondern wirklich nur den Teil, der in den Contentbereich eingefügt werden soll (eine Tabelle z.B.).



Geschrieben von eotbc am 15.02.2004 um 15:52:

 

Thx @ LX

Funtzt schonmal smile

Weiss jemand , wie man SCROLLBALKEN in den Includeten Teil bekommt
damit sich das Design nicht verschiebt.
???


Beispiel:

Wenn der inhalt von datei_includet_wird.php tiefer oder größer als zum beispiel 500 pixel (o.ä) ist das dann dort ein scrollbalken ist ...



-> Mit dem "Script" was LX vorgeschlagen <-
danke.



Geschrieben von LX am 15.02.2004 um 16:01:

Achtung

Das kannste z.B. machen, indem du alles, was eingebunden werden soll in einen DIV packst, dem mit CSS die (Maximal-)Höhe 500px gibst und overflow: auto setzt.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
[...]

<!-- Beginn Content-Bereich -->
<div style="height: 500px; overflow: auto;">
<?php
[...]
?>
</div>
<!-- Ende Content-Bereich -->

[...]



Geschrieben von eotbc am 15.02.2004 um 16:48:

 

Yo klappt Super smile

Jetzt müsste es eigentlich mit dem Includen funktionieren Augenzwinkern


Sei bedankt -> LX großes Grinsen



Geschrieben von eotbc am 15.02.2004 um 17:27:

 

unglücklich
Sorry aber eine Frage hab ich noch...


Wie kann ich das Verzeichniss , der Datei die Includet werden soll , wechseln??

Die Datei liegt im scripte ordner \scripte\datei.html ...


Beispiel:

normal :
code:
1:
case 1: include("123.html"); break;


geht nicht :
code:
1:
case 1: include("\scripte\123.html"); break;


....



Geschrieben von LX am 15.02.2004 um 17:33:

Achtung

Vergiss den Backslash, das Zeichen existiert nicht Zunge raus

Korrekte Pfadangaben im Internet werden mit einem normalen Slash gemacht, also wäre
code:
1:
include("scripte/blubb.php");
korrekt. Vorsicht auch mit dem Slash am Anfang (/blah/blubb), dieser wird für absolute Pfadangaben verwendet.



Geschrieben von eotbc am 15.02.2004 um 17:39:

 

*löl*

-> Ich bin sichtlich deprimiert großes Grinsen <-


Ich hatte das aufm anderen Board so gelesen...

Aber es gibt nur 1 "richtiges" Board.... ^^ großes Grinsen großes Grinsen großes Grinsen



Geschrieben von assasine am 15.02.2004 um 18:27:

 

ich krieg die Krise! Bin jetzt dumm? oder was?

also ich blick nicht mehr für was was ist !

z.B. muss ich das noch einfügen??

<?php

if ($page=="") $page="start.html";

?>

oder das???

<?php
$fd = fopen($page, "r");
while (!feof($fd)) {
echo fgets($fd, 4096);
}
fclose ($fd);
?>
Ich kann ja noch nicht viel php brauch aber gewisse Sachen wie so ein Navigation ziemlich dringend!



Geschrieben von LX am 15.02.2004 um 18:34:

 

Nein, das kannste komplett weglassen. Alles was du brauchst (außer dem HTML-Gerüst drumrum) steht in meinen Beiträgen.



Geschrieben von assasine am 15.02.2004 um 18:56:

 

und wie kann ich die Startseite bestimmen ich mein das muss ich doch irgentwie angeben sonst weiß man ja säter nich was als erstes angezeigt wird!!



Geschrieben von LX am 15.02.2004 um 19:00:

 

Das ist der default-Eintrag in der switch()-Anweisung.



Geschrieben von assasine am 15.02.2004 um 19:50:

 

jo jetzt damit ich bald anfangen kann das zu üben noch die letzten Fragen!

Wie wird bestimmt wo das erscheinen soll was erscheinen soll! z.B. in ner Tabelle

und wo müssen die php teile genau eingefügt werden?? weil bei dem andren wars ja im head und das andere in der tabelle wo das erscheinen sollte!

das müsste vorerst mal alles gewesen sein und wenn ich noch pros. habe frrag ich noch mal



Geschrieben von eotbc am 15.02.2004 um 20:25:

 

Also...

als erstes fügst du das hier :

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
<!-- Beginn Content-Bereich -->
<?php
switch ($_GET['id'])
{
  case 1: include("downloads.html"); break;
  case 2: include("links.html"); break;
  case 3: include("guestbook.html"); break;
  default: include("home.html"); break;
}
?>
<!-- Ende Content-Bereich -->


...da ein (Body) wo später die Includete Datei erscheinen soll.

-_-_-_-_--_-_-_-_--_-_-_-_--_-_-_-_--_-_-_-_--_-_-_-_--_-_-_-_-

2.) Änderste die Links entsprechend...

code:
1:
2:
3:
<a href="index.php?id=1">Downloads</a><br>







-> Ja und was durch den Link dargestellt werden soll , schreibste
(klar oda?) in die Datei , die du includest.


fertig Augenzwinkern



Geschrieben von assasine am 15.02.2004 um 20:46:

 

jo klar. Danke!!!

aber ***nichtöt*** für was steht case?? die ID?


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH