Superglobal $_GET in actie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis Fei

Dennis Fei

02/05/2012 13:29:26
Quote Anchor link
Ik snap het nog steeds niet helemaal.
Je hebt een pagina waarbij bovenaan een commentaar staat:

/*
p= home
p=formulier Formulier om te bestellen
p=status Formulier om de huidige status op te vragen
p=contact Contactformulier*/

Vervolgens heb je een pagina met allemaal PHP blokken waarbij hier een fragment:

//Weergeven van de huidige locatie van de pagina
echo '<p class="home"><a href="?p=home">Home</a></p>

Kan iemand mij vertellen Hoe een link die uiteindelijk enkel bestaat uit: a href="?=home" gaat werken en waarvoor dient eigenlijk de ?=home syntax?
 
PHP hulp

PHP hulp

25/04/2024 23:46:10
 
John in t Hout

John in t Hout

02/05/2012 13:36:17
Quote Anchor link
dat heeft meer met je relative path te maken ik ga ervan uit dat je geen .htaccess heb gebruikt als je op deze manier te werk gaat maar als je ?voorbeeld=value doet plakt hij het achter je huidige relative path dus bijvoorbeeld /home/user/public_html/index.php?voorbeeld=value waarna je dus in je index kunt zeggen $_GET['voorbeeld'] wat als uitkomst 'value' zou hebben.
 
Jurgen B

Jurgen B

02/05/2012 13:36:58
Quote Anchor link
href="?=home" bevat geen complete URL (http/https/www/etc) en de inhoud van href zal daardoor worden toegevoegd aan de huidige locatie. Dat wil zeggen als je op www.website.nl/index.php zit dan wordt de daadwerkelijke link www.website.nl/index.php?p=home. De ?= wordt gebruikt om parameters aan je php request mee te geven. In dit geval om te bepalen welke pagina je wil laden, maar er kunnen ook andere gegevens mee worden gestuurd (bijv. ?p=home&cat=12 om nieuws te filteren op een bepaalde categorie). Deze parameters kan je in php met behulp van $_GET['param'] opvragen en gebruiken.
 
Wouter J

Wouter J

02/05/2012 13:38:42
Quote Anchor link
Kijk, je hebt een normale link:
domein.nl/index.php

Vervolgens kun je daar GET parameters aan mee geven, bijv:
domein.nl/index.php?page=home

Nu is de GET parameter 'page' meegegeven met een waarde van 'home'. In PHP kun je deze ophalen met $_GET['page'].

Je ziet dat tussen de parameternaam en de 'normale' url een ? staat, dit geeft aan dat vanaf die plaats de parameters beginnen.

Als je nou 2 of meer parameters wilt toevoegen gebruik je in het begin weer die ? om aan te geven dat de parameters beginnen en vervolgens plaats je tussen elke parameter het & (en) teken:
domein.nl/index?page=home&page_id=10

Nu hebben we 2 parameters meegegeven: 'page' met de waarde 'home' en 'page_id' met de waarde '10'.


De link die jij geeft bevat alleen ?p=home (alleen het parameter gedeelte dus). Je zult wel denken, waar is die 'normale' url dan? Als je in HTML de href leeg laat is dat een link naar de huidige pagina. Door alleen de parameter mee te geven voeg je dat toe aan de url van die pagina.

Je bent op domein.nl/index.php en klikt op <a href="?page=home"> dan wordt je doorverwezen naar domein.nl/index.php?page=home Als je nu op <a href="?page=contact"> klikt wordt je doorverwezen naar domein.nl/index.php?page=contact

PS: Die comments hebben er niks mee te maken, comments zijn slechts alleen voor de developer handig om overzicht te krijgen. Het runnen van een script wordt er niet door beïnvloed (behalve bij erg moeilijk scripts of als je gaat werken met PHPunit of Symfony).
 
Dennis Fei

Dennis Fei

02/05/2012 14:09:57
Quote Anchor link
Wouter en John duidelijk jullie verhaal. maar dat is voor mij niks nieuws. Ik wist al dat $_GET gebruikt wort als querystring om waarden mee te geven. Het totale plaatje is voor mij nog niet duidelijk

stel je hebt index.php?land=nederland&inkomen=1000


1. wat gebeurt er nu met deze informatie wordt dit opgeslagen in een of andere database en hoe verloopt dat proces? (zo simpel als $connect = mysql_connect(server, user, psw)etcetc
2. waarom zul je niet altijd gebruik maken van $_POST waarmee kiezen sommige ontwikkelaars bewust voor $_GET zover ik het uit de literatuur kan halen kleven er namelijk veel nadelen aan ondermeer op het gebied van security.
 
Jeroen VD

Jeroen VD

02/05/2012 14:15:16
Quote Anchor link
1. het wordt niet opgeslagen. het staat in de URL, en met $_GET lees je alleen de URL uit, niets meer.
2. $_GET brengt beveiligingsrisico's met zich mee. de gebruiker kan het namelijk aanpassen. wanneer het niet uitmaakt (bijvoorbeeld pagina navigate) kun je prima $_GET gebruiken, mits je wel ongewenste inhoud wegvangt. (XSS injectie)
 
Obelix Idefix

Obelix Idefix

02/05/2012 14:18:07
Quote Anchor link
Wat er met de informatie gebeurt hangt af van het script.


Gebruik van $_GET en $_POST hangt af van wat je wilt en waar de informatie wordt meegegeven. Meestal wordt $_GET gebruikt om dit soort informatie in de url mee te geven in zoekopdrachten.
Voor het verzenden van formulieren zou ik $_POST (blijven) gebruiken.
Een url (bv bij pagination) kun je opbouwen met variabelen. Dan moet je wel $_GET gebruiken om ze 'uit te lezen'.
 
Wouter J

Wouter J

02/05/2012 14:33:23
Quote Anchor link
Dennis, ok, als je voortaan meteen zulke duidelijke vragen wilt stellen bespaard het mij weer wat typwerk ;)

1. Nee, het wordt niet opgeslagen in een DataBase. Een pagina wordt, even kort door de bocht, opgevraagd door een HTTP request. Deze request kan verschillende soorten typen hebben: GET, POST, HEAD, ect. Als je een POST of GET request gebruikt kun je parameters meesturen. In het geval van een POST worden deze onmerkbaar meegestuurd en in het geval van een GET worden deze via de url meegestuurd.
PHP herkent deze parameters en plaatst ze bij de aanroep in arrays, genaamd $_GET voor get paremeters en $_POST voor post parameters.

Even uitgetekend in Jip en Janneke taal:
Afbeelding

2. Als je een formulier hebt dan gebruik je altijd POST, omdat het veiliger is. Maar denk bijv. aan hoe je pagina's oproept. Hoe wil je dat simpel en goed in een POST request maken? Juist, dat kan (voor zover ik weet) niet en daarom ben je verplicht te gaan werken met GET requests (als je een dynamisch systeem/CMS wilt)
 
Erwin H

Erwin H

02/05/2012 14:35:35
Quote Anchor link
Vuistregel:
data ophalen uit een database: GET
data invoegen in een database (dus ook update/delete): POST

Uiteraard zijn er kanttekeningen en voorwaarden bij te stellen, maar dit is een vuistregel die veel wordt toegepast.

De reden overigens om voor GET te kiezen en niet altijd voor POST (ook daar waar het strict gezien niet nodig is), heeft ook te maken met het feit dat een GET methode simpeler te doen is dan een POST methode. Als je geen javascript gebruikt en je wil een POST doen, dan kan dat in feite alleen in een form(ulier). Alleen door de methode van het form op POST te zetten en het form te versturen met een submit button kan je POST data versturen. GET is veel simpeler. Elke link (in een anchor tag) kan je voorzien van GET data.
 
Dennis Fei

Dennis Fei

02/05/2012 15:12:10
Quote Anchor link
ik zeg: bedankt voor de kennis
 
Ozzie PHP

Ozzie PHP

02/05/2012 15:37:09
Quote Anchor link
hehe, dat plaatje... lol :)
Wouter gaat los!
 



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.