$_GET['rol'] word afgekapt vanwege een &-teken in naam van de rol

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- DHU -

- DHU -

29/03/2020 13:39:31
Quote Anchor link
hey guyz,

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 :-)
 
PHP hulp

PHP hulp

23/11/2024 23:11:57
 
Aad B

Aad B

29/03/2020 13:50:47
Quote Anchor link
& oftwel Ampersand misschien onderweg tijdelijk even heen- en terugvertalen/vervangen (replace) naar een ander teken. Ik weet niet of het te escapen is.
Kijk hier even: https://stackoverflow.com/questions/16622504/escaping-ampersand-in-url
Gewijzigd op 29/03/2020 13:53:10 door Aad B
 
Thomas van den Heuvel

Thomas van den Heuvel

29/03/2020 14:00:32
Quote Anchor link
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.
Gewijzigd op 29/03/2020 14:08:51 door Thomas van den Heuvel
 
- DHU -

- DHU -

29/03/2020 14:51:35
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

29/03/2020 14:54:19
Quote Anchor link
Quote-fail? :-)
Gewijzigd op 29/03/2020 14:54:44 door - Ariën -
 
- DHU -

- DHU -

29/03/2020 14:54:23
Quote Anchor link
Die $_GET waarden komen vanuit een eerder ingevuld formulier... deze worden vervolgens opgeslagen in een tabel maar ik wil die ingvulde waarde op het scherm zetten... ik dacht dat daar juist die GET waarde
maar anyway... met die urlencode() heb ik wel het gewenste effect en werkt het wel....

die stackoverflow ben ik maar niet gaan uizoeken.....

thnx
 
Thomas van den Heuvel

Thomas van den Heuvel

29/03/2020 14:59:02
Quote Anchor link
In het formulier zou je dan method="POST" moeten gebruiken, en zou je $_POST moeten verwerken.

De GET methode is meer bedoeld voor zoekformulieren. Als je informatie wegschrijft of bijwerkt in een database is POST doorgaans geschikter.
 
- Ariën  -
Beheerder

- Ariën -

29/03/2020 15:05:10
Quote Anchor link
Bij het gebruik van GET kan je in feite zelf blijven refreshen. Dit is ideaal voor een zoekformulier.

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 -
 
Thomas van den Heuvel

Thomas van den Heuvel

29/03/2020 16:31:27
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

29/03/2020 18:13:14
Quote Anchor link
Wanneer gebruik je wat?

GET -> informatie ophalen

POST -> informatie wijzigen (TOEVOEGEN, UPDATEN of VERWIJDEREN)
 



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.