Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/03/2009, 11:30
smilioto
 
Fecha de Ingreso: marzo-2009
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Exclamación Problema con OnUnload

Hola a todos, tengo un programa en PHP que utiliza JS de la siguiente manera:

<body onunload='escribe_en_txt()'>

<?php

if($_POST[accion]=="Configurar"){

$texto="ALGUNA COSA";
$archivo=fopen("mi_archivo.txt","w+");
fwrite($archivo,$texto);
fclose($archivo);
}

<form action='$_SERVER[PHPSELF]?accion=Configurar' method='POST'>

Aqui formulario para carga de algunos datos.

<input type='submit' name='Configurar' value='Configurar'>

</form>

?>

</body>

--------------------------------------------------------------------------------------

La funcion escribe_en_txt() llama al archivo PHP escribe_en_txt.php en el servidor:

function escribe_en_txt(){
var xmlHttp;

//adapto el codigo para != navegadores
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}

catch (e){
// Internet Explorer
try{
xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
}catch (e){
try{
xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e){
alert('Your browser does not support AJAX!');
return false;
}
}
}
// FIN adapto el codigo para != navegadores

var url = 'escribe_en_txt.php';
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4) {
if(xmlHttp.status == 200) {
}
}
}

xmlHttp.open('POST',url,true);
xmlHttp.send(null);
}

-------------------------------------------------------------------------------
El archivo escribe_en_txt.php es el siguiente (comenta lo que estaba escrito anteriormente en el archivo, cuando el usuario cierra la ventana y sale del progrma):

<?php
$texto="# ALGO";
$archivo=fopen("mi_archivo.txt","w+");
fwrite($archivo,$texto);
fclose($archivo);
?>


El tema es que por separado (dejando solo el evento unload, o escribiendo el archivo con "ALGO" y quitando el codigo del evento unload) funciona correctamente. Pero cuando los pongo juntos (tal cual lo detalle arriba), el archivo mi_archivo.txt siempre queda con "# ALGO" (es decir comentado). Como si el evento unload se ejecutara despues de que el codigo entra en el condicional if($_POST[accion]=="Configurar"){
}

Por logica, entiendo que deberia ejecutarse antes (se que al enviar el formulario se dipara el evento unload).

Porque ocurre esto? Alguna idea para solucionarlo?

Desde ya muchas gracias

Sebastian