1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[PHP] Ajuda em $_GET

Discussão em 'Web Development' iniciada por orien, 2 de Janeiro de 2009. (Respostas: 4; Visualizações: 639)

  1. orien

    orien [email protected] Member

    Boas noites tou aqui com um problema.. é o seguinte.

    Tenho a pagina news.php onde tem uma parte que aparece a ultima noticia que foi posta no site e tenho outro mais pequeno onde aparece o resumo das noticias antigas, essas noticias antigas tem um link que devia dar para elas aparecerem como principais.. vou dar um pouco de codigo pa entenderem melhor.

    PHP:
            <?php
      
    for($i=0$i $n_elementos$i++)
      {
       if((
    $n_elementos $i) == 1// Serve para nao mostrar o resumo da noticia principal
       
    {
        echo 
    "Mais noticias!";
       }
       else
       {
        echo 
    mysql_result($resultado$i'TITULO')."<br />";
        echo 
    mysql_result($resultado$i'RESUMO')."<a href=\"?news=".$i."\">Aqui!</a><br /><br />";
       }
      }
      
    ?>
    depois no espaço da noticia principal tenho.

    PHP:
    <?php
     
    $news 
    $_GET['news'];
       echo 
    mysql_result($resultado$news'TITULO')."<br />";
       echo 
    mysql_result($resultado$news'CONTEUDO')."<br /><br />";
       echo 
    "Introduzido por: " .mysql_result($resultado$news'UTILIZADOR'). " Em: " .mysql_result($resultado$news'DATA');
      
    ?>       
    Isto funciona ao carregar nos links mas quando se abre a pagina pela primeira vez aparece a 1ª noticia da base de dados e era suposto aparecer a ultima.

    Alguem tem ideias de como resolver este problema?


    Obrigado
     
  2. MPalhas

    MPalhas Power Member

    aparece a primeira porque estás a tentar aceder ao $_GET['news'] quando ele não existe, e pelos vistos o PHP assume o valor zero nesses casos (já não me lembro a 100% disso :p)

    o que podes fazer é isto:

    Código:
    if (isset($_GET['news']) then
      $news = $_GET['news']
    else
      $news = outro_valor
    ...
    
    e já agora, coisas como estas que estás a fazer
    Código:
    $news = $_GET['news'];
       echo mysql_result($resultado, $news, 'TITULO')."<br />";
    não são nada seguras, pois não estás a verificar a validade do valor. o que é que te garante que esse GET não contém por exemplo, uma string?
     
  3. orien

    orien [email protected] Member

    ahhh isso so se forem mexer ao endereço porke de resto sou eu que tou a atribuir um valor a variavel news ou _Get['news'] com isto aqui...

    PHP:
    mysql_result($resultado$i'RESUMO')."<a href=\"?news=".$i."\">Aqui!</a><br /><br />";

    p.s. Funcionou com o teu codigo.
     
    Última edição: 2 de Janeiro de 2009
  4. MPalhas

    MPalhas Power Member

    é isso mesmo que eu estava a referir. aliás isso até tem um nome: php injection.
    não podes assumir que o utilizador seja bem comportadinho e só vai mexer onde tu queres que ele mexa :P
     
  5. orien

    orien [email protected] Member

    sim isto vai ser para uma oficina de automoveis e nao acho que va muita gente mexer nisso. e mais um site para aprenstar a oficina e tal com uma pagina de noticias.
     

Partilhar esta Página