Ponto no nome da variável da querystring – O php não aceita
Precisei usar parâmetros na querystring, com ponto no nome deles:
?login.sys=wbruno
Só que o ponto no php é uma estrutura da linguagem. Variaveis com ponto no nome não são válidas.
Isso me impossibilitou de receber o GET, da forma convencional:
echo $_GET['login.sys'];//
Com um var_dump(), percebi que neste caso, o php faz a troca automaticamente, do ponto por um underline:
echo $_GET['login_sys'];//wbruno
Rascunhei rapidamente o seguinte script para “desfazer” essa troca do php, e então usar no restante do projeto, o array $_GET, exatamente como está lá na URL.
<?php //var_dump( $_GET, $_GET['login.sys'], $_GET['login_sys'] );//array(1) { ["login_sys"]=> string(6) "wbruno" } NULL string(6) "wbruno" var_dump( $_GET['login.sys'] );//NULL $newGet = Array(); foreach( $_GET AS $key=>$value ) { $newGet[ str_replace( '_', '.', $key ) ] = $value; } $_GET = $newGet; echo '<hr />'; var_dump( $_GET['login.sys'] );//string(6) "wbruno"
E ai ? você já passou por isso ?
Como resolveu ?
@João Batista Neto, resolveu com htaccess:
https://www.facebook.com/neto.joaobatista/posts/470926322933918
RewriteEngine On RewriteCond %{QUERY_STRING} ^(.*)\.(.*)\=(.*)$ RewriteRule .* index.php?%1[%2]=%3 [QSA]
Isso vai fazer:
Então: index.php?user.name=Teste
Virar: index.php?user[name]=Teste
E no PHP, acessamos:
<?php echo $_GET['user']['name'];