El problema es que la variable creada dentro de la función, es local a la misma.
Normalmente, bastaría con agregar
global $nombrevariable;
dentro de la función, pero en este caso no sirve (ya que no sabés de antemano qué variables vas a crear)
Sugiero meter el código en un archivo e incluirlo (con include o require).
Y una cosa más: no es necesario usar eval, podés hacer lo mismo con este foreach:
Código PHP:
foreach($_POST as $campo => $valor){
$$campo = $valor;
}
Saludos.