Lang & Rang

Se visualizzate una pagina (X)HTML siffatta (copiate e incollate):

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<title>Untitled</title>
</head>
<body>
	&amp;lang=1
	<br />
	&lang;=1
	<br />
	&rang;=1
</body>
</html>

in questo modo

&lang=1
⟨=1
⟩=1

sappiate che le due entities HTML &lang (sì, così, senza punto e virgola) e &rang sarebbero left e right angle brackets, che non sono i simboli di minore o maggiore, ma parentesi angolari.

Alcuni di voi diranno “ecco…!” altri diranno “e ddovestascritto?!”.
Ai primi dico “Eh, ‘nfatti…” ai secondi, dico “qui“.

Allora, il problema e’ questo:

Mettiamo che tu abbia come parametro in un URL la lingua e che tu abbia deciso di usare come switch “lang“.
Dovendolo passare in un URL scriverai:

http://www.roam.it/index.aaa?lang=1

Ma se non lo passi come primo parametro, avrai:

http://www.roam.it/index.aaa?edue=0&lang=1

Quando metti la URL in un href, ovviamente passerai i parametri URLencoded, e quindi scriverai (spero):

http://www.roam.it/index.aaa?edue=0&amplang=1

A questo punto tu lo VEDI come

http://www.roam.it/index.aaa?edue=0&lang=1

ma se lo clicchi nell’header http ci va correttamente quello URLencoded.

Tuttavia se vai a vedere i log scoprirai che non sempre i log mantengono il formato URLencoded; mettiamo che tu usi AWSTATS per pettinare i log e renderli disponibili a terzi.
Quando costoro visualizzano quegli URL. li vedranno come

http://www.roam.it/index.aaa?edue=0⟨=1

Perché il browser interpreta &lang come parentesi angolare aperta.

Non solo, ma se ci cliccano sopra, prendono un bel 404, perché

http://www.roam.it/index.aaa?edue=0⟨=1

in effetti non esiste.
E quindi ti rompono i coglioni.

Morale: non passare la lingua URLencoded come &lang=qualcosa se vuoi dei log puliti.
Oppure passarla come primo parametro: ?lang=qualcosa.

Autore: eDue

Bieco illuminista

Lascia un commento