Pagina script.

Door Robert Deiman, 23 jaar geleden, 12.693x bekeken

Dit is een verkorte versie, voor als je veel pagina's hebt

Gesponsorde koppelingen

Inhoudsopgave

  1. Uitleg

 

Er zijn 27 reacties op 'Pagina script'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
PurpleMadness -
PurpleMadness -
23 jaar geleden
 
0 +1 -0 -1
En je zou zonder inspringen nog veel meer regels kwijt kunne :)

*kijkt naar n00b index scripts*

Ik heb het vroeger met allemaal verschillende ifjes gedaan, en ik had 16 pagina xD


23 jaar geleden
 
0 +1 -0 -1
Hoewel de tutorial voor mij geen nut zal hebben, zal ik hopen dat deze tutorial de switch en include($_GET['page']) de wereld uit zal helpen :)
Eric Cartman
Eric Cartman
23 jaar geleden
 
0 +1 -0 -1
@Sebastiaan: Volgens mij staat er toch echt in die tutorial dat je $_GET['page'] moet includen...
Maar inmiddels ben ik een beetje (met de nadruk op beetje) overgestapt op OOP, en daarin vind ik het toch wel veel makkelijker om een index-script te maken.
Bo az
Bo az
23 jaar geleden
 
0 +1 -0 -1
Op het moment dat je nu een forumlier met POST verstuurd zal je iemand naar een pagina buiten de layout moeten sturen.

Het zou dus leuk zijn als je het nog even aanpast zodat het voor $_GET en $_POST werkt.


23 jaar geleden
 
0 +1 -0 -1
@Jip: Ik heb het over direct inlcuden zonder controle
Robert Deiman
Robert Deiman
23 jaar geleden
 
0 +1 -0 -1
@Sebastiaan
Ik wou net zeggen, ik doe dit bewust zo. En zoals ik al aangaf heb ik deze tut gemaakt, omdat ik in die andere tutorials over dit onderwerp alleen maar SWITCH, CASE oplossingen zag. Deze oplossing doet in principe precies hetzelfde, maar is een stuk korter wanneer iemand met een groot aantal verschillende "interne" pagina's voor zijn website heeft. (zie nb. stukje aan het eind van de tut.)

@Boaz
In het formulier werk je dan op deze manier (zal ik ook ff toevoegen aan de tut).
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<form name="naam" action="pagina.php?pagina='.$pagina.'" method="post">';
?>


@Jip
Ik weet dat er met OOP ook een mooie (en korte) oplossing is. Maar niet iedereen kan OOP, ook niet iedereen wil de tijd nemen om dat te leren (ben ik zelf een voorbeeld van, maar bij ons op school hoeven BI'ers (Bedrijfskundige Informatici) geen OOP te leren, ook niet met PHP, terwijl de HI'ers (Hogere Informatici) en TI'ers (Technische Informatici) dat wel leren.
En wat dat van controle betreft, ik controleer wel degelijk, je kan alleen toegestane pagina's includen, net als met de SWITCH methode.

@PurpleMadness

Dat was ook wat ik eerst deed, maar door ff logisch na te denken, kom je al vrij gauw tot een kortere oplossing en ik kwam toevallig met deze.
Pim Vernooij
Pim Vernooij
23 jaar geleden
 
0 +1 -0 -1
ik heb hiervoor een class gemaakt die gewoon checkt of de pagina bestaat, niet op de blacklist staat, en ook geen ../ in zich heeft, dan hoef je die array er ook niet meer in te stoppen, en hoef je dus niet bij iedere nieuwe pagina je include scriptje aan te passen. (dit stukje code uit je tutorial heb ik wel een paar keer als voorbeeld gebruikt in het forum, maar dat was voordat ik die class maakte ^^)
Robert Deiman
Robert Deiman
23 jaar geleden
 
0 +1 -0 -1
Tjah, misschien was het wel slim geweest om er ook ff een check in te bouwen dat die kijkt of de pagina bestaat. Ik gebruik het zelf ook wel eens als voorbeeld, maar zoals ik al zei ken ik geen OOP (en dat is volgens mij precies waar je mee bezig bent als je die class maakt) en is dit ook meer een script voor mijn mede niet-OOP-ers. ;)
ColdDoT
ColdDoT
23 jaar geleden
 
0 +1 -0 -1
Maare kan je niet gewoon net zo goed met include('header.php') en footer.php

Want je titel gaat om 1 layout in meerdere pagina's

En de beveiliging ja dat kan dan nog steeds met joun script.
Als je met header + footer doet is ook beter voor google indexeren

:D Btw ben nieuwbie hiero :P
Robert Deiman
Robert Deiman
23 jaar geleden
 
0 +1 -0 -1
Is dat zo? Als je nu met google werkt, kom je gewoon op je hoofdpagina uit hoor. (als je bijv pagina.php?pagina=pagina1 zou intikken, laadt die alles, dus ook je header en footer) en je ziet niet elke keer een andere pagina naam (bijv pagina.php --> nieuws.php --> gastenboek.php)

Verder heb je wel een beetje gelijk, alleen gaat het zo ook wel goed ;) Maar google vindt ook links als pagina.php?id=2131 bijvoorbeeld, dus pakt die dit ook wel. (zoek maar eens op php include met google en zie de link naar het 7e gevonden item) Ja, die mensen bij google zijn echt goed ;)
ColdDoT
ColdDoT
23 jaar geleden
 
0 +1 -0 -1
OK dat wis ik niet ik wis dat google goed was maar zo :D

Hey fijne kerstdagen en een gelukkig nieuw jaar
Thijs
Thijs
23 jaar geleden
 
0 +1 -0 -1
maar is het gewoon niet handiger om een css bestand te maken als je op elke pagina de zelfde layout wilt? Of zie ik dat verkeert???
Robert Deiman
Robert Deiman
23 jaar geleden
 
0 +1 -0 -1
Het gaat niet direct om de layout,maar meer om de indeling (op elke pagina een header, footer etc...
Kevin Baelemans
Kevin Baelemans
23 jaar geleden
 
0 +1 -0 -1
@Thijs: Dit script helpt je om het gedeelte rondom de eigenlijke content in 1 bestand te houden. Denk hierbij aan het logo, het navigatiemenu, de footer met disclaimer, etc. Bij gebruik van dit script hoef je deze code niet voor elke pagina apart te kopi?ren (en te wijzigen, mocht een aanpassing nodig zijn).
Robert Deiman
Robert Deiman
23 jaar geleden
 
0 +1 -0 -1
@Kevin

dat hoeft sowiezo niet als je met include gaat werken op elke pagina, maar ik vindt het zelf zo netter, omdat je maar op 1 pagina aan het werk bent.
The Pope
The Pope
23 jaar geleden
 
0 +1 -0 -1
dit kan je nog makkelijker doen met switch, altans dat vind ik.
en als je het goed doet kun je ook nog een 404 error plaatsen:

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
<?
switch($_GET["pagina"]);
case
'':
include('home.php');
break;
case
'home':
include('home.php');
break;
case
'contact':
include('contact.php');
break;
// enz...
default:
include('404.php'); // 404 includen als de pagina niet voorkomt in de boven genoemde "cases"
break;
}

?>

en dit script is, net als Robert al zei, voor de opmaak van de site.
o.a. het menu etc...
maar niet voor de layout, zoals die bedoeld word met CSS
Robert Deiman
Robert Deiman
23 jaar geleden
 
0 +1 -0 -1
@The Pope

Waarom zet je er een 404 error in? k vind het veel mooier als je gewoon op de standaard pagina uitkomt.
Bij jou komt die als $_GET['pagina'].php niet bestaat een error, vind ik niet heel mooi.
The Pope
The Pope
23 jaar geleden
 
0 +1 -0 -1
dat werkt hetzelfde als dat jij bijv. blaat.php opvraagt, en die bestaad niet, dan krijg je ook een 404 te zien...
maar je kunt 404.php toch veranderen in bijv. home.php
dat is toch niet moeilijk?
Robert Deiman
Robert Deiman
23 jaar geleden
 
0 +1 -0 -1
@The Pope, als ik bijv blaat.php opvraag, dan kom ik idd op de home uit. Ik vind een 404 error niet mooi, tjah.. en voor kwaadwillenden is meteen duidelijk dat het niet gaat, en dat je zo niet wat kan beginnen :)
Andre
andre
22 jaar geleden
 
0 +1 -0 -1
Hoi,

Bedankt voor deze tut. Ik heb alleen 1 vraagje.
Als ik gewoon naar http://localhost/test ga dan opend ie gewoon index.php en krijg ik een foutmelding.
Notice: Undefined variable: pagina in D:\server\Apache2\htdocs\test\menu_var.php on line 13

Alles wordt goed weergegeven, maar tussen me buttons en me tekst van default.php staat die foutmelding.

Als ik http://localhost/test/index.php?page=default doe. dan krijg ik hem wel gewoon weergegeven zonder foutmelding. Moet ik nog ergens aangeven dat me gewone index.php me home pagina is??

hier is me menu_var.php

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

// toegestane pagina's in een array zetten
$authorised = array("login","upload","register","index");

// controleren of er een pagina is meegegeven)
if (isset($_GET['page']))
{

// de binnengehaalde variabele omzetten naar kleine letters
$pagina = strtolower($_GET['page']);
}

// controleren of de pagina voorkomt in de array
if (in_array($pagina, $authorised))
    
{

    // wanneer die toegestaan is includen
    include($pagina.".php");
}


else

{
    // wanneer die niet toegestaan is standaard pagina includen.
    include("home.php");
}

?>


Ik heb 'index' er later bijgezet dus dat is het niet.


en hier is me index.php

<HTML>
<HEAD>
<TITLE>test</TITLE>
</HEAD>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
Include ('menu.php')
?>

<BODY>
<TABLE WIDTH="90%" BGCOLOR="#EEEEEE">
<TR>
<TD>

</TD>
</TR>

<TR>
<TD>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  include("menu_var.php")
?>

</TD>
</TR>
</TABLE>

</BODY>
</HTML>

k snap er niets van. Kan iemand mij helpen

BTW. Ik heb menu_var.php gemaakt en deze geinclude in me index.php (zou moeten werken toch.

De links doen het trouwens ook gewoon. Het is alleen die foutmelding die ik krijg.
Winston Smith
Winston Smith
22 jaar geleden
 
0 +1 -0 -1
Dat komt omdat $_GET['page'] dan nog leeg is.

Zit hierin:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (isset($_GET['page']))
{

// de binnengehaalde variabele omzetten naar kleine letters
$pagina = strtolower($_GET['page']);
}

?>


En kan je oplossen door bovenstaande te vervangen door onderstaande:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if (isset($_GET['page']))
{

// de binnengehaalde variabele omzetten naar kleine letters
$pagina = strtolower($_GET['page']);
}
else {
$pagina = 'default'; // of index
}
?>


Je kan die error ook negeren (het is dan ook geen error, maar een notice).
Andre
andre
22 jaar geleden
 
0 +1 -0 -1
Het foutje is opgelost.
@Kasper Bedankt, maar dat was dus niet de fout.

Ik heb het scriptje niet goed gecopieerd. Ik had:
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

// toegestane pagina's in een array zetten
$authorised = array("login","upload","register","index");

// controleren of er een pagina is meegegeven)
if (isset($_GET['page']))
{

// de binnengehaalde variabele omzetten naar kleine letters
$pagina = strtolower($_GET['page']);
}

// controleren of de pagina voorkomt in de array
if (in_array($pagina, $authorised))
    
{

    // wanneer die toegestaan is includen
    include($pagina.".php");
}


else

{
    // wanneer die niet toegestaan is standaard pagina includen.
    include("home.php");
}

?>


Maar als ik hier kijk zie ik dat er 2 keer achter elkaar if staat.

1e

// controleren of er een pagina is meegegeven)
if (isset($_GET['page']))
{
// de binnengehaalde variabele omzetten naar kleine letters
$pagina = strtolower($_GET['page']);
}

2e
// controleren of de pagina voorkomt in de array
if (in_array($pagina, $authorised))

{
// wanneer die toegestaan is includen
include($pagina.".php");
}

Toen keek ik (na al 10 keer te hebben gekeken) nog een keer de tut na of ik iets fout had gedaan en zag dat
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// toegestane pagina's in een array zetten
$authorised = array("login","upload","register","index");
?>


Een appart stukje PHP was. Ik heb de ?php gesloten en daarna weer geopend.

Ziet er nu zo uit en het werkt;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// toegestane pagina's in een array zetten
$authorised = array("login","upload","register");
?>



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
<?php
// controleren of er een pagina is meegegeven)
if (isset($_GET['page']))
{

// de binnengehaalde variabele omzetten naar kleine letters
$pagina = strtolower($_GET['page']);
}

// controleren of de pagina voorkomt in de array
if (in_array($pagina, $authorised))
{

    // wanneer die toegestaan is includen
include($pagina.".php");
}


else

{
    // wanneer die niet toegestaan is standaard pagina includen.
include('home.php');
}

?>
Andre
andre
22 jaar geleden
 
0 +1 -0 -1
@Kasper.

Je hebt toch gelijk. Ik ben een eigenwijze noob ;)

Ik testte mijn dingetje nog een keer en toen gaf ie weer dezelfde melding.

Ik heb daarna jou stukkie erin gecopieerd en nu doet ie het. thnks man!!
Gerda
Gerda
22 jaar geleden
 
0 +1 -0 -1
Ik heb dit script getest maar krijg het niet aan de praat. Werkt dit met php4 en php 5.
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
Heb je een foutmelding voor ons dus dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
// Zo begin je met een nieuw script !!!
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>


erboven zetten.
Niek Kasius
Niek Kasius
21 jaar geleden
 
0 +1 -0 -1
ik heb het geprobeerd, en het resultaat is dat ik net zo goed dit had kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
include ("header.php");
include ("home.php");
include ("footer.php");
?>


dus ik snap het nut is van dat script niet. want meer was er niet te zien dan mijn home pagina
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Mark Dijkstra
mark Dijkstra
21 jaar geleden
 
0 +1 -0 -1
weet iemand hoe je het kan voor komen dat je met deze code dat de hele pagina gelijk mee ververst word want in IE is dat( strepen/flitsen)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Uitleg

Labels

  • Geen tags toegevoegd.

PHP tutorial opties

 
 

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.