kania 0 Denunciar post Postado Julho 28, 2009 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
Thiago Alves 3 Denunciar post Postado Julho 28, 2009 Você tem que checar se a variável está vazia antes de definila em: $Pag = $_GET['s']; Por exemplo: if(isset($_GET['s'])){ $Pag = $_GET['s']; } Função isset() Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Julho 28, 2009 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. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Alves 3 Denunciar post Postado Julho 28, 2009 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
kania 0 Denunciar post Postado Julho 28, 2009 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
kania 0 Denunciar post Postado Julho 28, 2009 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
Thiago Alves 3 Denunciar post Postado Julho 28, 2009 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