PHP automaticamente as variáveis ??de “pegar”
-
06-07-2019 - |
Pergunta
Estou desiging um novo site para a minha empresa e eu estou tentando implementar a navegação interruptor que é o que eu usei em todos os meus sites no passado.
<?php
switch($x) {
default:
include("inc/main.php");
break;
case "products":
include("inc/products.php");
break;
}
?>
Por alguma razão quando eu ir para index.php? X = produtos nada acontece, ele ainda exibe inc / main.php, em outras palavras, não tenha detectado a variável X a partir do URL. Isto é algo a ver com variáveis ??globais?
Solução
Sim, a configuração do PHP tem corretamente register_globals
ficou desligado, porque isso é incrivelmente inseguro.
Basta colocar:
$x = $_REQUEST['x']
no topo do seu script.
Você também pode usar $_GET
se especificamente apenas quero que este trabalho para o método HTTP GET
. Eu vi algumas pessoas afirmam que $_REQUEST
é de algum modo inseguro, mas nenhuma evidência para sustentar isso.
Outras dicas
Parece que seus webhosts anteriores usados ?? register_globals e seu código depende disso. Este é um perigoso ambiente e foi justamente removido no PHP 6.0! Use switch($_GET['x']) {
vez.
Você deve usar $ _GET para ler essas variáveis. Há uma função obsoleta chamado register_globals , mas eu definitivamente não aconselharia usar isso, pois é um potencial risco de segurança.
Você pode usar http://php.net/manual/es/function.extract .php para extrair as variáveis ??se você quiser fazê-lo, mas tenha em mente que esta permite que todas as variáveis ??definidas usuário com o conteúdo que eles querem no seu script, o que o torna tão inseguro quanto usando register_globals