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