$_GET['rol'] word afgekapt vanwege een &-teken in naam van de rol
ik loop tegen het volgede aan:
ik roep een bepaalde functie waarbij een bepaalde waarde een spefieke rolnaam moet zijn. Echter de de rolnaam bevat een En Passant (&) teken.
Bijv: menu.php?actie=m2r&persnr=001234&rol=ROLE:PROCES:TESTER:DP&L+-+BIG+PICTURE+ENTERPRISE&mutatie=intrekken
Mijn variabelen zijn als volgt:
$huidigeWeekNumber = date('W');
$ingediendDoor = $_SESSION['username'];
$personeelsnummer = $_GET['persnr'] ;
$uniekKenmerkRol = $_GET['rol'];
$mutatie = $_GET['mutatie'];
Wanneer ik de variable $uniekKenmerkRol nu wil uit-echoën dan wordt het resultaat dus nu afgekapt op ROLE:PROCES:TESTER:DP
De rest van de rol &L+-+BIG+PICTURE+ENTERPRISE komt dus te vervallen.
Ik denk te begrijpen wat er gebeurt.. De En Passant wordt natuurlijk nu gezien waar een voorwaarde aan moet voldoen.
Echter ik kan de naam van de rol niet wijzigen en dat &-teken zal dus in die rolnamen terug blijven komen.... Kan ik dit oplossen? Hoe dan? Geen idee.. met Googlen kan ik niet veel terugvinden.
Wanneer het handiger is om de hele function hier te posten is dat natuurlijk mogelijk :-)
Kijk hier even: https://stackoverflow.com/questions/16622504/escaping-ampersand-in-url
Gewijzigd op 29/03/2020 13:53:10 door Aad B
urlencode().
Maar het lijkt mij beter om deze informatie te POSTen i.p.v. via GET te versturen.
In $_GET wordt trouwens alles automatisch ge-decodeerd (door urldecode() gehaald), dus je hoeft niets terug te vertalen of wat dan ook.
EDIT: het stackoverflow-bericht waar @Aad naar linkt geeft een JavaScript oplossing geloof ik, en daarbij encodeert dit enkel een ampersand. Als je dan toch via GET werkt (wat ik dus niet zou aanraden in dit geval) is het beter om alles te encoderen. Eigenlijk zowel de key- als de value-paren van wat je in je URL stopt en niet als iets ander geinterpreteerd dient te worden dan enkel een key of een value.
En dan zijn er ook nog functies als http_build_query() die je mogelijk nog meer werk uit handen nemen. Maar zoals gezegd zou ik deze informatie POSTen.
Ja dat kan met Maar het lijkt mij beter om deze informatie te POSTen i.p.v. via GET te versturen.
In $_GET wordt trouwens alles automatisch ge-decodeerd (door urldecode() gehaald), dus je hoeft niets terug te vertalen of wat dan ook.
EDIT: het stackoverflow-bericht waar @Aad naar linkt geeft een JavaScript oplossing geloof ik, en daarbij encodeert dit enkel een ampersand. Als je dan toch via GET werkt (wat ik dus niet zou aanraden in dit geval) is het beter om alles te encoderen. Eigenlijk zowel de key- als de value-paren van wat je in je URL stopt en niet als iets ander geinterpreteerd dient te worden dan enkel een key of een value.
En dan zijn er ook nog functies als http_build_query() die je mogelijk nog meer werk uit handen nemen. Maar zoals gezegd zou ik deze informatie POSTen.
Gewijzigd op 29/03/2020 14:08:51 door Thomas van den Heuvel
Thomas van den Heuvel op 29/03/2020 14:00:32:
Ja dat kan met urlencode().
Maar het lijkt mij beter om deze informatie te POSTen i.p.v. via GET te versturen.
In $_GET wordt trouwens alles automatisch ge-decodeerd (door urldecode() gehaald), dus je hoeft niets terug te vertalen of wat dan ook.
EDIT: het stackoverflow-bericht waar @Aad naar linkt geeft een JavaScript oplossing geloof ik, en daarbij encodeert dit enkel een ampersand. Als je dan toch via GET werkt (wat ik dus niet zou aanraden in dit geval) is het beter om alles te encoderen. Eigenlijk zowel de key- als de value-paren van wat je in je URL stopt en niet als iets ander geinterpreteerd dient te worden dan enkel een key of een value.
En dan zijn er ook nog functies als http_build_query() die je mogelijk nog meer werk uit handen nemen. Maar zoals gezegd zou ik deze informatie POSTen.
Maar het lijkt mij beter om deze informatie te POSTen i.p.v. via GET te versturen.
In $_GET wordt trouwens alles automatisch ge-decodeerd (door urldecode() gehaald), dus je hoeft niets terug te vertalen of wat dan ook.
EDIT: het stackoverflow-bericht waar @Aad naar linkt geeft een JavaScript oplossing geloof ik, en daarbij encodeert dit enkel een ampersand. Als je dan toch via GET werkt (wat ik dus niet zou aanraden in dit geval) is het beter om alles te encoderen. Eigenlijk zowel de key- als de value-paren van wat je in je URL stopt en niet als iets ander geinterpreteerd dient te worden dan enkel een key of een value.
En dan zijn er ook nog functies als http_build_query() die je mogelijk nog meer werk uit handen nemen. Maar zoals gezegd zou ik deze informatie POSTen.
Gewijzigd op 29/03/2020 14:54:44 door - Ariën -
maar anyway... met die urlencode() heb ik wel het gewenste effect en werkt het wel....
die stackoverflow ben ik maar niet gaan uizoeken.....
thnx
De GET methode is meer bedoeld voor zoekformulieren. Als je informatie wegschrijft of bijwerkt in een database is POST doorgaans geschikter.
Maar het is niet bepaald handig/bedoeld als je een actie moet uitvoeren, zoals bijvoorbeeld het aanmaken van een nieuwsbericht, die uiteindelijk dan meerdere keren verschijnt. Daarom is het raadzaam om schrijfacties (eigenlijk liefst alles, tenzij je via GET invloed wilt uitoefenen) altijd via POST uitvoeren. Als je refresht, dan zal de browser je om een bevestiging vragen. Ook kan je na een POST nogmaals een redirect met een location-header uitvoeren onbedoelde OK-klikken en opnieuw de data te versturen, voorkomen.
https://en.wikipedia.org/wiki/Post/Redirect/Get
Gewijzigd op 29/03/2020 15:07:12 door - Ariën -
GET is ook handiger voor zoekfunctionaliteit omdat de hele "state" (alle zoekvariabelen die tezamen de resultaten bepalen) van de pagina in de URL zit. Deze zou je ook kunnen bookmarken om hier later naar terug te keren. En inderdaad, met een GET-aanpak kun je vrij door de historie bladeren en vrijelijk vooruit en achteruit navigeren. Dit kan niet met POST (en dat is ook niet de bedoeling, want POST wordt gebruikt voor andere zaken), want dan zal elke keer om een bevestiging voor het opnieuw indienen van de informatie worden gevraagd, tenzij je je dus bedient van het post/redirect/get mechanisme, wat je eigenlijk altijd zou moeten gebruiken als POST de aangewezen methode is voor het verwerken van formulieren.
GET -> informatie ophalen
POST -> informatie wijzigen (TOEVOEGEN, UPDATEN of VERWIJDEREN)