Comunidad de diseño web y desarrollo en internet online

Mensaje de error cuando no existe el enlace

Citar            
MensajeEscrito el 11 Ago 2011 07:18 am
Hola a todos, tengo un problema en una página de anuncios, y esto ocurre cuando alguien ingresa a un anuncio inexistente, ya sea por un enlace en los buscadores o por error.
Lo que sucede es que si el anuncio fue removido por el usuario, si se entra en esa URL igualmente muestra el contenido, solo que con los campos vacios y queda muy feo. El sistema muestra anuncios a partir del archivo info.php?= seguido de un número que el número es un ID ( que indica de que aviso se trata) dentro de una tabla con todos los datos que el usuario indicó.

Yo queria ver si dentro del archivo info.php se puede poner una condición que indique que si el ID que va a mostrar no se encuentra en la tabla, muestre una página de error.

Actualmente tengo una condición que me muestra una página de error pero solo si el ID está vacio, que es la siguiente:

Código PHP :

if(empty($_GET[id])) 
{
   header("location:error.php");
   exit();
}


La tabla donde se almacenan los ID es la tabla re_listados y dentro de ella hay varios campos con descripciones del usuario y un campo especifico llamado anuncioID que seria el número que aparece después de info.php?=

Agradeceria mucho si me pueden dar una mano con la condición, ya que no logro encontrar la forma de hacerlo.

Muchas gracias!!!

Por Matias-78

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Ago 2011 12:11 pm
Supongo que en alguna parte del código hay una lectura a la base de datos para traer el registro, supongo que en ese caso en alguna parte hay una condición que indica si ese registro existe o no.
Pues allí, para generar un error HTTP 404 debes hacer:

Código PHP :

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 11 Ago 2011 02:59 pm
prueba con:

Código PHP :

<?php


/**
* verificamos que la variable no este vacía
*/
if( !empty( $_GET['var'] ) ){

/**
* si le pasas una id a tu variable, compruba que sea de tipo numerica
*/
if( is_numeric( $_GET['var']) ){

/**
* hacemos la consulta SQL
* escapamos los caracteres especiales
*/
$query = mysql_query( "select a.message from ads as a where a.id = '".mysql_real_escape_string( $_GET['var'] )."'");
/**
* verificamos que exista el anuncio
*/
if( mysql_num_rows( $query ) > 0 ){
/**
* ejecutamos lo que tenemos que ejecutar
*/
echo mysql_result( $query , 0 ) ;

}else{
/**
* no existe el anuncio, asi que que se joda
*/
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
header( 'Location:error.php' );
}

}else{
/**
* no es una ID, asi que que se joda
*/
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
header( 'Location:error.php' );
}


}else{
/**
* variable vacía, asi que que se joda
*/
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
header( 'Location:error.php' );
}


?>


me avisas si te sirve, saludos!!

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 13 Ago 2011 09:27 pm
Hola This-is-Purgatory, recién terminé de hacer las pruebas y me funcionó, ya quedó solucionado el inconveniente. Te agradezco muchisimo el tiempo y la ayuda. Te envio un saludo ^^

Por Matias-78

16 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.