Hola chicos, vengo a pedirles ayuda con este problema de seguridad que no se me ocurre como solucionarlo de buena forma.
Tengo un motor y en este las personas pueden subir fotografias, y tambien borrarlas.
El problema es que al borrarlas, cargo un while con todas las fotos subidas por el usuario filtrando por su correo, y luego el elije cual desea borrar.
El problema es que la url al intentar borrar la foto queda con ../mis-progresos-eliminar.php?imagen_id=22
y con esto si el usuario cambia el id de manera manual, puede borrar la imagen que sea.
Adjunto el codigo para ver si me pueden ayudar saludos-
Codigo que carga los datos de las fotos ingresadas
Código:
<table id="tabla-registros">
<tr>
<td>NOMBRE</td>
<td></td>
</tr>
<?php
/** conexion ***************************/
// conectamos a la base de datos
session_start();
include('../acceso_db.php');
/** fin conexion ************************/
$usuario=$_SESSION['email'];
// del registro a actualizar
// hacemos una consulta
// para mostrar los datos
// hacemos una consulta
// para mostrar los registros
$sql = mysql_query("SELECT imagen_id, imagen FROM imagenes WHERE email='$usuario'") or die(mysql_error());
// mostramos los registros
while($row = mysql_fetch_array($sql))
{?>
<tr class="campos-tabla">
<?php echo "<td>".$row['imagen']."</td>"."<td>"."<a class='actualizar-clientes' href='mis-progresos-eliminar.php?imagen_id=$row[imagen_id]'>Eliminar</a>"."\n"?>
</tr>
<?php
}
?>
</table>
Codigo para borrar la imagen:
Código:
<?php
include('../acceso_db_actualizar.php');
// comprovamos si
// ha sido enviado el formulario
if(isset($_POST['eliminar']) && $_POST['eliminar'] == 'Eliminar'){
// creamos la consulta
// que eliminara el registro
// que viene via $_POST
$id_eliminar = $_POST['imagen_id'];
$sqlEliminar = mysql_query("DELETE FROM imagenes WHERE imagen_id = $id_eliminar", $link)
or die(mysql_error());
// enviamos un mensage de exito
$mensaje = "<p class='mensaje-eliminado'>El registro a sido eliminado</p> <a href='mis-progresos-registros.php'>Ver más registros</a>";
}
// si no ha sido enviado el formulario aun
// recogemos el ID
// del registro a eliminar
// via $_GET
elseif(isset($_GET['imagen_id'])){
$id = $_GET['imagen_id'];
// hacemos una consulta
// para mostrar el registro
// que vamos a eliminar
$sql = mysql_query("SELECT * FROM imagenes WHERE imagen_id = $id", $link)
or die(mysql_error());
$row = mysql_fetch_array($sql);
// advertimos
$mensaje = "<p class='mensaje-eliminar'>¿Está seguro que quiere eliminar la fotografía <b>$row[imagen]</b>?<p>";
}
// mostramos el mensage
echo $mensaje;
?>
<!-- creamos el formulario HTML
que enviara el ID
del registro a eliminar -->
<form name="eliminar-registro" method="post" action="<?php $_SERVER['PHP_SELF']; ?>" >
<input name="imagen_id" type="hidden" value="<?php echo $row['imagen_id']; ?>" />
<input class="boton-actualizar" name="eliminar" type="submit" value="Eliminar" />
</form>
De antemano muchas gracias por su ayuda