Foros del Web » Programando para Internet » PHP »

Duda con $_GET

Estas en el tema de Duda con $_GET en el foro de PHP en Foros del Web. Buenas! Me estoy haciendo una web (o mas bien practicando xD) de momento me va bastante bien, lo que no sabia hacer lo he encontrado ...
  #1 (permalink)  
Antiguo 06/05/2009, 08:00
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 1 mes
Puntos: 5
Exclamación Duda con $_GET

Buenas!

Me estoy haciendo una web (o mas bien practicando xD) de momento me va bastante bien, lo que no sabia hacer lo he encontrado en google o en la misma pagina oficial de php...pero esto no lo he encontrado.

Tengo una variable $id que hace referencia a $_GET['id'], mi problema es que no se como hacer, para verificar que el valor existe o no. Es decir, yo uso el $id para visualizar una noticia u otra, dependiendo del valor pero si modifico la URL a mano y escribo un id que no existe, me muestra el template con el contenido vacio (pues no ha encontrado la noticia). El caso es que preferiria mostrar un mensaje de error, redireccionar o alguna otra cosa porque, no soy experto ni nada por el estilo, pero imagino que ahora mismo si pongo una consulta DELETE me puedo cargar lo que quiera porque no verifico si existe o no lo que estoy poniendo.

Espero que se entienda y puedan ayudarme. Creia que con isset podria hacerlo pero isset solo mira si la variable esta definida o es NULL, no verifica lo que recibe.

Saludos.
  #2 (permalink)  
Antiguo 06/05/2009, 08:07
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Duda con $_GET

Debes verificar que tienes antes de usarlo, sabes si lo que esperas es un número, y si es positivo o no, primero debes verificar si es así.
Luego si haces la sentencia sql y no trae datos, puedes mandar un error.
Pero antes de hacer la consulta debes tomar muchas medidas de precaución ya que como dices pueden colocar sentencias sql y estas no debes permitirlas.
Puedes buscar un poco en el foro, encontrarás mucha información de como verificar cadenas o datos ingresados por el usuario antes de ejecutar una sentencia sql.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 06/05/2009, 08:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Duda con $_GET

Hola:

Si ese id es el campo clave de una table, puedes después de la consulta, saber si hay registros devueltos, por ejemplo con mysql usando mysql_num_rows...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 06/05/2009, 09:06
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: Duda con $_GET

Buenas!

Gracias por las respuestas. Parece que no pero me han resuelto el problema :P

No tengo mucha experiencia en PHP y no se me ocurren este tipo de cosas...he utilizado esto para verificar:

Código PHP:
if( mysql_num_rows($res) <= || !is_integer$_GET['id'] ) ) {
    @
header("location:index.php");

Ya mas adelante vere si pongo algun tipo de error o no, de momento lo dejo asi. Este if demomento, no deja poner id=-1 (o cualquier otro numero)...

Ahora el problema...leí por ahi que $_GET siempre devuelve una cadena, entonces, tal y como lo he puesto ahi siempre va a devolver true y va a redireccionar al indice. Sea un numero o no lo que he escrito en la URL...

Si $_GET siempre devuelve una cadena, como voy a saber si es un numero o una letra lo que se escribe?

Saludos ^^
  #5 (permalink)  
Antiguo 06/05/2009, 10:21
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Duda con $_GET

is_numeric.

Además creo que si intentas convertir lo que traes de URL usando (int) delante de la variable y luego preguntas si es entero, debe funcionar.
Si me equivoco que alguien me corrija.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #6 (permalink)  
Antiguo 06/05/2009, 10:29
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: Duda con $_GET

lo que debes hacer es:
Código PHP:
<?php

$id 
intval($_GET[id]);

$result mysqli_query($db_handler"SELECT texto, titulo, etc FROM noticias WHERE id = $id");

if(
mysqli_num_rows($db_handler) <= 0) die("la noticia que solicita no existe");

...

//resto del código

...

?>
  #7 (permalink)  
Antiguo 06/05/2009, 10:50
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Duda con $_GET

Hola:

Me parece que el chequeo del tipo del campo id después de la consulta tiene muy poco sentido... con averiguar si se han encontrado registros debería ser suficiente... incluso, si quisieras optimizar el código, averiguar el tipo antes de la consulta sql... aunque son consultas bastante rápidas (como para despreocuparse)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 06/05/2009, 10:50
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Duda con $_GET

Muy buena esa idea estimado, hasta a mi me ha servido.
Muchas Gracias compañero!

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #9 (permalink)  
Antiguo 06/05/2009, 11:12
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 4 meses
Puntos: 56
Respuesta: Duda con $_GET

Por si te sirve, y uso esto para reconocer un ID;

Código PHP:
function is_id($num){
return ((
ctype_digit($num) || is_int($num)) && intval($num) >) ? true false;
}
if(
is_id($num)){
// Result
}else{
@
header("location:index.php"); exit;

__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #10 (permalink)  
Antiguo 08/05/2009, 04:17
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: Duda con $_GET

Cita:
Iniciado por America|UNK Ver Mensaje
Por si te sirve, y uso esto para reconocer un ID;

Código PHP:
function is_id($num){
return ((
ctype_digit($num) || is_int($num)) && intval($num) >) ? true false;
}
if(
is_id($num)){
// Result
}else{
@
header("location:index.php"); exit;

Muchas gracias, me ha servido

Gracias a los demas tambien por responder y ayudar :)
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 02:33.