Van één naar oneindig

In PHP kunnen we die ene parameter nu opvangen via $_GET[‘p’]. Wat krijgen we dan te zien? Als we teruggaan naar de voorbeeld URL (de handige versie), zien we dit: home/lang=nl/id=5.
Met een beetje PHP kennis, kunnen we nu heel handig de explode() functie gebruiken op deze string, de / scheidt namelijk alle parameters die we hebben. Dan hebben we de parameters dus al los. We doen het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(!empty($_GET) && isset($_GET['p'])) {
    $aParameters = explode("/", $_GET['p']);
}

?>


$aParameters ziet er nu zo uit: array(“home”, “lang=nl”, “id=5”). Ik hoop dat je hem al aan ziet komen. In de parameters zit nog steeds dat =’je, waardoor niet alle parameters direct al waardes zijn van een parameter. We doorlopen ieder element van de array $aParameters, kijken of daar een = in zit en laten daar ook even explode() op los, i.c.m. met list() hebben we dat varkentje zo gewassen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(!empty($_GET) && isset($_GET['p'])) {
    $aParameters = explode("/", $_GET['p']);
    foreach($aParameters as $sParameter) {
        if(preg_match("_=_", $sParameter)) {
            list($key, $value) = explode("=", $sParameter);
        }
    }
}

?>


We hebben nu in $key en $value de naam en de waarde van de parameter zitten. Die stoppen we opnieuw in $_GET, zodat het lijkt alsof ze uit de URL komen – en je, bij verandering van je URLs in deze nette, geen wijzigingen qua variabelen hoeft door te voeren.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if(!empty($_GET) && isset($_GET['p'])) {
    $aParameters = explode("/", $_GET['p']);    
    foreach($aParameters as $sParameter) {
        if(preg_match("_=_", $sParameter)) {
            list($key, $value) = explode("=", $sParameter);            
            $_GET[$key] = $value;
        }
    }
}

?>


$_GET wordt ondertussen weer gevuld met de nodige parameters uit de URL. Maar wat gebeurt er nu met de parameters waar geen = in zitten, en die dus al direct een waarde zijn? Dat doen we ook heel simpel. Alleen vergt dit wel weer wat wijzigingen mocht je je huidige website om willen bouwen naar deze nette URLs.

We doen het volgende: de eerste naamloze waarde die we hebben (dus zonder een = in de parameter) kennen we toe aan $_GET[‘p’]. Die hebben we verder toch niet meer nodig, en meestal bevat de eerste naamloze waarde toch wel de naam van de pagina. We maken daarbij gebruik van een teller. Zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if(!empty($_GET) && isset($_GET['p'])) {
    $aParameters = explode("/", $_GET['p']);    
    $iTeller = 0;
    foreach($aParameters as $sParameter) {
        if(preg_match("_=_", $sParameter)) {
            list($key, $value) = explode("=", $sParameter);    
            $_GET[$key] = $value;
        }
else {
            if($iTeller > 0) {
                $_GET['param'.$iTeller] = $sParameter;
            }
else {
                $_GET['p'] = $sParameter;
            }

            $iTeller++;
        }
    }
}

?>


We noemen iedere parameter zonder = na de eerste: param$iTeller, beginnend met $iTeller vanaf 1. De eerste parameter na $_GET[‘p’] wordt dus $_GET[‘param1’]. Als we dat met een voorbeeldje doen, komt $_GET er zo uit te zien, nadat hij behandelt is door dit script:

Voorbeeld URL: http://www.jouwdomein.nl/nieuws/phphulp/id=5
Uitkomst: $_GET = array( ‘p’ => ‘nieuws’, ‘param1’ => ‘phphulp’, ‘id’ => ‘5’);

Je kunt zo oneindig veel parameters hebben, en toch worden ze allemaal netjes in $_GET gestopt. Je kunt deze code in een apart bestandje zetten en includen, maar je kunt het ook bovenaan in je index.php zetten (als je verder toch alles via $_GET include - zal eigenlijk ook wel moeten).

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Hoe ziet de URL eruit?
  3. Mod_rewrite
  4. Van één naar oneindig
  5. Afsluiting en bronnen

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.