[PHP] Ajuda em $_GET

orien

Portugal@Home 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
 
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?
 
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:
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...

é 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
 
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.
 
Back
Topo