Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

NoX1911

[Resolvido] Problema usando passagem de parametros via URL

Recommended Posts

Olá pessoal,

 

Estou com um bendito problema aqui, na verdade estou me deparando com isso quase todos os dias.

Alguns projetos antigos que eu tenho em PHP nao estão funcionando como funcionavam antes. Alguns nao usam a tag <?php, mas sim <?, essas nao funcionam de jeito nenhum.

 

Mas o caso agora é o seguinte:

Faço uma chamada pelo link usando por exemplo:

adm/redireciona.php?id=index

redireciona.php

<?php
	if ($id=="index") require("principal.php"); 
<?

principal.php

<p>Será que funciona!?</p>

Sempre usei esse codigo e agora não quer funcionar.

Será que é a versão nova do PHP? Estou usando a 5.2.6. Preciso de alguma extensão para isso?

 

Valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você sempre terá que usar o $_GET pra pegar um valor via URL, ou $_POST para pegar valores de formulários com método POST, então logo ficaria assim:

 

<?php
	if ($_GET['id']=='index') require('principal.php');
?>

Entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os dois erros dependem da configuração do PHP, você pode rodar um

CODE
<?php phpinfo(); ?>
pra comparar as configurações.

 

O problema das tags é por causa da configuração short_open_tag que deve tá como off. Pra funcionar com <? ?> short_open_tag precisa ficar on e você precisaria mexer arquivo de configuração do PHP do servidor. Mas já vou adiantando que li ontem que eles pretendem acabar com o <? ?> apartir do PHP 6.0 (parece que isso complica um pouco na hora de mexer com arquivos .xml), então o ideal é já utilizar tudo como <?php ?>.

 

Sobre o código que não funciona eu acho que tem relação com uma outra configuração chamada register_globals, quando esse register_globals tá como on na sua configuração do PHP, qualquer valor que você passar como parâmetro vai automaticamente para uma variável (no seu caso id=index vira uma variavel $id com valor "index"). No PHP4 isso funcionava por padrão e facilitava bastante o desenvolvimento, mas no PHP5 foi desabilitado porque isso gera problema de segurança (você pode sobrescrever qualquer variavel da página passando valores como parametros).

 

Então pra funcionar no PHP5 eu alteraria teu código do redireciona.php pra algo como:

 

CODE
<?php

if ($_REQUEST['id']=="index") require("principal.php");

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

if ($_REQUEST['id']=="index") require("principal.php");

?>

Prefira usar o método correto, referente ao tipo de dados, é mais seguro, nesse request ai, tanto faz vim do post como do get ele pegaria do mesmo jeito, eu acho inseguro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é bom fazer um tratamento

 

se um usuario digitar

adm/redireciona.php?idmodificado=index

 

ou

 

adm/redireciona.php?id=valor qualquer

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.