Foros del Web » Programando para Internet » PHP »

PHP OO Para los campoeones de PHP: Como redireccionar peticion Ajax "DESDE PHP"

Estas en el tema de Para los campoeones de PHP: Como redireccionar peticion Ajax "DESDE PHP" en el foro de PHP en Foros del Web. Con el tiempo y aprovechando los distintos desarrollos me he ido confeccionando un seudo framework MVC donde compilo las rutinas que mas me sirven. En ...
  #1 (permalink)  
Antiguo 20/02/2014, 15:32
Avatar de ravalos7  
Fecha de Ingreso: diciembre-2005
Mensajes: 102
Antigüedad: 18 años, 3 meses
Puntos: 0
Pregunta Para los campoeones de PHP: Como redireccionar peticion Ajax "DESDE PHP"

Con el tiempo y aprovechando los distintos desarrollos me he ido confeccionando un seudo framework MVC donde compilo las rutinas que mas me sirven.

En medio de un desarrollo requeri hacer un cambio el cual me tiene complicado, pues no se me ocurre como resolverlo. Me explico.

En la raiz de mi sitio hay un directorio con las distintas clases de uso general, otro con clases especificas para el desarrollo, uno de publicacion de los distintos archivos del sitio (vista) y recientemente le acabo de agregar uno llamado procesos, donde van los archivos php que reciben las peticiones ajax e invocan las clases respectivas pasandoles los parametros de cada peticion.

- clases_especificas
- clases_generales
- procesos
- web
|_ ajax.php


El archivo AJAX.PHP debiera recibir cada peticion ajax y redireccionarlo al archivo php correspondiente. Por ejemplo si en el directorio de la vista hay un archivo:

web /registro.php

en el de procesos habra: procesos/registro.process.php

El problema radica en que por seguridad las peticiones ajax van dirigidas al archivo AJAX.PHP el que deberia redireccionarlas al archivo de proceso correspondiente, luego recibir el resultado de éste y devolverle dicho resultado a los archivos javascript que iniciaron la peticion.

He intentado hacer esa redireccion con


header("Location: {$ruta}PAGINA.PROCESS.PHP");

Pero me da error 302 y de ahi no hye podido salir.

ES POSIBLE LO QUE QUIERO HACER?... Y QUIEN PODRA AYUDARME???

GRACIAS A TOD@S!!!!

Un abrazo desde Chile a la distancia,

Ricardo
  #2 (permalink)  
Antiguo 20/02/2014, 15:39
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Para los campoeones de PHP: Como redireccionar peticion Ajax "DESDE PHP"

Código PHP:
Ver original
  1. <?php
  2. /* Redirecciona a una página diferente en el mismo directorio el cual se hizo la petición */
  3. $host  = $_SERVER['HTTP_HOST'];
  4. $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
  5. $extra = 'mypage.php';
  6. header("Location: http://$host$uri/$extra");
  7. ?>
  #3 (permalink)  
Antiguo 20/02/2014, 19:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Para los campoeones de PHP: Como redireccionar peticion Ajax "DESDE PHP"

header() envía un encabezado al navegador y, si redireccionas, será el navegador quien trate de abrir la página de destino.

Entonces, parece que lo único que necesitas es hacer include del script de proceso, nada más.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 21/02/2014, 04:52
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Para los campoeones de PHP: Como redireccionar peticion Ajax "DESDE PHP"

Como dice Triby, header() te va a mandar al archivo en cuestión en el navegador, lo que creo que intentas es utilizar tu archivo AJAX.PHP como un controlador para las peticiones ajax.

Así, lo que podrías hacer es, en cada petición ajax que hagas a ese archivo, enviar un parámetro de control, digamos, y que AJAX.PHP se encargue de procesar este parámetro, elegir el archivo adecuado (ARCHIVO.PROCESS.PHP), recibir la respuesta y reenviarla él mismo. Prueba esta forma, es lo que me ha parecido que querías hacer.

Suerte
  #5 (permalink)  
Antiguo 21/02/2014, 06:17
Avatar de ravalos7  
Fecha de Ingreso: diciembre-2005
Mensajes: 102
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Para los campoeones de PHP: Como redireccionar peticion Ajax "DESDE PHP"

Efectivamente vi que el header location no funciono por la razon que exponen y no quiero hacer un include pues estaria exponiendo el codigo del archivo de procesos respectivo en la vista.

Como dice Alun efectivamente mi archivito es un controlador de peticiones ajax (no me recorde del famoso termino cuando redacte el post por eso no lo llame asi jejeje) cuya mision es conectar la peticion ajax que se hace desde el interior de la vista con el archivo de procesos correspondiente fuera de ella, pasarle todos los parametros y devolverle los valores que las clases y los archivos de procesos retornen.

Ayer antes de irme de mi trabajo (rato despues de escribir este post) halle esta pagina http://donnierock.com/2012/12/08/env...mediante-curl/ donde enseñan a enviar un post o get desde php a traves de CURL permitiendo que no sea el navegador quien haga el envio.

Lo probe y efectivamente me dejo de dar el error 302 pero aun no retorno valores.

Si a alguien se le ocurre alguna idea desde ya mis gracias para todos los que han escrito como a quienes puedan sumarse!!

Desde Chile un abrazo a la distancia,

Ricardo
  #6 (permalink)  
Antiguo 21/02/2014, 10:32
Avatar de ravalos7  
Fecha de Ingreso: diciembre-2005
Mensajes: 102
Antigüedad: 18 años, 3 meses
Puntos: 0
Pregunta Respuesta: Para los campoeones de PHP: Como redireccionar peticion Ajax "DESDE PHP"

Amigos sigo con problemas.

Al final logre hacer la conexión que pretendía a través de la instrucción con con código que pego más abajo.

Código PHP:
         $url BASE_PROCESOS "procesos/{$nameprocess}.process.php";

        if (
self::isPost($postString))
            
$method 'POST ';

        if (
self::isGet($postString))
            
$method 'GET ';

        
$postString http_build_query($postString);
    

        
$params = array('http' => array('method' => $method,       
        
'timeout' => 60.0'content' => http_build_query($postString)));
        
$context stream_context_create($params);      

        
$fp = @fopen($url'rb'true$context);

        if (!
$fp) {
            throw new 
Exception("Problem with $url, $php_errormsg");
        }

        
$response = @stream_get_contents($fp);
        if (
$response === false) {
            throw new 
Exception("Problem reading data from $url, $php_errormsg");
        }

        
print_r($response);
        die ; 
Efectivamente el controlador de peticiones ajax se conecta con el archivo .procesos.php correspondiente pero en vez de ejecutar el codigo contenido en el y devolverme un valor segun el caso, me devuelve todo el contenido del archivo como si de un include se tratara.

Ahora mas que nunca digoi.... ¿¿¿Y QUIEN PODRA AYUUDARME??.


Gracias desde ya a todos!!!

Etiquetas: ajax, clase, framework, mvc, objetos, propio
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 08:34.