MVC Routing

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Software developer (Python)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en houden ze zo nu en dan pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Je hebt in je werk oog voor kwaliteit, risico’s en het klantbelang. Communicatie met

Bekijk vacature »

Software developer

Functieomschrijving Voor een gewaardeerde werkgever in de regio van Middelburg zijn wij op zoek naar een ambitieuze PHP/Symfony Developer. Een enthousiast persoon die het development team komt versterken met het aanpakken van complexe en nieuwe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel persoonlijke als professionele groei? Lees dan snel verder! Dit ga je doen: Aanpassingssuggesties van collega’s in kaart brengen, vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Ontwikkeling en beheer van de serviceportal in Symfony en

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

.NET Developer

Dit ga je doen Programmeren in .NET, Javascript & C# en ontwikkelen in Web Services, Windows Services en MS SQL Server; Zelfstandig verbanden maken Analyseren, testen, bugs fixen, reviewen en rapporteren; Juiste prioriteiten stellen en verantwoordelijkheid nemen; Op architectuur niveau meedenken; Af en toe klanten bezoeken. Hier ga je werken Voor onze relatie zijn wij opzoek naar een .NET ontwikkelaar met minimaal 3 jaar werkervaring. Je komt te werken in een groeiend bedrijf met betrokken collega's die zorgen voor een familiaire sfeer op de werkvloer. Als .NET ontwikkelaar word jij vanaf de eerste werkdag betrokken bij het gehele ontwikkelproces. De

Bekijk vacature »

Software Programmeur PHP

Functie Wij zijn op zoek naar een PHP programmeur voor een leuke opdrachtgever in omgeving Alblasserdam. Heb jij altijd al willen werken bij een bedrijf dat veilige netwerkverbindingen levert door middel van veilige oplossingen? Lees dan snel verder. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Tevens

Bekijk vacature »

NodeJS developer

Functie Als Fullstack developer kom je te werken in het ontwikkelteam. Je bent samen met je collega’s continu bezig om de software uit te breiden, maar hiernaast doe je onderzoek naar de inzet van nieuwe technieken, tools of bijvoorbeeld Machine Learning. Ze willen met hun software echt voorlopen op andere en toegevoegde waarde leveren voor de eindgebruiker. Mede hierom zijn ze erg benieuwd naar iemand zijn persoonlijkheid, of hij graag nieuwe dingen uitzoekt (Google!), en initiatief neemt. Qua technische kennis zoeken ze iemand die goed op de hoogte is van de nieuwste ontwikkelingen, daar zij nu ontwikkelen op NodeJs back-end,

Bekijk vacature »

Lead Java Developer

Dit ga je doen Je taken bestaan onder andere uit: Het aansturen van een development team bestaande uit 8 collega's op technisch maar ook HR gebied; Het maken van strategische keuzes omtrent de (nieuw)bouw van deze applicatie; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java, Spring, Angular, REST); Reviewen van code en feedback geven op collega developers. Hier ga je werken Als Lead Software Developer ben je verantwoordelijk voor één van de vier Agile Java ontwikkelteams die bouwen aan technologie die duizenden instanties wereldwijd verbindt. Dit Agile team, data Jira en Confluence gebruikt en

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

PHP Developer

Functie Middels Scrum en sprints bouw jij in deze functie mee aan complexe webapplicaties en ons SaaS platform. Hierbij hoort ook architectuur tot een van je taken. Daarnaast ben je één van de leden van het Scrum team. Dat betekent dat je naast je kerntaken ook in contact staat met de product owner. Oftewel, je bent bij het gehele ontwikkelproces betrokken. Tools die hierbij gebruikt worden zijn o.a. PHP, Symfony en Git. Eisen • Minimaal HBO werk- en denkniveau • Minimaal 3 jaar aantoonbare ervaring met PHP • Kennis en ervaring Symfony (Laravel is pré) & Lando • Kennis van

Bekijk vacature »

Database Developer

Functie omschrijving Voor een logistieke dienstverlener in omgeving Zuid Beijerland zijn wij op zoek naar versterking. Weet jij als geen ander systemen aan elkaar te koppelen en heb jij goede kennis van SQL en UML, lees dan snel verder! Jouw taken zien er als volgt uit: Je bent in deze rol voornamelijk verantwoordelijk voor het bouwen, implementeren en beheren van koppelingen tussen de bestaande systemen (zowel business 2 business als application 2 application). Daarnaast inventariseer je de wensen van in- en externe klanten, die je vervolgens samen met je collega's, vertaalt naar technische specificaties, die jullie zelf ontwikkelen en implementeren.

Bekijk vacature »

Ontwikkelaar Centrale Monitoring

Ontwikkelaar centrale Monitoring Functieomschrijving Wil jij een bijdrage leveren aan het onderhoud, opzetten en ontwikkelingen van technologieën van SSC-ICT, een van de grootste ICT-dienstverleners van en voor de Rijksoverheid? Je komt als monitorspecialist te werken bij team Operations Management Services. Dit team werkt aan het stabiliseren en waarborgen van een betrouwbare monitoromgeving voor 7 ministeries. Jij begeleidt het implementatieproces van de te monitoren technologieën, onder andere via management packs, connectoren en API's. Je hebt hiervoor veel contact met interne en externe klanten, die hun wensen op het gebied van monitoring aan jou doorgeven. Je beoordeelt deze wensen en komt met

Bekijk vacature »

Software Developer

Functie omschrijving Heb jij affiniteit met ICT en een WO diploma in de pocket? Dan ben je hier aan het juiste adres. Voor een opdrachtgever in Amsterdam zijn wij op zoek naar kandidaten die (enige) ervaring hebben met Java, Javascript, C of C++. Je zal door middel van trainingen worden opgeleid tot een volwaardige Software Developer. Er wordt tijdens de training natuurlijk veel aandacht besteedt aan de vaktechnische aspecten, maar er gaat ook veel aandacht uit naar jouw persoonlijke ontwikkeling. Bedrijfsprofiel Bij deze opdrachtgever in de omgeving van Amsterdam zoeken ze meerdere enthousiaste kandidaten die hun carrière willen starten met

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Core developer wordt jij onderdeel van ons team met drie breed ontwikkelde software engineers en een flexibele schil met zes ervaren freelancers. Jij gaat mee in de visie van onze organisatie om als IoT partner in deze branche specifieke markt “het” platform te blijven innoveren en deze ook steeds slimmer te maken. Wij hopen dan ook zeker dit in de toekomst te kunnen realiseren met bijvoorbeeld Artificial Intelligence. De architectuur van ons platform is opgemaakt uit een deel eigen protocol, een interface laag en een laag welke de protocollen van derde partijen vertaald naar het eigen

Bekijk vacature »

Front-end Developer vue.js node.js SaaS

Dit ga je doen Het ontwikkelen van nieuwe features die bijdragen aan de groei van de klanten van de organisatie; Je denkt mee over nieuwe innovaties, features en verbeteringen in de applicatiearchitectuur; Je draagt bij aan de continue ontwikkeling van jouw team doordat je elke dag streeft naar het verbeteren van jouw eigen prestaties; Je neemt actief deel aan Scrum meetings en de Frontend Guild. Hier ga je werken Voor een snel groeiend bedrijf de regio Nieuw Vennep zijn wij opzoek naar een ervaren Front-end Developer. De organisatie is actief in de e-commercebranche en ontzorgt haar klanten middels een SaaS-platform.

Bekijk vacature »

Pagina: 1 2 volgende »

Mark Hogeveen

Mark Hogeveen

06/12/2013 15:46:16
Quote Anchor link
Hallo, misschien een erg simpele vraag.

Bij routing voor je website stuur je eigenlijk alle requests door naar 1 pagina. Meestal index.php.
Doe je dan dus ook de POST data daarnaartoe sturen? En hoe doe je die dan weer doorgeven aan de juiste controller?
En hoe doe je alle get variabelen verwerken? Doe je dan iets als $_GET[0], $_GET[1] etc?
Ik begrijp niet echt wat het voordeel is van een router. Je moet telkens de juiste controllers/models/vieuws includen, soms (volgens mij) onnodig een header gebruiken om een gebruiker door te sturen naar de juiste locatie.
Daarnaast lijkt me het controleren van GET variabelen moeilijker, alles doe je rewriten naar mooie URL's,
Dus dit: www.site.nl/help.php?action=view&item=10023 wordt dit: www.site.nl/help/view/10023
Aan de tweede url zou je niet meer kunnen zien of view een map is, of (de waarde van) een veriabale.
Niet dat dit voor buitenaf belangrijk is, of dat bezoekers hier iets mee moeten. Maar hierdoor lijkt het me verwarrend. Ook zou ik niet weten wat ik moet doen als een pagina direct wordt aangeroepen, dus niet door de router, maar rechtstreeks (zonder include, en dus zonder code die in de router eventueel erboven zou staan, voor het include statement)
Een error 404 geven is dan eigenlijk liegen, doorsturen naar de router en zo een omweg maken lijkt me ook raar.
Gewijzigd op 06/12/2013 15:49:34 door Mark Hogeveen
 
PHP hulp

PHP hulp

19/04/2024 01:48:27
 
Wouter J

Wouter J

06/12/2013 15:51:32
Quote Anchor link
Je begrijpt dat je bij het url rewritten aangeeft dat die view hier een action query waarde is? Dus dat dat helemaal niks uitmaakt?

Bij MVC moet je bepalen wat er gaat gebeuren met die route, welke controller die gaat gebruiken. Dat doet een router. Die kijkt dus alleen, welke controller moet ik nu aanroepen. Is er geen controller gevonden, dan geeft hij een 404. Dat is geen liegen, er wordt een pagina aangeroepen die niet bestaat. We hebben het nu niet meer over dat simpele index.php font controller bestandje, maar over de pagina die je aanroept.
 
Mark Hogeveen

Mark Hogeveen

06/12/2013 16:54:32
Quote Anchor link
Elk php bestand op de server wordt eigenlijk gezien als een pagina, als je dus /controllers/welcome.php hebt, dan wordt die bij de router aangeroepen, en wordt er bijvoorbeeld een view van gemaakt.
Als je nu rechtstreeks het adres intypt naar welcome.php, roep je die dus aan zonder door de router te gaan.
Bij sommige systemen zie je in de code dat er een error wordt gegeven als "Direct script acces not allowed"
Dit vind ik lelijk.
 
Wouter J

Wouter J

06/12/2013 16:56:22
Quote Anchor link
Nee, niet elk bestand wordt gezien als een pagina. Alleen de front controller is een pagina, die beslist wie wat mag afhandelen.

De WelcomeController handelt bijv. de url index.php/ af. De PostController::showAction handelt index.php/post/123/hello-world af.

Als je naar /controllers/welcome.php gaat bezoek je geen pagina, je bezoekt een bestand met daarin informatie hoe je de url index.php/ moet afhandelen.
 
D Vivendi

D Vivendi

06/12/2013 17:11:55
Quote Anchor link
Als je naar /controllers/welcome.php gaat, dan bezoek je als het goed is een php Class en krijg je dus geen output te zien. Vandaar dat dit dus vaak met een "Direct access not allowed" wordt geblokkeerd. Je hebt daar namelijk niks te zoeken.
 
Mark Hogeveen

Mark Hogeveen

06/12/2013 20:23:12
Quote Anchor link
D Vivendi
Ja, dat is dus wat ik bedoel.
 
Ozzie PHP

Ozzie PHP

06/12/2013 20:30:19
Quote Anchor link
Harry,

Je moet het net even iets anders aanpakken. Als je nou enkel en alleen je index.php in je "public" directory zet, en alle overige pagina's in een "private" directory, dan kan niemand via de browser een pagina aanroepen. In je index.php pagina in de public map zet je dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

require '/pad/naar/private/map/index.php';

?>

In de index.php in de private map ga je dan gewoon verder zoals je dat normaal ook zou doen, alleen staan nu dus alle bestanden in de private map. Het voordeel is dus dat mensen via de browser niet meer rechtstreeks een pagina kunnen aanroepen zoals jij hierboven aangaf. Daarnaast is het een stuk veiliger... omdat mensen niet meer via de browser rechtstreeks een bestand kunnen aanroepen.

Ik hoop dat je iets aan deze tip hebt.
 
Ozzie PHP

Ozzie PHP

07/12/2013 23:30:57
Quote Anchor link
Is het nog gelukt?
 
Local Dev

Local Dev

08/12/2013 00:19:29
Quote Anchor link
@Ozzie, waarom een require naar een private index.php file?
 
Dos Moonen

Dos Moonen

08/12/2013 00:54:38
Quote Anchor link
Local Dev op 08/12/2013 00:19:29:
@Ozzie, waarom een require naar een private index.php file?

http://wordpress.stackexchange.com/questions/58391/is-moving-wp-config-outside-the-web-root-really-beneficial

Ik kan me ook vaag herinneren dat ik ooit over een aanval gelezen hebt die de php handler uitschakelde tot je Apache opnieuw opstarte.
Gewijzigd op 08/12/2013 00:55:19 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

08/12/2013 01:12:52
Quote Anchor link
>> @Ozzie, waarom een require naar een private index.php file?

Wat bedoel je precies met je vraag?

Die index.php in je private map is de bootstrap. Door alle bestanden in een private map te zetten kunnen ze niet rechtstreeks via de browser worden aangeroepen en dit vergroot de veiligheid. Maar ik weet niet of dit een antwoord op jouw vraag is, of dat je iets anders bedoelde?
 
Local Dev

Local Dev

08/12/2013 01:34:46
Quote Anchor link
Ik bedoel dat ik ik het vreemd vind overkomen dat je in de public map een index.php bestand hebt en je daarin een require uitvoert naar een private index.php ..

Zelf plaats ik alleen maar mijn index.php, css, js en images in de public directory.
Voor de rest staat alles in de de root directory, maar ik require / include geen bootstrap file, alleen de autoloader die de applicatie start
 
Ozzie PHP

Ozzie PHP

08/12/2013 03:15:41
Quote Anchor link
Ik zie niet wat er raar aan is hoor? Waarschijnlijk staan de dingen die jij dan in je public index.php hebt staan bij mij in de private index.php. Dat is waars. het enige verschil. Ik heb bewust zo min mogelijk code in mijn public index.php staan. Alles staat dan veilig op een plek waar niemand er van buitenaf bij kan.
 
Mark Hogeveen

Mark Hogeveen

08/12/2013 11:33:32
Quote Anchor link
Maar wat maakt het uit als er iemand een request doet naar een script, dat geen output geeft, maar wel wordt gebruikt om bijvoorbeeld te includen.
Je hebt dan toegang tot de "pagina" (het script) maar dat is toch niet onveilig?
Het enigste dat iemand dan zou kunnen proberen is bepaalde input geven met POST of GET requests, maar als je daar rekening mee houdt kan er niks gebeuren toch?
Het is natuurlijk wel logisch om dit soort scripts af te schermen.
Een voorbeeld (niet echt mvc, maar als voorbeeld)

contact.php (formulier etc.)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['send'])) {

// require het bestand om het formulier te verwerken
require "ContactController.php";
}

?>

<!-- Form stuurt data naar huidige pagina -->
<form method="post" action="">
Bericht: <textarea name="msg"></textrea>
<input type="submit" name="send" value="Verzend" />
</form>

Als je nu ContactController rechtstreeks zou aanroepen via de browser, zou je een lege pagina krijgen. ContactController denkt dat er een formulier is verzonden, en wil een niet-verzonden formulier verwerken.
Dat zou dus een fout kunnen veroorzaken.
Gewijzigd op 08/12/2013 11:33:49 door Mark Hogeveen
 
Wouter J

Wouter J

08/12/2013 12:22:02
Quote Anchor link
Het is wel onveilig, mensen kunnen dan met bepaalde tools de content van je script lezen. En dat is nou niet echt geweldig...
 
Ozzie PHP

Ozzie PHP

08/12/2013 14:30:43
Quote Anchor link
Of stel dat je PHP server er een keer uitklapt dan zijn al je bestanden voor de complete buitenwereld zichtbaar en weet iedereen precies hoe je code in elkaar zit.

Maar goed, je moet het vooral zelf weten. Het was een goed bedoelde tip. Wat je ermee doet laat ik helemaal aan jou over.
 
Mark Hogeveen

Mark Hogeveen

12/12/2013 18:46:25
Quote Anchor link
Nee, heel erg bedankt dat er mensen zijn die mij hierop wijzen!
Van de reactie van Wouter J schrik ik een beetje. Tools waarmee je de PHP scripts kunt zien? Lekker dan... Ik dacht dat dit vrijwel onmogelijk is, dat je dat alleen kon als je echt toegang had tot het FTP.
En wat Ozzie zegt: ik begrijp dus dat als de PHP server eruit ligt, dan wordt de PHP code dus niet meer geparst (logisch) en dus wordt het als plain tekst/html gestuurd naar de client (ook logisch).

Nu toch nog een vraag, na 4 dagen.

Bij een router heb je dus de map en bestandsnamen in een GET variabele staan.
site.nl/public/page.php?item=1234 rewrite je naar site.nl/page/item/1234
Door dit rewriten raak ik juist door de war. Is het voor mij misschien verstandiger, om eerst helemaal niet te kijken naar het herschrijven van URL's, en gewoon eerst eens met niet-herschreven URL's te werken?
Dan komt dat rewriten wel vanzelf?
 
Local Dev

Local Dev

12/12/2013 20:18:17
Quote Anchor link
Kijk eens naar frameworks als ZF2 en Symfony hoe zij dit afhandelen, ik geloof dat je bij het bestuderen hiervan je vraag wordt beantwoord.
 
Ozzie PHP

Ozzie PHP

12/12/2013 21:24:24
Quote Anchor link
>> ik begrijp dus dat als de PHP server eruit ligt, dan wordt de PHP code dus niet meer geparst (logisch) en dus wordt het als plain tekst/html gestuurd naar de client (ook logisch).

Inderdaad, en als je niet ervoor hebt gezorgd dat directories worden afgeschermd zijn al je bestanden ook nog eens zichtbaar. Daarom wil je bestanden die code bevatten dus niet in je public directory hebben staan.

>> Door dit rewriten raak ik juist door de war. Is het voor mij misschien verstandiger, om eerst helemaal niet te kijken naar het herschrijven van URL's, en gewoon eerst eens met niet-herschreven URL's te werken?

Nee, dat zou ik niet doen. Ik zou juist zorgen dat je het principe snapt, om jezelf achteraf een hoop werk en frustraties te besparen ;)

Hoe het in de details werkt ga ik je nu niet uitleggen, maar het principe is in hele grote lijnen als volgt.

URL: jouwsite.nl/fotoalbum/toon/5

Deze URL wordt opgevangen door jouw index.php in de public map en stuur je door naar de index.php in de private map (ook wel bootstrap genoemd). Uiteindelijk komt deze URL in een router terecht en wordt deze opgesplitst in:
- fotoalbum
- toon
- 5

Deze "route" wordt gematched met een controller (de FotoAlbumController) en een actie (de toonAction), waarbij 5 het nummer is van de foto die moet worden getoond.

Dit is even een heel globale uitleg die wellicht een kwartje doet laten vallen ;)
 
Wouter J

Wouter J

12/12/2013 22:28:11
Quote Anchor link
Of kijk gewoon eens naar een simpele tool als silex. Die toont op een simpele manier hoe je omgaat met routing, etc. Het biedt vele integratie mogelijkheden met andere libraries en je hebt nog steeds bijna alles in de hand!
 
Mark Hogeveen

Mark Hogeveen

15/12/2013 19:18:09
Quote Anchor link
Ik heb heel wat geëxperimenteerd. Mij vallen 2 verschillende soorten manieren van routing op.
- Routen met alle mogelijke URL's in een lijst, een soort register van alle pagina's dus.
- De URL's niet opslaan in een lijst, maar gewoon uit de URL zelf de informatie halen.

De eerste manier lijkt me het handigst, volgens mij doet Symfony het ook zo. Het nadeel is wel dat je een configuratie moet maken waar je soms dus heel veel routes moet definiëren.

De tweede manier vind ik minder, in sommige gevallen worden de routes nog steeds bepaald door de bestandsnamen van files. Dus als je een file hebt die contactPage.php heet, dan zou de route eruit zien als /contactPage/ terwijl je dit zou willen: /contact/
Je moet dan de naam van het bestand of controller o.i.d veranderen.
Terwijl routing juist onafhankelijk van bestandsnamen moet zijn.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

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.