Lekérdezési karakterlánc létrehozása

feladat
Létre kell hoznia egy hivatkozást, amely név / érték párokat tartalmaz a lekérdezési karakterláncban.

A megoldás
Kódnevek és értékek az urlencode () függvénnyel, és hozzon létre egy lekérdezési sort a join () függvény használatával:

$ vars = array ('name' => 'Oscar a Grouch',
'color' => 'zöld',
'favorite_punctuation' => '#');
$ safe_vars = array ();
foreach ($ vars mint $ name => $ érték) $ safe_vars [] = urlencode ($ név). '='. urlencode ($ érték);
>
$ url = '/muppet/select.php?'. csatlakozzon ('', $ safe_vars);
$ vars = array ('name' => 'Oscar a Grouch',
'color' => 'zöld',
'favorite_punctuation' => '#');
$ safe_vars = array ();
foreach ($ vars mint $ name => $ érték) $ safe_vars [] = urlencode ($ név). '='. urlencode ($ érték);
>
$ url = '/muppet/select.php?'. csatlakozzon ('', $ safe_vars);

megbeszélés
Az ebben a megoldásban generált URL így néz ki:

A lekérdezési karakterlánc a + karakterrel kódolt szóközöket tartalmaz. A speciális karakterek, például a #, hexadecimális kódolással vannak írva, például% 23, mivel a # karakter ASCII értéke 35, ami egyenértékű a hexadecimális 23 kódszámmal.

Annak ellenére, hogy a urlencode () funkció megakadályozza a speciális karaktereket a nevét vagy a változók értékeit után kapott elemzés kialakított URL, akkor probléma lehet, ha a változó neve kezdődik a HTML primitívek neveket.


Vegye figyelembe a következő hiányos URL-t,
A sztereó rendszerre vonatkozó információk:

Az ampersand () megjelenítő HTML elem így a böngésző ezt az URL-t értelmezheti:

Háromféle módon kerülhető el a beágyazott elemek által hivatkozható URL-címek torzítása. Az első olyan változó nevek kiválasztása, amelyeket nem lehet összekeverni a primitívekkel, például az amp helyett a _amp. És a második - a szimbólumok egyenértékű átalakításával
a HTML-primitívek húrjait ezekbe az elemekbe az URL kiadása előtt. Ez utóbbi az htmlentities () függvény használatával történik:

$ url = '/muppet/select.php?'. htmlentities (join ('', $ safe_vars));

Ennek eredményeképpen az URL így fog kinézni:

A harmadik módszer az argumentum határoló értékének cseréje tovább; az arg_separator.input konfigurációs paraméter beállításával; Ezután be kell egyesíteni a név-érték párokat a karakterrel; hogy megkapja a lekérdezési stringet: /muppet/select.php?name=Oscar+the+Grouch;color=green;favorite_punctuation=%23

Nehézségek merülhetnek fel bármely GET módszerrel olyan URL-ben, amelyben nem lehet pontosan megadni a pontosvesszőt, például a GET módszerrel, mivel a felhasználó böngészője elfogadja a karaktert mint argumentum-határoló.

Számos böngésző nem támogatja a szimbólum használatát; mint határoló argumentum, ezért a legkönnyebb elkerülni az URL-t tartalmazó elemekkel kapcsolatos problémákat az olyan elemek kiválasztásával, amelyek nem felelnek meg az elemneveknek.


Ha nem tudja teljes mértékben szabályozni a változók nevét, akkor megvédje az URL-t a dekódoló elemektől az htmlentities () függvény segítségével.

Kapcsolódó cikkek