ik wil mijn pagina's includen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Ralph van der Tang

ralph van der Tang

07/05/2012 11:09:31
Quote Anchor link
hoi iedereen,

ik ben bezig met mijn website en wil de pagina's laten includen en deze include wil ik via het menu kunnen aanpassen.

de code die ik nu heb is dit:
<!-- index.php -->
<!doctype HTML>
<html>
<head>
<!-- CSS-->
<!-- css van achtergrond -->
<link rel="stylesheet" type="text/css" href="css/background.css" />

<!-- scripts-->

<!-- includes-->
</head>
<body>
<div id="container">
<div id="menu">
</div>
<div id="content">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
                /* verkrijg de variable page*/
                $page = $_GET['page'];
                
                /* als de pagina een waarde heeft include de waarde dan */
                if (!empty($page))
                {

                    include('page/'.$page);
                }
    
                else
                /* als de pagina geen waarde heeft  include dan de homepage */
                {
                    include('page/page1.php');
                }

?>

</div>
</body>
</html>

graag zou ik willen weten waarom er geen pagina's worden weergegeven die in de map page

mvg ralph
 
PHP hulp

PHP hulp

22/12/2024 09:02:43
 
Chris PHP

Chris PHP

07/05/2012 11:18:01
Quote Anchor link
Hoe kom je aan de waardes van he 'page'? Ik neem aan dat dit je index.php is dus hoe of waar wordt de waarde van 'page' meegegeven? Bijvoorbeeld index.php?page=home

Zonder die informatie weet hij uiteraard nooit waar of what hij moet doen. Want $_GET haalt niet de url op, maar in dit geval de waarde van page.
 
- SanThe -

- SanThe -

07/05/2012 11:19:02
Quote Anchor link
echo $_GET['page'] eens.
 
Ralph van der Tang

ralph van der Tang

07/05/2012 11:27:25
Quote Anchor link
de $page heeft geen waarde en dan is de bedoeling dat hij dus uit de map page page1.php weergeeft.

dit doet hij dus ook niet XD
 
Reshad F

Reshad F

07/05/2012 11:28:09
Quote Anchor link
waarom niet gewoon een switch gebruiken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
            switch($_GET['page']){

                case
'1':
            include_once('home.php');
                break;

                case
'2':
            include_once('pagina.html');
                break;

                case
'3':
            include_once('pagina.html');
                break;

                case
'4':
            include_once('pagina.html');
                break;

                case
'5':
            include_once('pagina.html');
                break;

                case
'6':
            include_once('pagina.html');
                break;

                case
'7':
            include_once('pagina.php');
                break;

                default:

            include_once('home.php');
                break;
                }

        ?>
 
Ralph van der Tang

ralph van der Tang

07/05/2012 11:29:34
Quote Anchor link
omdat ik over t algemeen zo min mogelijk wil typen
 
Chris PHP

Chris PHP

07/05/2012 11:36:19
Quote Anchor link
Aaah niet veel typen? Dan is dit wellicht iets beter CoffeeCup Designer

Je haalt nu $page door de war met $_GET['page'] deze hebben niets met elkaar te maken in het opzicht wat jij wil.

Nu is gewoon een leeg $_GET['page'] (altans een lege string "") gedeclareerd aan $page. Maar $_GET['page'] zal altijd leegblijven want hij krijgt geen waarde mee die verwerkt kan worden.
 
Kris Peeters

Kris Peeters

07/05/2012 14:04:29
Quote Anchor link
Ralph van der Tang op 07/05/2012 11:29:34:
omdat ik over t algemeen zo min mogelijk wil typen


Heel slechte drijfveer. Ban die gedachte uit je brains en dingen gaan beter beginnen gaan voor je.
 
Jeroen VD

Jeroen VD

07/05/2012 14:59:49
Quote Anchor link
"heel slechte drijfveer" - ben ik niet met je eens. de aanpak die de TS heeft gebruikt vind ik vele malen beter dan die van reshadd. al is die wel duidelijker.

@ralph: vaak werkt het door het eerst in 'dummiemanier' te schrijven, dus de manier zoals reshadd het doet. als je dan slim bent kun je het gaan inkorten naar eigengepost script, al zijn er hier en daar wel kleine verbeterpuntjes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?
                /* als de pagina een waarde heeft include de waarde dan */
                if (isset($_GET['page']))
                {

                    include('page/'.$_GET['page']);
                }
    
                else
                /* als de pagina geen waarde heeft  include dan de homepage */
                {
                    include('page/page1.php');
                }

?>

waarom is dit beter?:
- geen variabelen kopieren
- isset() ipv empty()
ook moet je gaan nadenken over de veiligheid, want die laat nu te wensen over.

wil je het helemaal kort doen, zijn er ook nog de ternary operators:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    ( isset($_GET['page']) ) ? include('page/'.$_GET['page']) : include('page/page1.php');
?>

doet precies hetzelfde, maar moet je misschien nog even links laten liggen, want het is vrij moeilijk te begrijpen
Gewijzigd op 07/05/2012 15:00:58 door Jeroen VD
 
Jurgen B

Jurgen B

07/05/2012 15:09:36
Quote Anchor link
En wat Reshadd dus wel opvangt is dat je alleen pagina's kan includen die je publiekelijk wilt hebben. Een tussenweg is een array met daarin alle pagina's die toegankelijk zijn. De $_GET['page'] met in_array() controleren en dan includen. Daarnaast slim om voor de include ook nog op file_exists() te controleren.
Gewijzigd op 07/05/2012 15:11:39 door Jurgen B
 
Frank WD

Frank WD

07/05/2012 15:59:28
Quote Anchor link
Enkele weken geleden heb ik even met Wouter J gepraat via de mail over het includen van je pagina's als je index.php?page=home wilt gebruiken.
Hierbij liet ik Wouter J een stukje zien van mij zelf, deze moest ik gelijk niet meer gebruiken omdat deze niet veilig was.

De reden achter het niet veilig zijn was? Dat ik home kon veranderen door bijvoorbeeld index.php?page=../../admin/index.php. Zo doende kon men ook in andere mappen komen. Het lijkt mij even op eerste oog dat dit ook mogelijk is bij het stukje van de TS.

Wouter J gaf mij daarom een ander beter en veilige stukje code om in de index te zetten. Misschien is dit ook wat voor jou, daarom deel ik deze even hier.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
// werken met constants is altijd handig
define('ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR);

// haal alle pagina's op uit %root%/pages/
// die eindigen met .php

$pages = glob(ROOT.'pages'.DIRECTORY_SEPARATOR.'*.php');

if( !isset($_GET['p']) )
    $_GET['p'] = 'home';
    $pages = array_map('basename', $pages);
    // addslashes functie is niet nodig, omdat je NOOIT
    // andere tekens als letters of cijfers mag gebruiken
    // in een url


if( in_array($_GET['p'].'.php', $pages) )
{

    // include het bestand
    require ROOT.'pages'.DIRECTORY_SEPARATOR.$_GET['p'].'.php';    
}

else
{
    // include de 404 error pagina
    require ROOT.'error'.DIRECTORY_SEPARATOR.'404.php';              
}

?>
 
Reshad F

Reshad F

07/05/2012 16:12:36
Quote Anchor link
natuurlijk kan het makkelijk en moeilijk hoe je het zelf maar wilt. een manier hoe het kan. is met file_exists te controleren. zoals jurgen zegt.

simpele ervan is dat je een index.ini maakt met de links erin en dit ophaalt met.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
        if (file_exists("hierkomtfileroute") && is_array($content = parse_ini_file("hierinifileroute", true)))
        {

            if (array_key_exists("navigation", $content))
            {

                foreach ($content["navigation"] as $basename => $title)
                {

                   print "<li><a " . ($basename == basename($_SERVER["REQUEST_URI"]) ? "class=\"current\"" : false) . " href=\"/" . $basename . "\">" . $title . "</a></li>";
                }
            }
        }

        ?>


hoe dan je ini file eruitziet is zo

[navigation]
home.php = "Home"
Gewijzigd op 07/05/2012 16:13:36 door Reshad F
 
Kris Peeters

Kris Peeters

07/05/2012 17:11:57
Quote Anchor link
Die switch staat daar perfect op zijn plaats. Een switch heeft namelijk een leuke eigenschap: je moet de parameter niet controleren op ongewilde data. Ofwel heb je een case die perfect te verwachten valt (je hebt de cases zelf ingevuld); in elk ander geval wordt de default uitgevoerd.

Je kan een switch wel compacter schrijven en je kan een aantal bovenstaande oplossingen integreren.

bv.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
switch ($_GET['page']) {
  case
'kalender':
  case
'gastenboek':
  case
'links':
    include('page/' . $_GET['page']);
    break;
  
  default:
  case
'home':
    include ('pages/home.php');
    break;
}

?>


De oplossingen met in_array zijn ook handig: het geeft je de mogelijkheid om die items uit een DB/xml/... te lezen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.