Se generează un șir de interogări

sarcină
Trebuie să creați un link care conține perechi de nume / valoare în șirul de interogare.

Soluția
Nume de cod și valori utilizând funcția urlencode () și crearea unui șir de interogări utilizând funcția join ():







$ vars = array ('name' => 'Oscar cel Grouch',
'culoare' => 'verde',
'favorite_punctuation' => '#');
$ sigur_vars = array ();
foreach ($ vars ca $ nume => valoare $) $ safe_vars [] = urlencode ($ name). '=' urlencode (valoare $);
>
$ url = '/muppet/select.php?'. se alăture ('', $ safe_vars);
$ vars = array ('name' => 'Oscar cel Grouch',
'culoare' => 'verde',
'favorite_punctuation' => '#');
$ sigur_vars = array ();
foreach ($ vars ca $ nume => valoare $) $ safe_vars [] = urlencode ($ name). '=' urlencode (valoare $);
>
$ url = '/muppet/select.php?'. se alăture ('', $ safe_vars);

discuție
Adresa URL generată în această soluție arată astfel:

Șirul de interogare conține spații codificate cu caracterul +. Caracterele speciale, cum ar fi #, sunt scrise în codificare hexazecimală, de exemplu% 23, deoarece valoarea ASCII a caracterului # este de 35, ceea ce este echivalent cu 23 în cod hexazecimal.

Deși funcția urlencode () împiedică apariția unor caractere speciale în numele sau valorile variabilelor returnate după parsarea adresei URL construite, este posibil să întâmpinați probleme dacă numele variabilelor încep cu numele primelor HTML.








Luați în considerare următoarea adresă URL incompletă,
Pentru informații despre sistemul stereo:

Elementul HTML care afișează ampersand () este astfel că browserul poate interpreta această adresă URL ca:

Există trei moduri de a evita distorsionarea adreselor URL care pot fi invocate de elementele încorporate. Primul este de a selecta numele de variabile care nu pot fi confundate cu primitivele, de exemplu, _amp în loc de amp. Și al doilea - în transformarea simbolurilor cu echivalentul lui
șiruri de primitive HTML în aceste elemente înainte de a trimite adresa URL. Ultimul se face folosind funcția htmlentities ():

$ url = '/muppet/select.php?'. htmlentities (se alăture ('', $ safe_vars));

Ca rezultat, adresa URL va arăta astfel:

A treia metodă este înlocuirea valorii de delimitare a argumentului pe; prin setarea arg_separator.input configurare ;. Apoi, este necesar să se combine perechile nume-valoare cu un simbol; a primit o cerere pentru o linie: /muppet/select.php?name=Oscar+the+Grouch;color=green;favorite_punctuation=%23

Dificultăți pot apărea cu orice metodă GET într-o adresă URL în care nu puteți specifica în mod explicit o punct și virgulă, de exemplu în formularul cu metoda GET, deoarece browserul utilizatorului acceptă caracterul ca un delimiter de argument.

Multe browsere nu acceptă utilizarea unui simbol; ca argument de delimiter, deci este mai ușor să eviți problemele cu elementele din URL selectând numele de variabile care nu se potrivesc cu numele elementelor.


Dacă nu puteți controla complet numele variabilelor, atunci protejați URL-ul de elementele de decodare utilizând funcția htmlentities ().







Articole similare

Trimiteți-le prietenilor: