[PHP] Navigatie dmv filebewerkingen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • PenguinPower
  • Registratie: Juni 2001
  • Laatst online: 22:42

PenguinPower

May the SOURCE be with you

Topicstarter
Ik wilde graag een php scriptje maken, die steeds index.tpl standaard laat zien, en waar start.htm dan in komt. (eventuele links kunnen je dan doen via ?pagina=anderehtml.htm waarbij anderehtml.htm dan de plaats in neemt van start.htm)

nu had ik dit in eerste instantie met een iframe opgelost en een php scriptje wat start.htm in iets anders verandere als er ?pagina=blaat.htm achter stond, maar helaas komt mijn menunavigatie niet over die iframe heen in ie5 en lager.
zie http://uc.uden.kennisnet.nl/havovwo/internet/index.php

Na veel prutsen heb ik het volgende browsel, alleen deze kan geen php scripts inlezen. Ik zou ook niet weten hoe ik dat moet doen, heb ik nl nergens kunnen vinden.:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
if ( isset($HTTP_POST_VARS['pagina']) || isset($HTTP_GET_VARS['pagina']) )
{
    $pagina = ( isset($HTTP_POST_VARS['pagina']) ) ? $HTTP_POST_VARS['pagina'] : $HTTP_GET_VARS['pagina'];
}
else
{
    If (file_exists("start.htm")) {
        $pagina = "start.htm";
    }
}
$paginahtml = "";
$paginabestand = fopen($pagina,"r");
if (!$paginabestand) {
echo "<H2>Sorry, Kan pagina niet vinden :(</H2>\n";
exit;
}
$paginaparse=FALSE;
while (!feof($paginabestand))
{
$line = fgets($paginabestand, 2048);
if (eregi('<body' , $line)) {$paginaparse = TRUE;$line="";}; //begin zoeken
if (eregi('</body>' , $line)) {$paginaparse = FALSE;}; //einde zoeken
if ($paginaparse == TRUE)
{
$line = stripslashes($line);
$paginahtml = $paginahtml.$line;
}}
fclose($paginabestand);

$templatebestand = fopen("index.tpl","r");
while (!feof($templatebestand))
{
$line = fgets($templatebestand, 2048);
$line = str_replace("<!-- PAGINA -->", "$paginahtml" , $line);
$line = stripslashes($line);
echo $line;
}

?>


Verder relatieve paden werken wel met ?pagina= maar als ik ?pagina=/blaat.htm doe dan werkt dat ook niet... hoe los ik dat op?

Eventuele verdere suggesties /performance verbeteringen zijn welkom. Dit is mijn eerste php script en heeft me een hoop werk gekost om dit zo te krijgen, dus zal wel fijn zijn als ik wat feedback kreeg :).

[ Voor 7% gewijzigd door PenguinPower op 30-10-2003 21:10 ]


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 18-09 20:50
Je kunt gebruik maken van de functies "include()" of "require()" om bestanden te importen.

Je krijgt dan zoiets:

PHP:
1
2
3
4
5
6
7
8
  $valid_pages = Array('index', 'page1', 'test');

  if (isset($_GET['page']) && in_array($_GET['page'], $valid_pages)) {
    $page = $_GET['page'];
    include($page.'.php');
  } else {
     echo 'Oops...error';
  }

[ Voor 42% gewijzigd door Sybr_E-N op 30-10-2003 21:18 ]


Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
zelf heb ik gemerkt dat je voor het pad van je bestand soms getcwd() moet gebruiken (dat geeft de huidige directory, waarin het script dus word uitgevoerd, terug).

PHP:
1
$paginabestand = fopen(getcwd()."/".$pagina,"r");

Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
verder gebruikt de nieuwe php ipv $HTTP_GET_VARS['blaat'] $_GET['blaat'] misschien wel handig om dit te wetn :)

Icons are overrated


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 07:15
Wat vaak nog makkelijker werkt dat fopen() en fread() enzovoorts, is de functie 'file()'... Kun je in een keer een file ingelezen.

Hij wordt wel gereturned als array, zo krijg je één string:

PHP:
1
$info = implode(file($filename),"\n");

Verbouwing