Foros del Web » Programando para Internet » PHP »

Paginas Fantasmas PHP y MYSQL

Estas en el tema de Paginas Fantasmas PHP y MYSQL en el foro de PHP en Foros del Web. Buenas tardes comunidad ... He estado buscando en el foro, pero no encuentro nada parecido (o no se como buscarlo). A ver si me explico, ...
  #1 (permalink)  
Antiguo 10/05/2011, 09:07
 
Fecha de Ingreso: abril-2011
Mensajes: 37
Antigüedad: 13 años
Puntos: 2
Paginas Fantasmas PHP y MYSQL

Buenas tardes comunidad ...
He estado buscando en el foro, pero no encuentro nada parecido (o no se como buscarlo).
A ver si me explico, mediante una base de datos mysql genero noticias que paso en forma de resumen a una pagina llamada "noticias".
Desde aquí utilizo un enlace del tipo <a href=noticias.php?id=".$row['id']." que toma la variable "id" de la bbdd y de esta forma identifica cada noticia por separado y la remite (GET ID) a una nueva pagina donde se puede ver la noticia completa.

A medida que agrego noticias, agrego variables, y esto queda así:

http://xxxxx.com/noticias.php?id=1
http://xxxxx.com/noticias.php?id=2
http://xxxxx.com/noticias.php?id=3
http://xxxxx.com/noticias.php?id=4

Ahora, de repente, las herramientas de webmaster de google me avisan de una pagina sin titulo.
Reviso y descubro que si me invento numeritos despues del ?id= de la url, por ejemplo http://xxxxx.com/noticias.php?id=123456
me aparece efectivamente una pagina sin contenido que google indexa.

(los datos para llenar esa pagina no existen en mysql, en la tabla no hay una entrada con el id 123456 y no deberia generarse sola, o si ?).

He borrado y vuelto a crear la tabla "noticias" de la bbdd, y he cambiado la variable "id" de INT (auto_increment) a VARCHAR para ponerla manualmente y la cosa sigue igual.

Este es el PHP de las paginas que se generan "solitas" (noticia completa).

El codigo del titulo y metas....

<?php
include('conectar.php');
mysql_select_db ("xxxxxxxx", $link);
$id = $_GET['id'];
$result = mysql_query ("SELECT * FROM `noticias` WHERE id='$id'", $link);
while ($row = mysql_fetch_array($result))
{
$id= $row['id'];
$title= $row['title'];
$description= $row['description'];
$keywords= $row['keywords'];
echo "<title>".$title."</title>";
echo "<meta name='description' content='".$description."'>";
echo "<meta name='keywords' content='".$keywords."'>";
}
mysql_close($link);
?>

El codigo del contenido...

<?php
include('conectar.php');
mysql_select_db ("xxxxxxxx", $link);
$id = $_GET['id'];
$result = mysql_query ("SELECT * FROM `noticias` WHERE id='$id'", $link);
while ($row = mysql_fetch_array($result))
{
$id= $row['id'];
$titulo= $row['titulo'];
$texto= $row['texto'];
$fecha= $row['fecha'];
echo "<h1 class='textobase'>".$titulo."</h1>";
echo "<div class='textobase'><span class='enlaceinferior'>Publicado el ".$fecha."</span></div>";
echo "<div><img src='".$row['foto']."' alt='".$row['foto-alt']."' width='250' height='167' hspace='4' align='right'>".$texto."</div>";
}
mysql_close($link);
?>

Alguien sabe que puede estar pasando ?
Gracias y un saludo
  #2 (permalink)  
Antiguo 10/05/2011, 09:14
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Paginas Fantasmas PHP y MYSQL

pues solo debes hacer una condición al hacer la consulta...
si el id de la noticia no existe.. envía a un error 404 o algo similar !

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 10/05/2011, 09:30
 
Fecha de Ingreso: abril-2011
Mensajes: 37
Antigüedad: 13 años
Puntos: 2
Respuesta: Paginas Fantasmas PHP y MYSQL

A ver si lo entiendo porque estoy aprendiendo.
Necesito una linea mas de codigo de esas del tipo:

if "bla bla bla" redirigeme a 404
  #4 (permalink)  
Antiguo 10/05/2011, 09:42
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Paginas Fantasmas PHP y MYSQL

claro... puedes contar los resultados que te entrega la consulta con mysql_num_rows()
www.php.net/mysql_num_rows
y en base a eso hacer la condición

Código PHP:
$result mysql_query ("SELECT * FROM `noticias` WHERE id='$id'"$link);
if (
mysql_num_rows($result) < 1) { // si hay menos de 1 resultado
    // enviar a pagina de error
} else { // si no
    // continuar con el codigo


saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 11/05/2011, 04:09
 
Fecha de Ingreso: abril-2011
Mensajes: 37
Antigüedad: 13 años
Puntos: 2
Respuesta: Paginas Fantasmas PHP y MYSQL

Solucionado.
En base a lo que has dicho.

$result = mysql_query ("SELECT * FROM `noticias` WHERE id='$id'", $link);
$num_rows = mysql_num_rows($result);
if (mysql_num_rows($result) < 1){
header("Location: http://www.blablabla.com/404page.html");
}
else
{

Muchas gracias por todo
  #6 (permalink)  
Antiguo 11/05/2011, 04:14
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: Paginas Fantasmas PHP y MYSQL

o

Código:
if(empty($_GET['id']))
echo'<meta name="robots" content="noindex,nofollow">';
}

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:44.