Ir para conteúdo

POWERED BY:

Arquivado

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

kania

[Resolvido] erro em ler string url

Recommended Posts

Olá pessoal, tenho o seguinte script

 

$Pag = $_GET['s'];
$Var = ".php";
  if (empty($Pag)) $Pag="home";
    include("$Pag"."$Var");

Bom que estou tentando fazer é verificar se a variavel $Var esta vazia e caso esteja então dar a ela uma ação.

O que ocorre é que quando o usuário entrar no site semrpe esta variavel estará vazia porque ele entra direto pelo endereço do site, ai esta dando um erro, Notice: Undefined index: s in C:\wamp\www\ies\index.php on line 41, quando a $Var esta com valor este erro não aocntece, tem como eu anular este erro ou ignorar a situação caso a variavel esteja vazia, vi que este mesmo erro ocorre quando faço um form onde executo o script dentro da mesma pagina do form, quando busco os valores do campo $_POST como inicialmente as variaveis chegam vazias porque o form ainda não foi enviado, da erros na tela.

 

Só para exemplificar o erro acima, se eu passar a url assim index.php da erro se for assim index.php?s=home funciona, como falei acredito que é porque a Variavel $Var que busca seu valor no GET chega inicialmente vazia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não inclua arquivos desta maneira, é muito perigoso.

Use switch ou então um array para definir as paginas permitidas para include.

 

Mas diretamente nao faça assim.

 

Tem razão, não tinha reparado este comum caso de XSS.

Só esclarecendo, desta maneira qualquer um pode acessar suas página, é só trocar a URL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, na verdade comecei a estudar o php a poucos dias, eu programo em asp, então estou vuando no que me falaram ali em cima, pq não estou colocando uma pagina restrita, são paginas normais, o que estou tentando fazer é um menu, onde em vez de eu criar varios layouts iguais, eu crio a primeira apgia que vai receber um layout padrão para o site e as seguintes paginas vão ter somente um miolo com o conteúdo, ai no menu eu chao somente esta pagina, em asp eu faço algo assim normalmente.

 

<%
Dim pag    
pag = Request.QueryString ("pag") ' aqui recebo o valor enviado pela QueryString PAG
  if pag ="" then 'Se ela for vazia executo a página conteudo_inicial.asp na proxima linha, se não for executo a pagina enviada pela QueryString PAG 
    server.Execute("conteudo_inicial.asp")
  else
    server.Execute(pag)
  end if
%>

Porem em Pphp ainda não sei qual seria por exemplo qual o com,ando equivalente para  server.Execute do asp

O amigo acima sugeriu para verificar se a variale esta vazia, porem quando eu uso o empyt ela não faz isto? Ao menos foi o que entendi leno o manual do php http://br.php.net/manual/pt_BR/function.empty.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente resolvi, achei uma forma, não sei se a melhor, mas funcionou.

 

<?
$Var = ".php";
  if(isset($_GET['s'])){
    $Pag = $_GET['s'];
    include("$Pag"."$Var");
}else{
    $Pag = "home";
    include("$Pag"."$Var");
					}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, para que seu site fique seguro e evitar ataques fazendo com que você perca seus dados, será necessária uma especificação das páginas que o usuário vai navegar. Se você não entendeu ainda: O que é XSS?

Isso acontece pois você está deixando que qualquer um escolha a página que vai ser incluída olhe:

URL: http://www.seusite.com.br/index.php?s=artigos

Vai virar: include("artigos.php"), até ai tudo certo

 

E se aparecer um espertinho e resolver se aproveitar disto, ele poderá incluir qualquer página do seu site, ou até outras que danificaram o mesmo.

Por isso e outras razões, você deverá especificar os casos em que as páginas da URL são associadas á páginas verdadeira, acredito que você já é familiarizado com Switch

 

if(isset($_GET['s']){
	$Pag = $_GET['s'];
	Switch($Pag){
		case 'downloads' : include('down.php'); break;
		case 'contato' : include('contato.php'); break;
		default: include('paginapadrao.php');
	}
}

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.