Foros del Web » Programando para Internet » PHP »

Paso de ID para modificar registro

Estas en el tema de Paso de ID para modificar registro en el foro de PHP en Foros del Web. Hola amigos, Tengo un script que añade, modifica y elimina un registro de la base de datos en el mismo php. Resumiendo Sería algo así: ...
  #1 (permalink)  
Antiguo 01/08/2012, 12:06
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 5 meses
Puntos: 1
Paso de ID para modificar registro

Hola amigos,

Tengo un script que añade, modifica y elimina un registro de la base de datos en el mismo php. Resumiendo Sería algo así:

Código PHP:
if(!$_POST['campo']){

      switch(
$action){
      case 
'delete': [BLoque de acciones]; break;
      ....
      case 
'write':
      
// Aquí determino si se edita o es un registro nuevo

      
}

}else{
      
//Proceso los datos (ya sea nuevo registro o existente)

La cuestión es que si se está editando el registro, tengo que pasarle de alguna manera el IDENTIFICADOR, para luego poder aplicar el mysql_query correspondiente.

Hasta ahora siempre lo había hecho con una variable hidden vía post (comprobando despues de post, que corresponde a ese usuario, porque con firebug se puede modificar). Para ahorrarme esa comprobación y hacerlo mas eficiente he decidido usar una variable de $_SESSION.

Alguien sabe como hacerlo? Si seteo la variable de session en el NO POST, y luego no envio el formulario, se me queda la session por ahi colgada. Pensé en hacerlo con ajax al submit. Si alguien sabe de alguna técnica eficiente para esto, me iría requete bien saberlo.

Un saludo!
  #2 (permalink)  
Antiguo 01/08/2012, 12:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Paso de ID para modificar registro

Si el usuario que modifica tiene acceso a todos los registros pues, de nada sirve mucho que bloquees que se pase el ID por Firebug, ya que sería problema del usuario.

Si hay permisos / privilegios, lo que te conviene es primero revisar que el registro a borrar / editar sea de los que tiene permitidos por el usuario.

El usar session no es eficiente por lo que dices, así que mejor te conviene resolver el problema viendo los permisos del usuario activo.

Saludos.
  #3 (permalink)  
Antiguo 01/08/2012, 13:04
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Paso de ID para modificar registro

Gracias por tu respuesta GatorV,

Comentarte que efectivamente hay privilegios.Tengo una tabla de usuarios y otra de proyectos en la que indico entre otras cosas a que ID de usuario pertenece.

Entonces yo lo que hago para editar un proyecto es lo siguiente (lo resumo bastante):

Código PHP:
function compruebaProyecto($id_proyecto){

      
$query mysql_query("
      SELECT COUNT(*)
      FROM proyectos
      WHERE ID="
.$id_proyecto."
      AND ID_USUARIO="
.$_SESSION['id']
      );

      return 
mysql_result($query,0) > true false;
}

// --- Main script ----

if(!$_POST){

     
$id_proyecto $_GET['id_proyecto'];
     
$ok_permisos compruebaProyecto($id_proyecto);
     if(
$ok_permisos){
            
//Muestro formulario para editar con los datos del proyecto cargados
            //En el formulario pongo en un campo hidden el ID del proyecto
     
}


}else{
     
      
//Aquí tengo que volver a comprobar que el ID enviado corresponde con la persona
      //Esto lo hago porque desde firebug se puede modificar a voluntad los campos de los formularios
      
$id_proyecto $_POST['id_proyecto'];
      
$ok_permisos compruebaProyecto($id_proyecto);
      if(
$ok_permisos){
             
//Proceso los datos y hago query
      
}


Hasta ahora lo tenía hecho siempre así. Pero pensándolo bien, tengo que hacer dos veces la misma comprobación, antes del POST y después. Es por eso que había pensado lo de la sesión.

Pero la pega que le he encontrado, es que si seteo una sesión antes del POST, aunque despues del POST le haga un unset, si el usuario no envía el formulario, esa variable queda colgada y es un rollo.

Un saludo
  #4 (permalink)  
Antiguo 01/08/2012, 13:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Paso de ID para modificar registro

Exacto y pues no te vas a poder "zafar" de esa comprobación, recuerda la regla de oro, nunca confíes en los datos que vienen del usuario, es mejor que hagas la comprobación las dos veces para tener esa consistencia en los datos.

Saludos.
  #5 (permalink)  
Antiguo 01/08/2012, 13:35
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Paso de ID para modificar registro

Gracias por tu respuesta GatorV,

En realidad confiaba en que hubiese alguna técnica. Mas que nada por el tema de optimizar consultas a la base de datos.

Un saludo!

Etiquetas: formulario, modificar, mysql, paso, registro, variables, usuarios
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 18:50.