PHP - Parâmetros de string de consulta de URL vs variáveis de sessão
-
21-12-2019 - |
Pergunta
Qual é o método mais confiável, melhor e mais seguro para usar variáveis de URL passadas para páginas diferentes:1).Usando variáveis SESSION como parâmetros de URL ou
2).Parâmetros regulares de string de consulta.
"Mais confiável, melhor e mais seguro" em relação a:1.Prevenir problemas derivados do lado do cliente, como quando um usuário desativa os cookies 2.Compatibilidades do navegador 3.Fazer chamadas de API (como algumas APIs têm limitações e problemas de compatibilidade) 4.Uso de recursos e memória e velocidade de processamento
Estou criando um site onde a quantidade de parâmetros de string de consulta nos URLs pode variar (potencialmente 9 valores transportados no URL) - com base na entrada do usuário.Pareceria mais fácil armazenar os valores das variáveis em variáveis de sessão do que transportar todos eles (possivelmente 9) em parâmetros de URL.Mas devido às quatro preocupações mencionadas acima, hesito em usar variáveis SESSION.
Obrigado por qualquer conselho!
PS.Os parâmetros da URL estão sendo construídos dinamicamente na variável $ url, como este:
$keyword = trim($_GET["Keyword"]);
$url = "webpage.php?";
$url .= "&Keyword=$keyword";
$shopByStore = $_GET["store"];
if (!empty($shopByStore)) {
$url .= "&store=$shopByStore";
}
// with 7 more GET methods potentially retrieving values for the URL parameters
As URLs ficarão assim:
<a href="<?php echo $url; ?>">anchor text</a><br>
E, claro, se eu seguir a rota da variável SESSION, os valores de entrada do usuário serão obtidos a partir de cliques em URL e armazenados nas variáveis SESSION até que a sessão termine.
if (isset($_GET["store"])) {
$_SESSION["shopByStore"] = $_GET["store"];
}
Solução
Claro que é possível salvar, por exemplo, uma palavra-chave enviada para uma pesquisa em uma variável de sessão.
Mas é útil?Não.
A variável de sessão esquecerá tudo quando a sessão for destruída.Talvez o usuário queira salvar a pesquisa ou entregá-la a outro usuário?
Com parâmetros GET não há problema, basta copiar a URL completa e guardá-la.
Mas com SESSION
parâmetros?Não é possivel.Cada usuário tem sua própria sessão e na próxima vez que visitar o site, ele terá outra sessão (por exemplo, se os usuários fecharem o navegador antes).
Nas sessões você deve armazenar apenas informações específicas do usuário.Por exemplo, o ID do usuário, nome de usuário ou itens da cesta.
Esses são apenas alguns pontos para SESSION
contra GET
.