PHP url mbv if statement
Met behulp van het volgende scriptje wordt een php pagina geinclude die dezelfde naam heeft als er in de adresbalk na index.php?page= wordt getypt.
Code (php)
Nu doet hij precies wat hij moet doen. Alleen zou ik graag willen dat als iemand naar index.php gaat hij wordt doorverwezen naar index.php?page=home. Zodat ik voortaan als iemand een niet bestaande pagina hem mbv het else statement kan doorsturen naar een error pagina (ipv nu naar de home pagina aangezien er anders als iemand naar index.php gaat de error getoond wordt).
Hopelijk kunnen jullie mij verder helpen.
Ik heb hem geprobeerd en hij werkt bijna helemaal goed. Echter toont hij nu als ik naar index.php ga zowel de pagina home als de error pagina, en dat is toch niet helemaal de bedoeling ;)
Blanche
zoiets had ik ook al geprobeerd, al had ik hem niet in een else statement geplaatst, het gevolg was dat de exit ook echt zijn werk deed en de rest niet meer geladen werd en hij dus in een eindeloze loop kwam. Maar met het else statement zou het wel eens goed kunnen werken.!
Paginas includen
Je zou nog eens naar dit voorbeeld scriptje kunnen kijken. Het geeft een veilige, gecontroleerde manier van het includen van paginas.
Je zou nog eens naar dit voorbeeld scriptje kunnen kijken. Het geeft een veilige, gecontroleerde manier van het includen van paginas.
Edit:
Link geupdate
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Dat ga ik zeker eens doen, net even vluchtig doorheen gekeken en ik denk dat ik daar erg veel aan heb! Maar nu is het tijd om te gaan slapen!
Blanche schreef op 17.01.2008 23:14:
Paginas includen
Je zou nog eens naar dit voorbeeld scriptje kunnen kijken. Het geeft een veilige, gecontroleerde manier van het includen van paginas.
Je zou nog eens naar dit voorbeeld scriptje kunnen kijken. Het geeft een veilige, gecontroleerde manier van het includen van paginas.
Blanche, ik heb even naar je script gekeken en er vallen me een paar dingen op:
Binnen de functie include_page check je of $_GET['page'] gezet is, maar dat heb je op regel 88 al gedaan. De check binnen de functie lijkt me daarom overbodig. Je zou kunnen volstaan met:
Verder heb je op regel 86 dit:
Als je het zo doet, dan worden je pagina's niet geinclude wanneer je bijvoorbeeld een form als deze gebruikt en verzendt:
De request method wordt dan namelijk POST en dan gaat die if fout.
Pas deze manier zelf ook eerlijk gezegd nooit meer toe, dus het wordt tijd om eens een nieuw voorbeeld include scriptje te schrijven. Deze vind ik lang niet flexibel genoeg meer :-)
Wordt vervolgd...
Ja, zo blijf je lekker bezig ;-)
Jan Koehoorn schreef op 17.01.2008 23:55:
Inderdaad. Kon het natuurlijk weer niet laten om het direct even te doen:Ja, zo blijf je lekker bezig ;-)
Includen van paginas (2)
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$pagina = str_replace('../', '', strtolower($_GET['page']));
if (strlen($pagina) > 0) { $page = $pagina; } else { header("location: ?page=home"); }
if(file_exists($page.".php")) {
include($page.".php");
} else {
include("home.php");
}
?>
$pagina = str_replace('../', '', strtolower($_GET['page']));
if (strlen($pagina) > 0) { $page = $pagina; } else { header("location: ?page=home"); }
if(file_exists($page.".php")) {
include($page.".php");
} else {
include("home.php");
}
?>
nu is die trouwens nog niet veilig als ik onder de root wil komen geef ik toch gewoon ....// mee ipv ../
Vandaar dat ik altijd een array gebruik met paginas die geïnclude mogen worden. Op die manier is het nooit mogelijk om andere dan die vooraf gedefinieerde paginas te includen...
Doe het een keer netjes en gebruik de index om verschillende controllers aan te roepen dit kan doormiddel van een array, switch of database. Bepaal welke template gekozen moet worden. Zoveel moeilijker is het niet en het bespaart je een hoop koppijn als je de code na een half jaar nog eens bekijkt. Want dit stuk code zal straks waarschijnlijk midden in een html pagina staan waar vervolgens de php bestanden geinclude worden...
Pascal schreef op 18.01.2008 15:55:
Dan doe je dus al iets fout. Als je PHP bestanden midden in een HTML code gaat includen houd je de logica en output dus al niet meer gescheiden wat op een gegeven moment zeker tot fouten zal leiden. De fout die je waarschijnlijk het eerste tegenkomt is de 'headers already sent' foutmelding...DWant dit stuk code zal straks waarschijnlijk midden in een html pagina staan waar vervolgens de php bestanden geinclude worden...
Zoals je in mijn script kunt zien, wordt eerst alle logica afgehandeld voordat de output naar de browser verzonden wordt. Output die door PHP gegenereerd wordt, wordt tijdelijk opgeslagen in een variabele.