Volledige versie bekijken : [PHP] Url explode



kurt0015
3 December 2006, 19:45
Ey,

Het is al een tijdje geleden dat ik hier nog een vraagje heb gestelt maar heb nog eens een vraag waar ik niet uitkom. Mijn bedoeling is dus om gebruiksvriendelijk site urls te maken in php. Ik weet dat het op een makkelijke manier kan via httacces maar daar gaat mijn voorkeur niet naar uit. Ik zou het graag met php doen ik heb ergens gelezen dat dit kan via de explode functie. Maar weet dus totaal niet hoe eraan te beginnen.

Ik geef even voorbeeld van wat ik wil de link die je hier onder ziet zou moeten veranderen.

http://www.domeinnaam1544.be/artikel.php?cat=3&id=25&pid=424Die link zou moeten veranderen naar.

http://www.domeinnaam1544.be/artikel/3/25/424/(urls zijn enkel voorbeelden en werken dus niet)

Alvast Bedankt :)

Booster
3 December 2006, 20:19
Dat kan dankzij de mod_rewrite module van Apache:

Je slaat de volgende code op in een .htaccess bestand en zet hem in je hoofdmap


Options FollowSymLinks
RewriteEngine On

RewriteRule ^([a-zA-Z]+)\/([0-9]+)\/([0-9]+)\/([0-9]+)$ $1.php?cat=$2&id=$3&pid=$4groeten
stijn

kurt0015
3 December 2006, 20:40
Ja, die kende ik al. Maar blijkbaar las je mijn bericht niet al te goed. Ik zou het liever via php zelf doen via de explode functie. Dus niet via htacces. ;)

Jelle
3 December 2006, 22:48
Deze manier is onmogelijk via PHP. Je verzoek wordt immers eerst door de Apache webserver behandelt. Die gaat op zoek naar een map "artikel" en die bestaat niet => error. Je gebruikt dus .htaccess om dit te manipuleren.
Apache geeft pas een verzoek door aan PHP als het bestand bestaat en het een extensie heeft die aan PHP is toegewezen (.php of wat je ook instelt).

Het kan met PHP alleen, maar dan werk je zoals bv. het forum archief van vBulletin: http://www.minatica.be/archive/index.php/f-56.html
Het PHP-bestand staat dus duidelijk in de URL zodat Apache het verzoek naar PHP verstuurt.

Je kan dus niet rond Apache heen :)

kurt0015
4 December 2006, 23:17
Dan heb ik het blijkbaar fout gelezen. Ofwel stond het fout op de website waar ik het las.

Heel erg bedankt.
Hier mag dan een slotje op.

ghost
13 December 2006, 22:30
Op verzoek, terug open gedaan :)

Warhead
13 December 2006, 22:46
bedankt ghost :)

@TS: wat jij wil is mogelijk, via deze manier:
bv je site is:
http://www.site.be/artikel.php/3/25/424 (http://www.site.be/artikel.php/3/25/424) ,
dan kan je via explode je url mooi inlezen, bv:

<?php
$url = $_SERVER['PHP_SELF']; // dit wordt dan /artikel.php/3/25/424
list($a,$b,$cat,$id,$pid) = explode("/",$url); //door de eerste slash zijn de eerste waarden van je explode array "" en "artikel.php", dus die hebben we niet nodig)
?>
grtz

Jelle
13 December 2006, 22:48
Dat zei ik toch :p

Het kan met PHP alleen, maar dan werk je zoals bv. het forum archief van vBulletin: http://www.minatica.be/archive/index.php/f-56.html
Het PHP-bestand staat dus duidelijk in de URL zodat Apache het verzoek naar PHP verstuurt.
-> Met een .php in de url dus, geen Apache limitatie.

De TS vroeg om http://www.domeinnaam1544.be/artikel/3/25/424/ links te creƫeren, dan kan je met PHP niet rond Apache heen. De artikel map bestaat dan niet en dus geeft Apache een foutmelding, je hebt dan een .htaccess nodig om een rewrite naar artikel.php te doen.

Warhead
13 December 2006, 22:51
Oeps, niet op gelet :shy:

achja, misschien kan kurt het nog eens proberen :p