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'];