Autor Tema: dudas con get  (Leído 690 veces)

Desconectado genartina

  • PHPer@ Fijo
  • ***
  • Mensajes: 131
  • Karma: 0
  • Sexo: Masculino
  • Comunidad Linksharing
    • Ver Perfil
    • Linksharing
dudas con get
« en: 12 de Septiembre de 2010, 00:25:34 am »
En mi web hasta hace poco usaba un sistema de modulacion. Pero me aparecieron problemas con las sesiones y tuve que sacarlo.

Ahora hice algo mas simple, paso las variables de la url via get: Seria algo asi:

Url: index.php?accion=noticias

Y la recibo con un if:

if($_GET['accion']=="noticias"){
include('noticias.php');
}

Funciona, y claro le falta seguridad. Pero el problema es cuando alguien modifica esa url, poniendo por ejemplo:

index.php?accion=blablabla$$$$

o algo sin sentido.
Necesitaria comprobar si el valor del get existe, caso contrario mostrar un mensaje de error.
Tambien para volver al inicio uso esto if(!$_GET) (ya que todos los links son index.php?accion=algo) esto lo que hace es comprobar si el get existe y con un include agrego la pagina principal, asi:

if(!$_GET){
include('principal.php');
}

¿ Es correcto hacer esto ?

Estas son mis dudas, espero sus sugerencias. Muchas Gracias y por favor no desvirtuen el tema.
« Última modificación: 12 de Septiembre de 2010, 00:29:04 am por genartina »
¿ Genartina ? jeje

Comunidad PHPeros

dudas con get
« en: 12 de Septiembre de 2010, 00:25:34 am »

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:dudas con get
« Respuesta #1 en: 12 de Septiembre de 2010, 00:29:59 am »

No, no lo es. Estas preguntando que si existe la variable get con el campo... ¿Que campo?. $_GET
asecas no lleva a nada. Si quieres comprobar si un archivo existe o no sería así:


<?php
$limpiar 
htmlentities($_GET[&#39;accion&#39;]);
if(file_exists("".$limpiar.".php")){
     include(
"".$limpiar.".php");
} else {
     echo &
#39;Prohibido&#39;;
}
?>

#Fdo. Physlet

Desconectado genartina

  • PHPer@ Fijo
  • ***
  • Mensajes: 131
  • Karma: 0
  • Sexo: Masculino
  • Comunidad Linksharing
    • Ver Perfil
    • Linksharing
Re:dudas con get
« Respuesta #2 en: 12 de Septiembre de 2010, 00:36:48 am »
Te explico, cuando alguien hacia click en el inicio, la url es index.php, a la cual no se puede entrar directamente por x razones y salta un mensaje de error. Por eso compruevo el get de esa forma, aunque la noto medio rebuscada.
¿ Genartina ? jeje

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:dudas con get
« Respuesta #3 en: 12 de Septiembre de 2010, 00:42:25 am »

Haber... ¿Quieres que un usuario no pueda acceder a una sección sin haber pasado por otra antes'

#Fdo. Physlet

Desconectado genartina

  • PHPer@ Fijo
  • ***
  • Mensajes: 131
  • Karma: 0
  • Sexo: Masculino
  • Comunidad Linksharing
    • Ver Perfil
    • Linksharing
Re:dudas con get
« Respuesta #4 en: 12 de Septiembre de 2010, 01:43:51 am »
ja no se si leiste mal o me exprese mal... Solo quiero que cuando algun kaker escriba o quiera modificar la url salga algun mensaje.

ejemplo: miweb.com/index.php?accion=dsadssdf o algo asi salga algun mensaje.

Seria facil de hacer si no utilizace get, pero no se como hacer para comprobar que todo lo que esta despues del = sea un dato valido y no una modificacion. ¿ logro hacerme entender ?
¿ Genartina ? jeje

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:dudas con get
« Respuesta #5 en: 12 de Septiembre de 2010, 01:50:01 am »

Ahhh pues muy facil, es cuestión de uno o mas if's. A ver que pienso...:


<?php
$permitido 
= array("index","user","registro","agregamas");
$limpiar htmlentities($_GET[&#39;accion&#39;]);
   
if(in_array($limpiar,$permitido)){
        echo &
#39;Aceptado&#39;;
   
} else {
        echo &
#39;wtf?&#39;;
   
}
?>


Espero que te sirva, saludos.

#Fdo. Physlet

Desconectado genartina

  • PHPer@ Fijo
  • ***
  • Mensajes: 131
  • Karma: 0
  • Sexo: Masculino
  • Comunidad Linksharing
    • Ver Perfil
    • Linksharing
Re:dudas con get
« Respuesta #6 en: 12 de Septiembre de 2010, 02:28:18 am »
Ahhh pues muy facil, es cuestión de uno o mas if's. A ver que pienso...:


<?php
$permitido 
= array("index","user","registro","agregamas");
$limpiar htmlentities($_GET[&#39;accion&#39;]);
   
if(in_array($limpiar,$permitido)){
        echo &
#39;Aceptado&#39;;
   
} else {
        echo &
#39;wtf?&#39;;
   
}
?>


Espero que te sirva, saludos.

Muy buen filtro, pero hay un problemita, me filtra todas las funciones, como el bbcode y otras.
« Última modificación: 12 de Septiembre de 2010, 02:48:15 am por genartina »
¿ Genartina ? jeje

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:dudas con get
« Respuesta #7 en: 12 de Septiembre de 2010, 11:16:53 am »
Muy buen filtro, pero hay un problemita, me filtra todas las funciones, como el bbcode y otras.

Pues entonces no se que decirte. Me he estado mirando el manual de PHP.net y he leido ligeramente
de que es senssitive a las mayusculas o no se que, miratelo y te acalaras:

http://php.net/manual/es/function.in-array.php

#Fdo. Physlet