Soort van URL Mapping in PHP

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • PageFault
  • Registratie: April 2002
  • Laatst online: 10-09 19:15
Mijn vraag
Een hele stomme, n00b, beginnersvraag: afhankelijk van de URL, wil ik gewoon dat steeds dezelfde PHP file wordt aangeroepen, maar dan met als parameter alles wat erachter komt. Ik wil dat bij voorkeur niet doen met bijv. www.url.com/index.php?parameter, maar meer zoiets in de vorm: www.url.com/klant1
klant1 is dan de parameter.

Relevante software en hardware die ik gebruik
Apache
PHP

Wat ik al gevonden of geprobeerd heb
Met URL mapping in HTACCESS files kun je heel eenvoudig afhankelijk van de URL een andere URL aanroepen, maar ik wil dus dat maar 1 PHP file wordt aangeroepen, dus daar red ik het niet mee.

Nu vind ik in deze link https://stackoverflow.com...395650/url-mapping-in-php hetvolgende wat op mijn situatie lijkt:
Other than using mod_rewrite, as already reported you can do a little of magic with a simple trick.

Put into the .htaccess a directive like this one

code:
1
2
3
<FilesMatch "^servlet$"> 
  ForceType application/x-httpd-php
</FilesMatch>


substitute ^servlet$ with a regular expression of your choice (it will be the name of your dispatcher)

The file servlet should be similar to this

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  $data = explode('/',$HTTP_SERVER_VARS['PATH_INFO']); // $data[0] always empty
  $fileToInclude = $data[1].'.php';
  if (file_exists($data[1]) {
     $params=array_slice($data,2); // you can do here something more sophisticated
                                   // for example sanitize parameters or assemble 
                                   // an hash
     include ($fileToInclude);     //Think to this file as a servlet
  } else {
    // issue a 404 error, maybe one of the 500 series
  }
?>


The url can have the form: http://yoursite/servlet/reports/sales/2009 you can also reach the form http://yoursite/reports/sales/2009 plaiyng a little with the .htacces and the dispatcher.

This method has the advantage that mod_rewrite is not required as FilesMatch (1.3+) and ForceType (2.0+) are in the apache core

See for reference
http://httpd.apache.org/docs/2.2/mod/core.html#forcetype
http://httpd.apache.org/docs/2.2/mod/core.html#filesmatch
http://www.devarticles.co...pe-For-Nicer-Page-URLs/1/
Nou is mijn kennis van zowel Apache als PHP te beperkt, maar laten we met de eerste beginnen: wanneer de FileMatch in de HTACCESS staat, hoe weet Apache dan welk PHP bestand uitgevoerd moet worden?

Of doe ik te moeilijk en is er een simpelere methode?

Alle reacties


Acties:
  • +3 Henk 'm!

  • CyPh
  • Registratie: Februari 2002
  • Laatst online: 28-08 09:27
RewriteEngine on
RewriteRule ^(.*)$ /index.php?$1 [L]

Uw advertentie hier?


Acties:
  • 0 Henk 'm!

  • PageFault
  • Registratie: April 2002
  • Laatst online: 10-09 19:15
CyPh schreef op woensdag 23 januari 2019 @ 14:16:
RewriteEngine on
RewriteRule ^(.*)$ /index.php?$1 [L]
Dat is vele malen simpeler :) Thanks, dat ga ik vanavond of morgen proberen!

Acties:
  • 0 Henk 'm!

  • Xantios
  • Registratie: Maart 2006
  • Laatst online: 17-09 15:29
Het lijkt er op dat je een soort page-router probeert te bouwen?

google ook eens naar "php page router" ik denk dat je wel weet wat je zoekt maar wellicht niet de goede woorden er voor had gevonden ?:)

Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Xantios schreef op donderdag 24 januari 2019 @ 00:22:
Het lijkt er op dat je een soort page-router probeert te bouwen?

google ook eens naar "php page router" ik denk dat je wel weet wat je zoekt maar wellicht niet de goede woorden er voor had gevonden ?:)
Dit maar even iets verder terug. Wat wil je precies gaan bouwen? Want als je een heel framework met page rerouting wil gaan inbouwen. Waarom ga je dan geen framework als Zend of Symphony gebruiken?

Acties:
  • +1 Henk 'm!

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

De oplossing van @CyPh gebruik ik zelf ook altijd. Vervolgens schrijf ik een class die alles afhandelt en op basis van de aanroep de juiste file(s) include.

@4Real Valide optie, maar als je dit soort dingen standaard met een bestaand framework oplost dan leer je hoe het framework werkt en niet hoe de techniek werkt :9

Hoeder van het Noord-Meierijse dialect


Acties:
  • 0 Henk 'm!

  • Xantios
  • Registratie: Maart 2006
  • Laatst online: 17-09 15:29
4Real schreef op donderdag 24 januari 2019 @ 07:45:
[...]
Dit maar even iets verder terug. Wat wil je precies gaan bouwen? Want als je een heel framework met page rerouting wil gaan inbouwen. Waarom ga je dan geen framework als Zend of Symphony gebruiken?
TS geeft zelf al aan dat ie niet heel erg thuis is in de PHP wereld, ik zou dan ook niet meteen Zend of Symphony er tegenaan gooien

En zoals gezegd, daarmee leer je hoe een framework het dicteert. Zeker in het kader van een leer process zou ik zeggen leer vooral ook hoe het achter de schermen werkt :)

een klein begin waar de TS denk ik wel mee uit de voeten kan:
https://www.taniarascia.com/the-simplest-php-router/

Acties:
  • 0 Henk 'm!

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

Een klein begin, maar wel een matig begin. REDIRECT_URL is alleen beschikbaar op Apache onder bepaalde omstandigheden. REQUEST_URI daarentegen is op vrijwel iedere gangbare webserver beschikbaar.

En, wellicht meer een kwestie van smaak, de switch statement kan ook een stuk efficienter als eerst de slashes verwijderd worden. En voor het standaard filteren van superglobals valt ook wel wat te zeggen.

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?

Pagina: 1