Si, más o menos, ahora veo que el mensaje lo tenés definido en la sesión, la cosa es recargar la página perfil.php
bueno, con una variante de lo que te puse antes
perfil.php
Código PHP:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titulo</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//<![CDATA[
function mensaje(texto){
document.getElementById('mensaje').innerHTML = texto;
}
//]]>
</script>
</head>
<body>
<p>
</p>
<form action="genera.php" target="genera" method="post" id="fperfil">
<p>
<input type="text" value="" name="perfil" /> <input type="submit" value="generar perfil" onsubmit="this.form.reset();"/>
</p>
</form>
<div id="mensaje">
<!-- fix -->
</div>
<iframe src="about:blank" name="genera" id="genera" width="0" height="0" frameborder="0"></iframe>
</body>
</html>
genera.php
Código PHP:
Ver original<?php
$datos = $_POST['perfil'];
if($crearcvs !== false){
?>
<script type="text/javascript">
//<![CDATA[
/* script */
//parent.mensaje('Se generó el archivo');
parent.location.reload(true);
window.location.href='temp.csv';
//]]>
</script>
<?php
}else{
?>
<script type="text/javascript">
//<![CDATA[
/* script */
//parent.mensaje('error');
//]]>
</script>
<?php
}
?>
en perfil puse el time() para que veas que se recarga.
Recordá que con lo del .htaccess que te mencioné, ya no son necesarios los headers. Y el nombre del archivo lo podés manejar con una variable. El mensaje de error lo dejamos, no está de más
la clave está en hacer
Código Javascript
:
Ver originalparent.location.reload(true);
el true lo usamos para asegurarnos que se carga del server y no de la cache
Se entiende
Te dejo una demo
http://foros.emprear.com/php/perfil/perfil.php
Saludos