https://www.php.net/manual/en/langua...s.variable.php cioè qualsiasi valore di tipo peraltro (stringa, null, boolean etc.).
In the "query" component of a URI (the part after a ? character), for example, / is still considered a reserved character but it normally has no reserved purpose, unless a particular URI scheme says otherwise. The character does not need to be percent-encoded when it has no reserved purpose.
Esempio: http://www.domain.tld/?name=.valore
Poiché il nome del file della query è assente potrebbe trattarsi del file index.php o se il webserver da preferenza e esistono index.html o index.htm o qualsiasi cosa configurata per la direttiva.
Se http://www.domain.tld/?name=.valore
Codice PHP:
<?php
var_dump($_GET['name']); // .valore
$dir = strtr('.', '/', $_GET['name']); // /valore
$costruzione_query = 'https://www.domain.tld/?' . urlencode($dir);
var_dump($costruzione_query); // https://www.domain.tld/?name=%2Fvalore
?>
Peraltro utile a non far bloccare Apache se la direttiva directoryslash è attiva (il bug è per il carattere / e o ? presente nella query) https://httpd.apache.org/docs/trunk/...directoryslash
Esempio 2 alla stessa uri ma $_GET usa internamente urldecode.
Se https://www.domain.tld/?name=%2Fvalore
Codice PHP:
<?php
var_dump($_GET['name']); // /valore
?>
Poiché $_GET['dir'] non esiste e credo nemmeno chiamato dal browser in questo modo https://www.domain.tld/?dir=%2Fvalore php l'indice assente di predefinito lo imposta alla costante NULL.
Esempio 3
Codice PHP:
<?php
$dir = str_replace(".", "/", NULL);
var_dump($dir); // string (0)
?>