Ga naar inhoud

template en 404 pagina


Aanbevolen berichten

Hallo allemaal, ik heb nu voor een website een soort template systeem gemaakt waarbij gekeken wordt naar bijvoorbeeld www.website.nl/index.php?page=contact in mn index.php staat dan bovenaan het volgende.... [code:1:1dfc3a9014]<?php $page = (isset($_GET['page'])) ? $_GET['page'] : '' ; switch(strtolower($page)) { case 'products': include('pages/products.php'); break; case 'portfolio': include('pages/portfolio.php'); break; case 'about': include('pages/about.php'); break; case 'contact': include('pages/contact.php'); break; default: include('pages/home.php'); } ?>[/code:1:1dfc3a9014] Alleen als iemand een niet-bestaande pagina intoetst dan komt hij/zij standaard op de home pagina.... Is er een mogelijkheid om dan een 404-pagina weer tegeven als dit het geval is??? Ik maak trouwens gebruik van mod_rewrite voor de url....mss dat dat een probleem is...
Link naar reactie
[code:1:5d89fb120e]<? if (empty($_GET['page'])) { $page="news.php"; } if ($_GET['page'] == 'news'){ $page="news.php"; } if ($_GET['page'] == 'compilers'){ $page="compilers.php"; } if ($_GET['page'] == 'articles'){ $page="articles.php"; } if ($_GET['page'] == 'team'){ $page="team.php"; } if ($_GET['page'] == 'links'){ $page="links.php"; } if ($_GET['page'] == 'forum'){ $page="/phpBB2/index.php"; } if (file_exists($page)){ include $page; } else{ include"404.php"; } ?>[/code:1:5d89fb120e] Is wat ik gebruik. Gaat dus voor jou vooral om regel 2 en 3 : [code:1:5d89fb120e]if (empty($_GET['page'])) { $page="news.php"; } [/code:1:5d89fb120e] en [code:1:5d89fb120e]if (file_exists($page)){ include $page; } else{ include"404.php"; } [/code:1:5d89fb120e] PS: Valt me nu op hoeveel php op C++ lijkt :o !! Enig idee hoe dat komt ?
Link naar reactie
:D :D :D Heel erg bedankt, je hebt me in de goede richting gezet. Dit is wat ik nu heb. Mss heb je er zelf ook wat aan.... [code:1:2884241e51]<?php if (empty($_GET['page'])) { $_GET['page'] = ''; } switch(strtolower($_GET['page'])) { case 'products': include('pages/products.php'); break; case 'portfolio': include('pages/portfolio.php'); break; case 'about': include('pages/about.php'); break; case 'contact': include('pages/contact.php'); break; case '': include('pages/home.php'); break; default: include('errors/404.php'); } ?>[/code:1:2884241e51] Ik had al eerder gevraagd over zo'n template systeem maar iedereen zei dat dat onveilig was enzo....Maar op deze manier lijkt het me toch vrij veilig...
Link naar reactie
Ok, ik zal het even proberen duidelijk uit te leggen. Ik maak gebruik van mod_rewrite om mn url's te herschrijven. Je hebt bijvoorbeeld de pagina www.website.nl/contact. Deze wordt herschreven als www.website.nl/index.php?page=contact alles wat achter de slash staat (in dit geval contact) wordt dus de variabele page. Als ik dit dan bovenin index.php zet: [code:1:224eab3b06]<?php $page = (isset($_GET['page'])) ? $_GET['page'] : '' ; switch(strtolower($page)) { case 'products': include('pages/products.php'); break; case 'portfolio': include('pages/portfolio.php'); break; case 'about': include('pages/about.php'); break; case 'contact': include('pages/contact.php'); break; default: include('pages/home.php'); } ?>[/code:1:224eab3b06] Dan wordt er natuurlijk nooit een 404 error gegenereerd. Want alle invoer verwijst uiteindelijk naar home.php.... header("HTTP/1.0 404 Not Found"); is mooi maar waar zou ik dat dan kwijt moeten??? Want ik heb het al bij default geprobeert te zetten maar dan gebeurd er niks....
Link naar reactie
Je moet het helemaal bovenaan je pagina zetten. Daar heb je dan een scriptje die checkt of de pagina bestaat bijvoorbeeld:[code:1:25f4fedc19]if(file_exists("pages/".$page.".php")){ $include = "blaatetc."; } else{ header("HTTP/1.0 404 Not Found"); }[/code:1:25f4fedc19]Die $include doe je dan later op de pagina, lijkt me makkelijk. In je .htaccess heb je dan iets van:[code:1:25f4fedc19]ErrorDocument 404 http://blaatpagina.nl/404[/code:1:25f4fedc19]En dan moet alles werken. Er kunnen syntaxfouten in bovenstaande zitten.
Link naar reactie
Waarom kan dit niet gewoon?[code:1:f016fe0fde]<?php if (empty($_GET['page'])) { $_GET['page'] = ''; } switch(strtolower($_GET['page'])) { case 'products': include('pages/products.php'); break; case 'portfolio': include('pages/portfolio.php'); break; case 'about': include('pages/about.php'); break; case 'contact': include('pages/contact.php'); break; case '': include('pages/home.php'); break; default: header("HTTP/1.0 404 Not Found"); include('errors/404.php'); } ?>[/code:1:f016fe0fde]Wel zorgen dat er nog geen output naar de server is gestuurd voordat je een header verstuurt. - Bas
Link naar reactie
[quote:9a166de670="stierenoog"]ik krijg nu dit als response [code:1:9a166de670]HTTP/1.x 404 OK[/code:1:9a166de670]Dus dat lijkt me in orde niet??? (ik gebruik het nu zoals Basje beschreef)[/quote:9a166de670] Hopelijk maak je een tipfoutje en bedoel je 200 OK (een 404 OK vind ik zeer onwaarschijnlijk). De oorzaak hiervoor heeft Bas al genoemd... [quote:9a166de670="BasHamar"]Wel zorgen dat er nog geen output naar de server is gestuurd voordat je een header verstuurt.[/quote:9a166de670] Op het moment dat je output verstuurt en er is geen HTTPheader gedeclareerd, dan wordt er automatische een '200 OK' mee gegeven. -Rémy
Link naar reactie
idd er is iets heel erg vreemds aan de hand... Want als de pagina wel gevonden kan worden krijg ik ook geen 200 OK... Soms zie ik een een 304 not modified ofzo.....hmmm erg vreemd.... [Edit]Die 200 OK krijg ik nu wel dat werkt. Maar waarom ik een 404 OK krijg is me een raadsel. Het moet toch 404 Not Found zijn??? Dit is wat ik mee stuur [code:1:6b5095b8cd]header("HTTP/1.0 404 Not Found");[/code:1:6b5095b8cd]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...