Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Dar condicion a funcion php/javascript

Estas en el tema de Dar condicion a funcion php/javascript en el foro de PHP en Foros del Web. Tengo en mi código una funcion javascript que ejecuta una sentencia escrita en php, lo que hace esta función es cerrar una de las tantas ...
  #1 (permalink)  
Antiguo 17/02/2015, 19:34
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Dar condicion a funcion php/javascript

Tengo en mi código una funcion javascript que ejecuta una sentencia escrita en php, lo que hace esta función es cerrar una de las tantas session que tengo en la pagina, el problema es que se ejecuta cada vez que la pagina se actualiza en vez de hacerlo cuando es llamada. Entiendo que esto sucede porque esta escrita en php pero necesito que solo pase cuando la función es llamada ¿Hay alguna forma de hacer esto?

Código Javascript:
Ver original
  1. function cerrarSession(){
  2.         <?php
  3.         unset($_SESSION['ccliente']);  
  4.         ?>
  5.         }

PD: Puse este tema acá y no en el foro de js porque me párese que el problema esta en el php y no en el js mismo.
  #2 (permalink)  
Antiguo 18/02/2015, 02:37
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Dar condicion a funcion php/javascript

El problema es el concepto que tienes de php, html, js y la relacion cliente-servidor.

Voy a intentar explicarte pq te pasa eso...

PHP se ejecuta en el servidor
HTML/JS se "ejecuta" en el cliente

Cuando haces una peticion al servidor (ej: index.php) sucede lo siguiente:
· El servidor recibe la petición, con sus headers
· El servidor empieza a procesar la petición (el código php) hasta que haya una salida
· Cuando haya una salida, envía los headers de la salida al cliente
· El servidor termina de procesar la petición, y envia toda la salida al cliente
· El cliente recibe la página, y la muestra.


Funciones de php no funcionan en js. El servidor primero prepara "toda la página" (no es cierto del todo, pero es para que lo entiendas) y después la envia. Así pues, el unset te lo ejecuta mientrar prepara la página (ya que es una instrucción en php).

Si quieres cerrar sesión, deberías hacerlo o bien por un enlace (que te lleve a un php que cierre la sesión) o bien por ajax... recomiendo lo primero ;)

No se si te queda claro, pero de php a js sólo puedes pasar el valor de las variables (en el momento de procesar la página, claro). JS jamás ejecutará código php por si solo ;)

Saludos
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 18/02/2015, 05:11
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Dar condicion a funcion php/javascript

Cita:
Iniciado por Eleazan Ver Mensaje
El problema es el concepto que tienes de php, html, js y la relacion cliente-servidor.

Voy a intentar explicarte pq te pasa eso...

PHP se ejecuta en el servidor
HTML/JS se "ejecuta" en el cliente

Cuando haces una peticion al servidor (ej: index.php) sucede lo siguiente:
· El servidor recibe la petición, con sus headers
· El servidor empieza a procesar la petición (el código php) hasta que haya una salida
· Cuando haya una salida, envía los headers de la salida al cliente
· El servidor termina de procesar la petición, y envia toda la salida al cliente
· El cliente recibe la página, y la muestra.


Funciones de php no funcionan en js. El servidor primero prepara "toda la página" (no es cierto del todo, pero es para que lo entiendas) y después la envia. Así pues, el unset te lo ejecuta mientrar prepara la página (ya que es una instrucción en php).

Si quieres cerrar sesión, deberías hacerlo o bien por un enlace (que te lleve a un php que cierre la sesión) o bien por ajax... recomiendo lo primero ;)

No se si te queda claro, pero de php a js sólo puedes pasar el valor de las variables (en el momento de procesar la página, claro). JS jamás ejecutará código php por si solo ;)

Saludos
Tengo claro las relaciones y diferencias entre php y js pero quería saber si es que era posible realizar una función mezclando a ambos. De hecho tengo una función "al revés" que si funciona.
Código PHP:
Ver original
  1. if (isset($_SESSION['ccliente'])){
  2.     echo "<script type='text/javascript'>";
  3.     echo "  mostrarEditFormulario(".$_SESSION['ccliente'].");";
  4.     echo "</script>";
  5. }
El caso es que modifique la función para que me envié a otro enlace que realiza el cierre de session así que ahora funciona pero me recarga toda la pagina para hacer esto ¿se puede hacer de forma que no recargue pagina cada vez que hago esto?
Función:
Código Javascript:
Ver original
  1. function cerrarSession(){
  2.             window.location="cerrarSessionCliente1.php";
  3.         }
Cerrar Session:
Código PHP:
Ver original
  1. if (isset($_SESSION['ccliente'])){
  2.     unset($_SESSION['ccliente']);
  3. }
  4. header("Location: cliente.php");
  #4 (permalink)  
Antiguo 18/02/2015, 08:35
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Dar condicion a funcion php/javascript

Cita:
Iniciado por Begotten Ver Mensaje
Tengo claro las relaciones y diferencias entre php y js pero quería saber si es que era posible realizar una función mezclando a ambos. De hecho tengo una función "al revés" que si funciona.
Código PHP:
Ver original
  1. if (isset($_SESSION['ccliente'])){
  2.     echo "<script type='text/javascript'>";
  3.     echo "  mostrarEditFormulario(".$_SESSION['ccliente'].");";
  4.     echo "</script>";
  5. }
Claras lo dudo, pero bueno...

Cita:
Iniciado por Begotten Ver Mensaje
El caso es que modifique la función para que me envié a otro enlace que realiza el cierre de session así que ahora funciona pero me recarga toda la pagina para hacer esto ¿se puede hacer de forma que no recargue pagina cada vez que hago esto?
Vía ajax.

Un ejemplo con jQuery:

Código Javascript:
Ver original
  1. function cerrarSession() {
  2.     $.get("cerrarSessionCliente1.php", function(data) { alert("Sesión cerrada"); });
  3. }
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 18/02/2015, 13:17
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Dar condicion a funcion php/javascript

Gracias, hasta ahora funciona perfectamente.

Etiquetas: funcion
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 07:05.