[PHP + MYSQL]Hoe content opvragen met ?id=12

Pagina: 1
Acties:
  • 187 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01 14:21

bluesbrother

Blues Rocks!!!

Topicstarter
Sorry van de titel. Moest iets worden als: content opvragen met ?id=12
hoe doen jullie dat.
Drukte te snel op submit en kan de titel niet aanpassen bij een edit.

Hallo allemaal.
Ik ben bezig om te stoppen met het werken met frames.
Kijk hier maar even: Afscheid van Frames

Ik ben dus nu aan het uitpuzzelen hoe ik een index pagina moet maken die elke keer dat er ergens op geklikt wordt met de bijbehorende content komt. Ik heb toen het onderstaande in elkaar gezet.
Maar ik kan me voorstellen dat dit niet helemaal de juiste techniek is of de meest efficiente.
Het gaat me nu niet om een komma die verkeerd staat of een query die mooier kan maar om de
globale techniek van wat ik hieronder doe. Misschien dat het makkelijker kan, want ik heb wel eens de neiging om als newbie moeilijker te denken dan nodig is.

Graag jullie input.


Dit is mijn index.php
Als je die opvraagd dan wordt er gekeken of er een pagina ID en er een pageform is.
de id zal bepalen welke content geladen wordt. De id komt overeen met een id in de tabel
waar ook de content in text en htmp en soms php in staat.

code:
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
27
28
29
30
31
32
33
34
35
 $GetPage  = array_merge($_GET, $_POST);
// het samenbrengen van mogelijke GET of POST informatie 
                     
         if ($GetPage['pageform'] == ""):
             $GetPage['id'] = 100;
// hier kijkt deze of pageform leeg is en zo ja dan wordt Getpage gevuld 
// met 100 welke dus Home content is 
                          
$GoPage =  MY_PAGES . "fillpage_blank.php?id=" .$GetPage['id'];
    // My pages is een constante die het pad geeft naar waar de pagina's staan
    // ook wordt hier een lege template gegegeven als pagina vorm.
    // er zijn dus verschillende templates  met een verschillende opmaak 
    // die hier worden gechecked.  
                            
elseif ($GetPage['pageform'] == 0):
$GoPage =  MY_PAGES . "fillpage_metplaatje.php?id=" .$GetPage['id'];
                             
elseif ($GetPage['pageform'] == 1):
                                                          
$GoPage =  MY_PAGES . "fillpage_leeg.php?id=" .$GetPage['id'];

elseif ($GetPage['pageform'] == 3):
if ($GetPage['id']==106):
$GoPage =  MY_PAGES . "fillpage_anders.php";
endif;
endif;
                     


// hier word de pagina in een iframe geladen.
// dit kan later ook een nieuwe index.php worden met de gevraagde content.
 
print "<td><IFRAME ALIGN=\"middle\" HEIGHT=\"300\" FRAMEBORDER= \"1\" 
SCROLLING= \"DEFAULT\" WIDTH=\"100%\" SRC=\"" . $GoPage . "\">";
 print "</IFRAME></td>";


In de template gebeurd dan het volgende:
code:
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
// dit is dan de template die de content + html uit de database haalt.
// In de templates staat dan het volgende die de ID doorkrijgt van index.php en 
// deze id gebruikt in de query om de juiste record er bij te zoeken. 
// de ID is altijd gelijk aan het juiste pagina nummer. 
// die tabel heeft  een aantal kolommen:
// id, PageID, ContentBodyBlok1, ContentBodyBlok2, ContentTitle
// Het geeft dan de content. 

$WhatPage  = array_merge($_GET, $_POST);
                
$MyConnection = ConnectMe();

//print $WhatPage[id];
$my_query = "SELECT id, PageID, ContentBodyBlok1, ContentBodyBlok2, 
ContentTitle  FROM ContentPages where PageID = '$WhatPage[id]'"; 

$result = mysql_query($my_query)
    or Die ("Ongeldige query <br>" . mysql_error());
$GetContent = mysql_fetch_array($result);

echo "<b>" . $GetContent['ContentTitle']. "</b>";
echo "<br><br>";
echo $GetContent['ContentBodyBlok1'];
echo "<br><br>";
echo $GetContent['ContentBodyBlok2'];

[ Voor 11% gewijzigd door bluesbrother op 09-11-2005 09:09 . Reden: titel ]

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


Acties:
  • 0 Henk 'm!

  • MeIsTwisted
  • Registratie: November 2001
  • Laatst online: 28-07-2023

MeIsTwisted

not a Twisted mind

waarom niet gewoon zoiets als

code:
1
2
3
4
5
include("header.php"); //hierin gooi je wat op elke pagina voor content komt.

//hier gooi je je content

include("footer.php"); //hierin gooi je wat op elke pagina nacontent komt.


Ik zou geen html in je db zetten.

[ Voor 20% gewijzigd door MeIsTwisted op 09-11-2005 09:11 ]

Multimonitor is relax :P


Acties:
  • 0 Henk 'm!

  • BlackIce
  • Registratie: Oktober 2003
  • Laatst online: 02-07 15:18
Je zou het misschien beter op kunnen delen met ?page_id=3&sub_id=5 oid. Ik zou iig geen ?id= gaan gebruiken, google indexeert geen pagina's met ?id= erin.

Acties:
  • 0 Henk 'm!

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01 14:21

bluesbrother

Blues Rocks!!!

Topicstarter
MeIsTwisted schreef op woensdag 09 november 2005 @ 09:11:
waarom niet gewoon zoiets als

include("header.php"); //hierin gooi je wat op elke pagina voor content komt.
//hier gooi je je content
include("footer.php"); //hierin gooi je wat op elke pagina nacontent komt.

Ik zou geen html in je db zetten.
IK heb een header en een footer en ook worden nog andere bestanden geinclude maar
hoe doe ik dat dan met de content? want:
//hier gooi je je content
Kom ik niet zo ver :9

En waarom geen html in de DB.
Want een PHP form (inlog pagina met alle php ook vanuit de db laat ie wel zien alleen hij werkte niet meer. Ben nog niet achter waarom niet. Maar denk dat het hier mee t emaken heeft.

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 20:53
Je wil van frames af, en propt alles dus maar in een iframe? :?

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01 14:21

bluesbrother

Blues Rocks!!!

Topicstarter
Nou ja dat was voor deze website.
maar het gaat dus om de techniek zoals ik al schreef.
code:
1
2
// hier word de pagina in een iframe geladen.
// dit kan later ook een nieuwe index.php worden met de gevraagde content.

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


Acties:
  • 0 Henk 'm!

  • ikke007
  • Registratie: Juni 2001
  • Laatst online: 18-09 14:10
header.php
HTML:
1
2
3
4
5
<html>
  <head>
    <title>:: MyPage ::</title>
  </head>
  <body>


footer.php
HTML:
1
2
  </body>
</html>



index.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if(!isset($_GET['pid']) || (int) $_GET['pid'] == 0){
  $pid = 1;
}
//het is een numerieke pagina identifier



include_once('header.php');
//oplossing voor weinig pagina's
switch($_GET['pid']){
  case 3:
    include_once('gastenboek.php');
  break;
  case 2:
    include_once('links.php');
  break;
  case 1:
  default:
    include_once('home.php');
  break;    
}
include_once('footer.php');


index.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//oplossing met wat meer pagina's
//tabel: paginas velden: id (int),pagina (varchar)
if(!isset($_GET['pid']) || (int) $_GET['pid'] == 0){
  $pid = 1;
}
//het is een numerieke pagina identifier
$sql_pagina = "SELECT pagina FROM paginas WHERE id = '".$pid."' LIMIT 1";
$exc_pagina = mysql_query($sql_pagina) or die(mysql_error());
if(!list($pagina) = myqsl_fetch_row($exc_pagina)){
  die("Something freaky-deaky went on");
}
include_once('header.php');
include_once($pagina);
include_once('footer.php');


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//iets crea bea's tussen de beide oplossingen hierboven
//include.php
$PAGINAS[1] = 'home.php';
$PAGINAS[2] = 'links.php';
$PAGINAS[3] = 'gastenboek.php';
$PAGINAS[4] = 'about.php';

//index.php
include_once('include.php');

if(!isset($_GET['pid']) || (int) $_GET['pid'] == 0){
  $pid = 1;
}
else{
  if(!isset($PAGINAS[$pid])){
    $pid = 1;
  }
}

include_once('header.php');
include_once($PAGINAS[$pid]);
include_once('footer.php');

[ Voor 16% gewijzigd door ikke007 op 09-11-2005 10:10 ]

Lets remove all security labels and let the problem of stupidity solve itself


Acties:
  • 0 Henk 'm!

Verwijderd

icemancool schreef op woensdag 09 november 2005 @ 09:15:
Je zou het misschien beter op kunnen delen met ?page_id=3&sub_id=5 oid. Ik zou iig geen ?id= gaan gebruiken, google indexeert geen pagina's met ?id= erin.
Volgens mij is dat niet meer waar. Ik ben zelf voor een website bezig geweest met google, en verschillende pagina's waarbij ?id= werd gebruikt worden gewoon prima gevonden.

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:47

BCC

Verwijderd schreef op woensdag 09 november 2005 @ 10:24:
[...]
Volgens mij is dat niet meer waar. Ik ben zelf voor een website bezig geweest met google, en verschillende pagina's waarbij ?id= werd gebruikt worden gewoon prima gevonden.
Ze worden wel geïndext, maar het is niet goed voor je ranking. Ik heb wel eens gelezen dat google een maximum aantal ID pagina's indexed ivm cyclische en/of error pagina's. Dan kun je beter een rewrite oid doen.

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Je zou ook gewoon alle id`s weg kunnen laten en met multiviews werken. Een stuk netter en een stuk leesbaarder voor zoekmachines...

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01 14:21

bluesbrother

Blues Rocks!!!

Topicstarter
Wat zijn multivieuws? (vroeg de leek)
Ook:
ZOu iemand kort kunnen beschrijven wat voor mogelijkheden er allemaal zijn om te doen wat ik in de OP gedaan heb. Misschien dat er dan verschillende mensen kunnen vertellen wat ze wel en niet goed aan een bepaalde techniek vinden.?

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
iKKe007 schreef op woensdag 09 november 2005 @ 10:09:
header.php
index.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(!isset($_GET['pid']) || (int) $_GET['pid'] == 0){
  $pid = 1;
}
//het is een numerieke pagina identifier

include_once('header.php');
//oplossing voor weinig pagina's
switch($_GET['pid']){
  case 3:
    include_once('gastenboek.php');
  break;
  case 2:
    include_once('links.php');
  break;
  case 1:
  default:
    include_once('home.php');
  break;    
}
include_once('footer.php');
Als $_GET['pid'] niet aan bepaalde voorwaarden voldoet, zet je $pid op 1. Vervolgens ga je alsnog werken met $_GET['pid']. Die eerste beveiliging heeft dus geen nut (tenzij register_globals aan staat).
index.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
//oplossing met wat meer pagina's
//tabel: paginas velden: id (int),pagina (varchar)
if(!isset($_GET['pid']) || (int) $_GET['pid'] == 0){
  $pid = 1;
}
//het is een numerieke pagina identifier
$sql_pagina = "SELECT pagina FROM paginas WHERE id = '".$pid."' LIMIT 1";
$exc_pagina = mysql_query($sql_pagina) or die(mysql_error());
if(!list($pagina) = myqsl_fetch_row($exc_pagina)){
  die("Something freaky-deaky went on");
}
Hier precies hetzelfde, waar komt $pid in de query vandaan? Je vertrouwt aan de ene kant op register_globals, aan de andere kant wil je af en toe wel $_GET gebruiken.
PHP:
1
2
3
4
         if ($GetPage['pageform'] == ""):
             $GetPage['id'] = 100;
// hier kijkt deze of pageform leeg is en zo ja dan wordt Getpage gevuld 
// met 100 welke dus Home content is 
Dat soort commentaar is vrij overbodig: iedereen die een beetje verstand heeft van PHP kan sneller de code lezen dan het commentaar.

Acties:
  • 0 Henk 'm!

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01 14:21

bluesbrother

Blues Rocks!!!

Topicstarter
GlowMouse schreef op woensdag 09 november 2005 @ 10:44:

Dat soort commentaar is vrij overbodig: iedereen die een beetje verstand heeft van PHP kan sneller de code lezen dan het commentaar.
Ik krijg hier ook wel eens op mijn donder dat ik niet duidelijk genoeg ben. En ik mijn code van commentaar moet voorzien. 8)7

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
bluesbrother schreef op woensdag 09 november 2005 @ 11:01:
[...]
Ik krijg hier ook wel eens op mijn donder dat ik niet duidelijk genoeg ben. En ik mijn code van commentaar moet voorzien. 8)7
Recent is er een discussie geweest over het nodig/overbodig zijn van commentaar. Misschien heb je er wat aan.

Acties:
  • 0 Henk 'm!

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01 14:21

bluesbrother

Blues Rocks!!!

Topicstarter
Ik zag ook dat het met directories kan:
Hoe werkt dat?
zoals deze
http://www.nieuws.nl/26227

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

bluesbrother schreef op woensdag 09 november 2005 @ 12:18:
Ik zag ook dat het met directories kan:
Hoe werkt dat?
zoals deze
http://www.nieuws.nl/26227
Zie P&W FAQ - PHP

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

bluesbrother schreef op woensdag 09 november 2005 @ 12:18:
Ik zag ook dat het met directories kan:
Hoe werkt dat?
zoals deze
http://www.nieuws.nl/26227
Pas je een beetje op dat je zelf ook nog dingen opzoekt? Het is prima dat je hier vragen stelt waar je niet uit komt, maar dit staat zoals gorgi al zegt, letterlijk vermeld in onze FAQ, in het stukje over mod_rewrite/multiviews. :)
icemancool schreef op woensdag 09 november 2005 @ 09:15:
Je zou het misschien beter op kunnen delen met ?page_id=3&sub_id=5 oid. Ik zou iig geen ?id= gaan gebruiken, google indexeert geen pagina's met ?id= erin.
Hmm, bij mijn site lukt dat wel. Al gaat het zo te zien niet altijd goed. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01 14:21

bluesbrother

Blues Rocks!!!

Topicstarter
-NMe- schreef op woensdag 09 november 2005 @ 12:40:
[...]

Pas je een beetje op dat je zelf ook nog dingen opzoekt? Het is prima dat je hier vragen stelt waar je niet uit komt, maar dit staat zoals gorgi al zegt, letterlijk vermeld in onze FAQ, in het stukje over mod_rewrite/multiviews. :)

[...]

Hmm, bij mijn site lukt dat wel. Al gaat het zo te zien niet altijd goed. :P
Ja ik heb nu wel even genoeg om er weer in te duiken.

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


Acties:
  • 0 Henk 'm!

  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

-NMe- schreef op woensdag 09 november 2005 @ 12:40:
[...]

Pas je een beetje op dat je zelf ook nog dingen opzoekt? Het is prima dat je hier vragen stelt waar je niet uit komt, maar dit staat zoals gorgi al zegt, letterlijk vermeld in onze FAQ, in het stukje over mod_rewrite/multiviews. :)

[...]

Hmm, bij mijn site lukt dat wel. Al gaat het zo te zien niet altijd goed. :P
Hij geeft ook mooi aan dat het supplemental pages zijn. Op zich ook wel leuk. Hij pakt btw niet alle ID's, das wel minder...

My personal videoteek: -Clique-; -NMe- is een snol!


Acties:
  • 0 Henk 'm!

Verwijderd

Beetje korte tip, heb zelf ook met dat gemeuk gespeeld. Meer met de insteek om geen lante ?var1=waarde1&var2=waarde2 etc in me URI's te hebben.

Ik heb de hele site navigatie in de custom 404 gezet.

links als plaatje45.html worden dan in de custom 404 omgezet tot hetgeen je wilt.

just a thought...

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op woensdag 09 november 2005 @ 14:55:
Ik heb de hele site navigatie in de custom 404 gezet.

links als plaatje45.html worden dan in de custom 404 omgezet tot hetgeen je wilt.
Je hebt WAT?!?!? :X

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Curry zegt het eigenlijk al heel erg charmant, maar om het even uit te leggen: je krijgt nu een 404 Not found header, terwijl je eigenlijk een 200 Ok header wil hebben. Google zal 404 pagina's niet indexeren, en het getuigt gewoon ook van een complete designfout. Ooit van mod_rewrite gehoord? :X

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Nog afgezien daarvan ben ik benieuwd wat het effect is van de IE-setting "Show friendly HTTP error messages" op zo'n site 8)7

[ Voor 6% gewijzigd door curry684 op 09-11-2005 17:18 ]

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 30-04 10:28

JeRa

Authentic

Meest originele en tevens foute oplossing ooit :D maar goed, je even verdiepen in mod_rewrite i.c.m. .htaccess lijkt me niet verkeerd ;)

ifconfig eth0 down


Verwijderd

Wat is er trouwens mis met gewoon meerdere pagina's maken?

Dit soort code
code:
1
2
3
4
5
6
7
8
9
10
11
12
switch($_GET['pid']){
  case 3:
    include_once('gastenboek.php');
  break;
  case 2:
    include_once('links.php');
  break;
  case 1:
  default:
    include_once('home.php');
  break;    
}

heb ik eigenlijk een hekel aan.
Je zoekt je een ongeluk als je een linkje naar een andere pagina wil plaatsen, (Was de routebeschrijving nu ID 173 of toch 311?),en het voegt eigenlijk niets toe.

Ook veranderd dit niets aan het wel of niet gebruiken van Frames. Ook frames kun je op deze manier genereren, en als je geen frames wilt kun je bijvoorbeeld Tables gebruiken maar (veel) beter nog je eens verdiepen in CSS.

Ik ben het dan ook met MelsTwisted eens:
waarom niet gewoon zoiets als
code:
1
2
3
4
5
include("header.php"); //hierin gooi je wat op elke pagina voor content komt.

//hier gooi je je content

include("footer.php"); //hierin gooi je wat op elke pagina nacontent komt.
Gewoon per pagina een html file aanmaken met wat include blokken voor repeterende gegevens.
Meestal stukken duidelijker

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op donderdag 10 november 2005 @ 02:06:
Wat is er trouwens mis met gewoon meerdere pagina's maken?

Dit soort code
code:
1
//blaat

heb ik eigenlijk een hekel aan.
Je zoekt je een ongeluk als je een linkje naar een andere pagina wil plaatsen, (Was de routebeschrijving nu ID 173 of toch 311?),en het voegt eigenlijk niets toe.
Nee, 200 aparte PHP pagina's schrijven werkt lekker. Op elke pagina moet je weer steeds dezelfde dingen doen aan het begin (databaseconnectie maken, headers includen, enz) en aan het eind (template weergeven, databaseconnectie verbreken, variabelen opruimen, enz). Nu kun je dat wel weer in header.php en footer.php gaan zetten zoals je suggereert, maar dan trek je code uit elkaar die bij elkaar hoort, en juist dat vind ik weer erg lelijk.

Bovendien hoef je helemaal niets te zoeken als je defines/constanten/arrays gebruikt in plaats van harde id's. En dankzij mod_rewrite krijg je ook geen lelijke URL. Wat dat betreft is het dus makkelijker om één PHP-script te maken dat alles kan verwerken, want je hebt alle voordelen die je met losse files ook hebt, maar geen van de nadelen. :)

Overigens heb ik sites gemaakt op beide manieren, dus mijn keuze is wel degelijk weloverwogen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Vanwaar je luide uitroep? Jij hebt blijkbaar nooit voor apache een custom 404 gebruikt?

Een custom 404-handler kan prima gebruikt worden als een "als apache het niet weet, zoek ik het wel voor hem op"-systeem. Je kan dan ook domweg de response-code weer terugzetten naar 200, 302 of wat je ook maar wilt (je moet het alleen niet vergeten anders blijft het 404).
-NMe- schreef op woensdag 09 november 2005 @ 15:55:
Curry zegt het eigenlijk al heel erg charmant, maar om het even uit te leggen: je krijgt nu een 404 Not found header, terwijl je eigenlijk een 200 Ok header wil hebben. Google zal 404 pagina's niet indexeren, en het getuigt gewoon ook van een complete designfout. Ooit van mod_rewrite gehoord? :X
En je kan dus ook gewoon domweg een 200 sturen. De header die apache er aan geeft wordt dan wel overschreven. Zo kan je ook custom 400, 401 en zelfs 500-handlers maken. Heel handig hoor en niets om zo over te vallen.
Misschien is mod_rewrite een betere oplossing, maar ik vind het idee van een custom handler helemaal niet zo vreemd. En zeker als je mod_rewrite niet kan of mag gebruiken is het een prima oplossing.
curry684 schreef op woensdag 09 november 2005 @ 17:18:
Nog afgezien daarvan ben ik benieuwd wat het effect is van de IE-setting "Show friendly HTTP error messages" op zo'n site 8)7
Dat is geen enkel probleem. En wel om twee redenen, 1) de handler van IE geeft de eigen melding pas weer bij een behoorlijk kleine response-grootte, 2) er komt niet eens een 404-code terug, maar bijvoorbeeld 200.

[ Voor 5% gewijzigd door ACM op 11-11-2005 10:39 ]


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

ACM schreef op vrijdag 11 november 2005 @ 10:37:
[...]

Vanwaar je luide uitroep? Jij hebt blijkbaar nooit voor apache een custom 404 gebruikt?

Een custom 404-handler kan prima gebruikt worden als een "als apache het niet weet, zoek ik het wel voor hem op"-systeem. Je kan dan ook domweg de response-code weer terugzetten naar 200, 302 of wat je ook maar wilt (je moet het alleen niet vergeten anders blijft het 404).
Sorry, maar dit is onzin. In lekentermen: we laten iedereen eerst hun auto vol met 120km/u in een muur rijden zodat ze stil staan en we ze er dan persoonlijk op kunnen wijzen dat er een wegomleiding is. Een 404 gebruiken om content te serven is het equivalent van een exception gebruiken in C/C++/Java voor je program flow: zeg maar een ranzige performancewise rampzalige hack om niet met goto te hoeven werken.

Sowieso leg je dependencies voor het inhoudelijk correct functioneren van je programmatuur in de configuratie van de server in plaats van de code, wat nog een paar punten op de lijst van "niet gewenst" scoort en daarmee wmb ver boven de 100% eindigt op die schaal.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

curry684 schreef op vrijdag 11 november 2005 @ 11:13:
Sorry, maar dit is onzin. In lekentermen: we laten iedereen eerst hun auto vol met 120km/u in een muur rijden zodat ze stil staan en we ze er dan persoonlijk op kunnen wijzen dat er een wegomleiding is. Een 404 gebruiken om content te serven is het equivalent van een exception gebruiken in C/C++/Java voor je program flow: zeg maar een ranzige performancewise rampzalige hack om niet met goto te hoeven werken.
Zo'n onzin is dat toch niet. Er zijn legio sites die een search uitvoeren op het moment dat je een niet bestaande pagina opvraagt. Ik noem het gebruikersgemak. Volgens mij is dat wat ACM bedoeld(?).

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Er is imho wel een verschil tussen
1: Een fout pagina met een uitgebreide user support
2: Een navigatie systeem dat afhankelijk is van de errorhandler

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
curry684 schreef op vrijdag 11 november 2005 @ 11:13:
In lekentermen: we laten iedereen eerst hun auto vol met 120km/u in een muur rijden zodat ze stil staan en we ze er dan persoonlijk op kunnen wijzen dat er een wegomleiding is.
Je voorbeeld is wel heel erg overdreven. Ja, het levert een performancehit op, maar niet eens zo'n grote, er wordt tenslotte sowieso wel php uitgevoerd dus dat levert je geen overhead op. Je gebruikt alleen een wat langer pad om bij de php terecht te komen.
Een 404 gebruiken om content te serven is het equivalent van een exception gebruiken in C/C++/Java voor je program flow: zeg maar een ranzige performancewise rampzalige hack om niet met goto te hoeven werken.
Ook hier gaat je vergelijking mis. Want bij die methodes zijn er prima oplossingen die net zo goed of beter werken. Bovendien is de relatieve performancehit vziw lang niet zo groot als bij dergelijke zaken. Maar in het geval van die custom-handler zijn er niet zo veel oplossingen die beter werken, mod_rewrite is ook niet altijd toepasbaar of beschikbaar.
Sowieso leg je dependencies voor het inhoudelijk correct functioneren van je programmatuur in de configuratie van de server in plaats van de code, wat nog een paar punten op de lijst van "niet gewenst" scoort en daarmee wmb ver boven de 100% eindigt op die schaal.
Wat je ook met de door -NMe- voorgestelde mod_rewrite-oplossing doet.

[ Voor 5% gewijzigd door ACM op 11-11-2005 11:29 ]


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op vrijdag 11 november 2005 @ 11:19:
[...]
Zo'n onzin is dat toch niet. Er zijn legio sites die een search uitvoeren op het moment dat je een niet bestaande pagina opvraagt. Ik noem het gebruikersgemak. Volgens mij is dat wat ACM bedoeld(?).
Nee het gaat hier over:
Verwijderd schreef op woensdag 09 november 2005 @ 14:55:
Ik heb de hele site navigatie in de custom 404 gezet.
Dat is geen gebruikersgemak. Dat is geen behulpzame search. Dat is geen vriendelijke hulp bij typfouten met suggesties voor waar je dan wel moet zijn. Dat is de hele site navigatie in de custom 404 gezet.

Dat is ranzig.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Janoz schreef op vrijdag 11 november 2005 @ 11:23:
Er is imho wel een verschil tussen
1: Een fout pagina met een uitgebreide user support
2: Een navigatie systeem dat afhankelijk is van de errorhandler
En dat ben ik met je eens, maar dat maakt de boel nog niet gelijk maar helemaal fout. Als jij naast mod_rewrite nog een andere oplossing weet om apache een enkele file uit te laten voeren hoor ik het graag. Niet dat ik het zelf maar ergens gebruik atm, maar het is altijd interessant om dat soort dingen te weten :)

Acties:
  • 0 Henk 'm!

Verwijderd

Yup, dat is heel smerig...

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

ACM schreef op vrijdag 11 november 2005 @ 11:28:
[...]

Je voorbeeld is wel heel erg overdreven. Ja, het levert een performancehit op, maar niet eens zo'n grote, er wordt tenslotte sowieso wel php uitgevoerd dus dat levert je geen overhead op. Je gebruikt alleen een wat langer pad om bij de php terecht te komen.
Ergo je onderbreekt de normale goedlopende flow om via een uitzonderingspositie op het goede pad uit te komen :) En je neemt de performancehit van Apache die het hele filesysteem en al z'n configs af heeft gezocht naar een nette manier om die resource te kunnen leveren.
[...]

Ook hier gaat je vergelijking mis. Want bij die methodes zijn er prima oplossingen die net zo goed of beter werken.
Mod_rewrite functioneert toch ook?
Bovendien is de relatieve performancehit vziw lang niet zo groot als bij dergelijke zaken. Maar in het geval van die custom-handler zijn er niet zo veel oplossingen die beter werken, mod_rewrite is ook niet altijd toepasbaar of beschikbaar.
Als je niet bij mod_rewrite kunt kun je ook geen custom errorhandlers definieren, of je hoster heeft wel een extreem vreemde constructie bedacht ;)
[...]

Wat je ook met de door -NMe- voorgestelde mod_rewrite-oplossing doet.
Fout: een website zonder mod_rewrite werkt nog steeds. In React kan ik dit topic nog steeds opvragen met http://gathering.tweakers...=list_messages&id=1085512 of iets dergelijks. Dat de site-interne navigatie niet meer klopt is op dat moment een templateprobleem wat zuiver gezien ook "configuratie van de software" is. Een site die voor de navigatie leunt op errorhandlers is compleet stuque als de configuratie niet klopt.

[ Voor 5% gewijzigd door curry684 op 11-11-2005 11:36 ]

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

ACM schreef op vrijdag 11 november 2005 @ 11:30:
Als jij naast mod_rewrite nog een andere oplossing weet om apache een enkele file uit te laten voeren hoor ik het graag.
Gewoon Tomcat erachter hangen en vervolgens een leuke servlet implementeren of een bestaand MVC framework gebruiken ;).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
curry684 schreef op vrijdag 11 november 2005 @ 11:34:
Mod_rewrite functioneert toch ook?
Mod_rewrite is een regexp-engine om een request van de ene vorm in de andere om te schrijven. Met php kan je uiteraard _veel_ meer processing doen. Magoed dat is over het algemeen wel op te vangen door de mod_rewrite-rule dan ook alles maar naar een enkele file te laten sturen.
Als je niet bij mod_rewrite kunt kun je ook geen custom errorhandlers definieren, of je hoster heeft wel een extreem vreemde constructie bedacht ;)
Mod_rewrite is een aparte module die vast wel eens uitstaat. Nog afgezien van het feit dat je dus rechten moet hebben om die engine aan te zetten voor jouw site. Custom error handlers is vziw core functionaliteit en hoeft volgens mij ook niks bijzonders voor ingesteld te worden om het in een .htaccess toe te staan.

[/advocaat van de duivel-modus]

[ Voor 3% gewijzigd door ACM op 11-11-2005 11:49 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Als je dan per se sitenavigatie in php wilt implementeren (wat ik zelf wel handiger vind overigens, omdat je dan geen gekloot hebt het maintainen van een .htaccess), doe het dan via multiviews. Het resultaat is hetzelfde als een custom error handler, maar dan op een nette manier. En dan kun je je custom error handler gebruiken waarvoor ie echt bedoeld is: het afvangen van errors.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1