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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top