Hola,
Si se toma el código que pegaste tal cual, está mal!
por un lado debes tener
Código HTML:
<a href='a.php?imagen=mundo.jpg'><img src='./mundo.jpg' style='width:300px;' /></a>
Y en otro archivo, "a.php"
Código PHP:
if(isset($_REQUEST['imagen']))
{
$name=$_REQUEST['imagen'];
header("content-disposition:attachment; filename=$name");
header("content-type:application/octet-stream");
readfile($name);
}
Por otro lado, como dicen arriba no es bueno que leas directamente un archivo que viene por la url, sin evaluar lo que se envía, deberías hacer algo como esto:
Código PHP:
/* indicas los nombre de archivos posibles */
$posibles = array('imagen.jpg', 'otra.jpg', 'etc');
/* y luego evaluas */
if (isset($_REQUEST['imagen']) && in_array($_REQUEST['imagen'], $posibles)) {
Así te aseguras que el archivo que viene por la url sea sólo archivos "posibles".
Suerte!
@sotelio