anoniem Geplaatst: 9 april 2004 Delen Geplaatst: 9 april 2004 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... Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 [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 ? Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 :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... Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 Gebruik liever de HTTP 404 error in plaats van deze oplossing. En zorg dan dat je met .htaccess de locatie van die error weergeeft. Op die manier zorg je dat bots, zoals Google ook begrijpen dat de pagina niet bestaat. Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 Jah maar op de manier zoals ik pagina's include krijg je dus nooit een http 404 error....vandaar dat ik een andere oplossing zocht.... Maar als jij een oplossing weet hoe ik mn standaard script zo verander dat er wel gewone http 404 foutmeldingen komen....GRAAG!!! Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 [code:1:b474772b49]header("HTTP/1.0 404 Not Found");[/code:1:b474772b49] Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 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.... Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 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. Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 hmmm raar....Ik heb het net geprobeert maar mn 404 pagina wordt niet geladen als die header verstuurd wordt... Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 Staat alles in je .htaccess in de goede volgorde? mod_rewrite onderaan wil dat zeggen en dit bovenaan? En je hebt een volledige absolute URI gebruikt? Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 Wat is er eigenlijk zo fout aan mijn 404oplossing (2e post hierin) ? Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 Die is dus bot-onvriendelijk. En daarnaast kun je beter volgens standaarden werken (HTTP) dan je eigen dingen in elkaar frutselen. Je zou het dan ook niet meer een 404 pagina kunnen noemen, want dat verwijst naar de HTTP error. Quote Link naar reactie
anoniem Geplaatst: 9 april 2004 Auteur Delen Geplaatst: 9 april 2004 [quote:e3ced2fb2e="turbo-pascal"]Wat is er eigenlijk zo fout aan mijn 404oplossing[/quote:e3ced2fb2e]De syntax ;) Quote Link naar reactie
anoniem Geplaatst: 10 april 2004 Auteur Delen Geplaatst: 10 april 2004 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 Quote Link naar reactie
anoniem Geplaatst: 10 april 2004 Auteur Delen Geplaatst: 10 april 2004 Hey Basje, Voorlopig heb ik em ook zo. Maar als ik met firefox de headers ga bekijken zie ik geen http 404 - file not found.....Of kan je dat zo niet zien....Want ik wil eigenlijk wel even zeker weten dat die header meegestuurd wordt.... Quote Link naar reactie
anoniem Geplaatst: 10 april 2004 Auteur Delen Geplaatst: 10 april 2004 Heb je liveheaders oid geinstalleerd? Daar kun je het zien. Quote Link naar reactie
anoniem Geplaatst: 10 april 2004 Auteur Delen Geplaatst: 10 april 2004 Hey super handige extension zeg ik krijg nu dit als response [code:1:d9c2ce3a1a]HTTP/1.x 404 OK[/code:1:d9c2ce3a1a] Dus dat lijkt me in orde niet??? (ik gebruik het nu zoals Basje beschreef) Quote Link naar reactie
anoniem Geplaatst: 10 april 2004 Auteur Delen Geplaatst: 10 april 2004 Helemaal in orde :wink: Quote Link naar reactie
anoniem Geplaatst: 11 april 2004 Auteur Delen Geplaatst: 11 april 2004 [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 Quote Link naar reactie
anoniem Geplaatst: 11 april 2004 Auteur Delen Geplaatst: 11 april 2004 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] Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen