[PHP] Pagina Class

Gestart doorFreestyle14 reacties49 weergaven

15 berichten · pagina 1 van 1

Freestyle

Lid · Topicstarter

Berichten
7.681
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik heb mijn eerste PHP OOP script. En ik wil hem delen, ook wil ik graag feedback, als hij e.v.t veiliger kan. Of beter.

Class:

[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #FF8000]////////////////////////////////////////////////////
////////// Copyright Marijn Kok ////////////////////
////////// info@vanmarijn.nl ///////////////////////
////////// 07-05-2012 //////////////////////////////
////////////////////////////////////////////////////[/COLOR]

[URL="http://www.php.net/class"]class[/URL] paginas [COLOR= #007700]{[/COLOR]
    
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #0000BB]$pages[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]""[/COLOR][COLOR= #007700];[/COLOR]
    [URL="http://www.php.net/public"]public[/URL] [COLOR= #007700]function[/COLOR] maker[COLOR= #007700]([/COLOR][COLOR= #0000BB]$dir[/COLOR][COLOR= #007700]){[/COLOR]
        [COLOR= #0000BB]$page[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$_GET[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]p[/COLOR][COLOR= #007700]];[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700](![/COLOR][URL="http://www.php.net/empty"]empty[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$page[/COLOR][COLOR= #007700])) {[/COLOR]
            [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/in_array"]in_array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$page[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$this[/COLOR][COLOR= #007700]->[/COLOR]pages[COLOR= #007700])) {[/COLOR]
                [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/include_once"]include_once[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$dir[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$page[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000].php[/COLOR][COLOR= #007700]);
            }[/COLOR] [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
                [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/include_once"]include_once[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$dir[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]404.php[/COLOR][COLOR= #007700]);    
            }
        }[/COLOR] [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
            [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/include_once"]include_once[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$dir[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]index.php[/COLOR][COLOR= #007700]);    
        }
    }
    
}[/COLOR]
?>


Hoe je heb gebruikt:

[COLOR= #0000BB]<?php
                $paginabuilder[/COLOR] [COLOR= #007700]= new[/COLOR] paginas[COLOR= #007700];[/COLOR] 
                [COLOR= #0000BB]$paginabuilder[/COLOR][COLOR= #007700]->[/COLOR]pages [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]index[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]about[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]contact[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]// Paginas die er gebruikt mogen worden //[/COLOR]
                [COLOR= #0000BB]$paginabuilder[/COLOR][COLOR= #007700]->[/COLOR]maker[COLOR= #007700]([/COLOR][COLOR= #DD0000]/pages/[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]// De dir waar de paginas in staan //[/COLOR]
            ?>


Je mag hem gebruiken, laat alleen wel mijn copyright er staan!
0
Berichten
3.314
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Je kunt de class beter niet een meervoud naam geven, maar de enkelvoud naam van een voorwerp, zoals "PageRetriever" of "PaginaOntvanger" of iets dergelijks (ik raad Engels aan yummie)
0
Freestyle

Lid · Topicstarter

Berichten
7.681
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Videotube schreef:
Je kunt ook als url doen:
http://www.URL.nl/?p=../config.php
etc..
Ja met htaccess word het gewoon alleen de naam bijvoorbeeld:
website.nl/contact
ipv
website.nl/index.php?p=contact

@bedankt, Ik heb het nu ook iets anders heb nu
PageContent
PageHeader
En nog een paar dingetjes smile
0
Berichten
3.037
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ah, oke, ik dacht dat je het zonder htaccess deed.
0
Thom

Lid

Berichten
10.654
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Misschien is het handig dat je ook kan opgeven welke paginas de 404 pagina en beginpagina zijn yummie
0
Freestyle

Lid · Topicstarter

Berichten
7.681
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
return include_once($dir.404.php);    
            }
        } else {
            return include_once($dir.index.php);    
        }
0
Thom

Lid

Berichten
10.654
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ja, maar ik bedoel zeg maar dat je dat zo kan opgeven oid:

[COLOR= #0000BB]<?php

$paginabuilder[/COLOR][COLOR= #007700]->[/COLOR]maker[COLOR= #007700]([/COLOR][COLOR= #DD0000]/pages/[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]index.php[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]404.php[/COLOR][COLOR= #007700]);[/COLOR]
?>
0
Berichten
6.144
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dan zou ik gewoon een functie "set" maken, en dan laten kiezen uit 404, 500 etc.
En dan via die functie ook de map instellen.
0
Thom

Lid

Berichten
10.654
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Kan ook yummiewas maar een voorbeeld
0
Freestyle

Lid · Topicstarter

Berichten
7.681
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dat zou kunnen, het is maar een klein scriptje he winkDe mijne word nu helemaal uit de DB gehaald, en er zitten veel meer functies bij. Zoals de header vullen (title, description, etc)

Maar zeker bedankt voor je reactie!
0
Berichten
5.795
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Het is zon kleinen functie dat een class meer dan overbodig is.
Er zitten ook wat schoonheidsfoutjes in je kan namelijk path traversal gebruiken.
Hiermee kan je namelijk buiten je pages directory php files aanroepen/
0
Freestyle

Lid · Topicstarter

Berichten
7.681
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
@daiman: Ja klopt, dat had ik eerst ook overwegen. Maar als je om een of andere redenen sommige files niet wilt laten zien. Dan laad je die nu gewoon weg.

Als ik er nu zo over denk dan is dat wel makkelijker als je veel paginas hebt.
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Videotube schreef:
Ah, oke, ik dacht dat je het zonder htaccess deed.
nog steeds kan het dan door naar index.php?p=../ te gaan, en ik zou het ook nog doen voor ectra beveiliging.

str_replace(/, , $str)
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Freestyle schreef:
Ik heb mijn eerste PHP OOP script.

Fout, werken met classes is niet per se OOP.
Je class (en dus object) pages heeft als eigenschap pages? Daar klopt dus niks van, en is dus niet OOP.
Freestyle schreef:
En ik wil hem delen, ook wil ik graag feedback, als hij e.v.t veiliger kan. Of beter.
- Je maakt een public string aan, en gaat dan een paar regels verder checken of er iets in een array staat... Hoe kan een string opeens een array zijn?
- Waar staan de pages? hoe kan je pages toe voegen? Hoe verwijder je pages? De class heeft momenteel geen enkele vorm van pagina-manipulatie. Maak getter- en settermethodes!
- Het is mogelijk om (zoals gezegd is) paginas buiten de dir aan te roepen.
- Wat als je geen phpbestand maar een html bestand aan wil roepen?
- Je kijkt niet of dir bestaat.
- Initializatie kun je beter in __construct() doen. Dingen als: Dir instellen, Pages instellen kan je dan doen door middel van:

$pages = new Pages("mijndir", array(page1, page2, page3));
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren