Foros del Web » Programando para Internet » PHP »

pasar fichero con session_id a javascript

Estas en el tema de pasar fichero con session_id a javascript en el foro de PHP en Foros del Web. Hola, la cuestión es la siguiente: - después de hacer una consulta y obtener el resultado, genero un fichero json y creo un fichero que ...
  #1 (permalink)  
Antiguo 01/10/2012, 03:05
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
pasar fichero con session_id a javascript

Hola,
la cuestión es la siguiente:
- después de hacer una consulta y obtener el resultado, genero un fichero json y creo un fichero que guardo en un directorio. Posteriormente en un script javascript usando la libreria Extjs leo el fichero y relleno un grid para mostrar información por pantalla. Esto va de perlas, pero claro para un usuario, pero si son varios usuarios ese fichero que escribo me lo machacarían cada vez que se hiciese una consulta ¿no?, pensé entonces en generar el fichero pero asignándole la variable de sesion ¡perfecto! pero el problema lo tengo despúes cuando lo quiero pasar a javascript para que lo lea. Antes de meter el número de sessión lo hacía del modo:
Código PHP:
$geojson = array(
        
'type' => 'FeatureCollection',
        
'features' => array()
    );
    
$i 0;
    while (
$line pg_fetch_assoc($result)) {
        
$feature = array(
            
'geometry' => json_decode($line['geojson'], true),
            
'properties' => $data[]=$line,
            
'id' => $i++
            );
        
array_push($geojson['features'], $feature);
}
$especie json_encode($geojson);
$archivo fopen("data/especie.json""w");
fwrite($archivo$especie);
fclose($archivo); 
Ahora al meter el número de sesión hago:
Código PHP:
...
$filename "data/especie" .session_id().".json";
$archivo fopen($filename"w");
fwrite($archivo$especie);
fclose($archivo); 
En Javascript lo leo del modo:
Código:
proxy: new GeoExt.data.ProtocolProxy({
            protocol: new OpenLayers.Protocol.HTTP({
		url: "data/especie.json",
                format: new OpenLayers.Format.GeoJSON()
            })
})
Con el primer método sin problema, lo abre y lo pinta en el grid, pero no sé como pasarle data/especie" .session_id().".json a la url que leo en javascript. A lo mejor no es tan complicado y yo me estoy rompiendo la cabeza!!!
  #2 (permalink)  
Antiguo 01/10/2012, 05:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: pasar fichero con session_id a javascript

Código Javascript:
Ver original
  1. proxy: new GeoExt.data.ProtocolProxy({
  2.             protocol: new OpenLayers.Protocol.HTTP({
  3.         url: "data/especie<?php echo session_id(); ?>.json",
  4.                 format: new OpenLayers.Format.GeoJSON()
  5.             })
  6. })

ahi directamente o en una variable javascript en la cabecera de index.php con una varible javascript....

Código Javascript:
Ver original
  1. var sessionid=<?php echo session_id(); ?>;

y luego

Código Javascript:
Ver original
  1. proxy: new GeoExt.data.ProtocolProxy({
  2.             protocol: new OpenLayers.Protocol.HTTP({
  3.         url: "data/especie"+sessionid+".json",
  4.                 format: new OpenLayers.Format.GeoJSON()
  5.             })
  6. })

Sabes que un fichero de scripts de javascript puede tener extension .php .

Imagina funciones.js.php el servidor lo ejecutará como si fuera un php normal y el cliente lo recibirá como si fuera un .js normal. Siempre que el resultado del php sea un codigo javascript válido, claro.

Código HTML:
Ver original
  1. <script language="JavaScript" type="text/JavaScript" src="funciones.js.php"></script>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 01/10/2012 a las 05:09
  #3 (permalink)  
Antiguo 01/10/2012, 09:20
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: pasar fichero con session_id a javascript

hola,
pues el caso es que no funciona este método, en principio tampoco da error, por lo que veo en firebug, pero no hace el load del grid una vez ejecutado el script de ajax.
  #4 (permalink)  
Antiguo 02/10/2012, 05:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: pasar fichero con session_id a javascript

La primera opcion que te daba es posible que no funcione, pero con la variable en index.php siempre que se cree antes de cargar el script deberia funcionar...

Es decir si haces...

<html...>
<head>
....
<script language="JavaScript" type="text/JavaScript" src="proxy.js"></script>
<script>
var sessionid=<?php echo session_id(); ?>;
</script>
...

donde proxy.js tiene el script no funcionará ya que la variable no exitia cuando se ha cargado...
Cambia el orden

<html...>
<head>
...
<script>
var sessionid=<?php echo session_id(); ?>;
</script>
<script language="JavaScript" type="text/JavaScript" src="proxy.js"></script>
...

Si no funciona, como estas usando objetos quizas tendrias que modificar el objeto para que reciba la var sessionid como parametro en el momento de construir el objeto...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 02/10/2012, 07:54
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: pasar fichero con session_id a javascript

efectivamente le paso el id de la sesion ya Firebug me suelta un ReferenceError con un numero de sesion como no definida:
ReferenceError: ************************* is not defined

var sessionid=*************************;

y despues de hacer el POST el GET me devuelve:
GET http://***/*/*/nombreUNDEFINED.json
error 404
  #6 (permalink)  
Antiguo 02/10/2012, 08:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: pasar fichero con session_id a javascript

Dime como lo haces ... para ver donde puede estar el error...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 02/10/2012, 09:23
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: pasar fichero con session_id a javascript

ahora si que ya no entiendo nada: xd
en index.php antes de nada hago echo session_id(); continuo con los include y posteriormente ya incorporo el JS que va a hacer el grid etc. bien, en el fichero donde tengo la consulta, fichero_consulta.php hago:

Código PHP:
$filename "datos/especie" .session_id().".json";
$archivo fopen($filename"w"); 
y en el JS para cerciorarme hago
Código:
var sessionid = <?php session_start(); echo session_id(); ?>; 
...
proxy: new GeoExt.data.ProtocolProxy({
            protocol: new OpenLayers.Protocol.HTTP({
              url: "data/especie"+sessionid+".json",
				format: new OpenLayers.Format.GeoJSON()
            })
		})
bien antes me generaba un fichero que ahora no me genera que era empezaba por especie metia el numero de sesion y le ponia la extension, como lo que le digo que haga en el fichero_consulta.php
especiej09u8r7... .json ¡ahora no lo hace! genera solo un especie.json
que es el que carga el GET.-
Deberia de hacer lo del nombre+numero de sesion.json, no?
  #8 (permalink)  
Antiguo 03/10/2012, 00:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: pasar fichero con session_id a javascript

1.- session_start(); siempre debe ser lo primero que se hace en un fichero php.
2.- Si creas la variable javascript en index.php (var sessionid=<?php echo session_id(); ?>;) luego debes usar esa variable no hace falta que la cargues otra vez.
3.-
Cita:
y en el JS para cerciorarme hago
haz

alert(sessionid);

para ver si la variable creada en index.php llega hasta ahi....

Si no fuera asi luego haz

<?php session_start();?>//Linea 1
var sessionid = <?php echo session_id(); ?>;

pero si tienes que crear la variable en el js luego tambien tendria que funcionar

<?php session_start();?>//Linea 1
....
url: "data/especie<?php echo session_id(); ?>.json",
....
(ese js tiene que tener extension php... si no el servidor no lo va a interpretar)

Suerte
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #9 (permalink)  
Antiguo 09/10/2012, 08:43
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: pasar fichero con session_id a javascript

Ya lo he solucionado xDDD!! no hay nada como dejar pasar unos dias y volver sobre algo!. Me estaba metiendo como undefined el id de sesion, un problema con el string que solucione metiendo:


Código HTML:
<script>
var sessionid=<?php echo "'".session_id()."'" ?>;
</script> 
lo estaba haciendo sin meterle la comilla del modo
Código HTML:
<script>
var sessionid=<?php echo session_id(); ?>;
</script> 
si recogia esta variable en el fichero js de ese modo pasaba de mi y al hacer el session_start(); me machacaba claro. me quedé con eso y con como leer el fichero en js
Código:
  url: "data/especie"+sessionid+".json",
y funciona.
Qimfv, gracias por sus consejos.

Etiquetas: fichero, javascript, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:58.