Pregunta

Tengo que administrar un pequeño sitio web para mi grupo de ex alumnos alojado por mi ISV.La URL es algo así como www.myIsv.com/myWebSite/ que es bastante fea y muy olvidable.El administrador principal del servidor web ha registrado un nombre de dominio www.mysmallwebsite.com y ha puesto un index.html con este contenido:

<html>
<head>
<title>www.mysmallwebsite.com</title>
</head>

<frameset>
   <frame src="http://www.myIsv.com/myWebSite/" name="redir">
      <noframes>
        <p>Original location:
          <a href="www.myIsv.com/myWebSite/">http://www.myIsv.com/myWebSite/</a>
        </p>
      </noframes>
 </frameset>  
</html>

Funciona bien, pero algunas características como las variables de sesión PHP ya no funcionan.¿Alguien tiene alguna sugerencia para corregir eso?

Editar:Esto no funciona tanto en IE como en Firefox (sin complementos)

Gracias

¿Fue útil?

Solución

Las sesiones están vinculadas al servidor. Y el dominio.El uso de conjuntos de marcos en todo el dominio provocará todo tipo de roturas porque no es así como fue diseñado para hacerlo.

Intente utilizar la reescritura de mod de Apache para crear una "redirección de paso", el "apoderado"bandera ([P]) en la regla es la bandera mágica que necesitas

Documentación en http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

Otros consejos

¿Qué quieres decir?¿Estás diciendo que cuando pasas de www.mysmallwebsite.com a www.myIsv.com/myWebSite/ entonces se pierde la sesión PHP?

PHP reconoce la sesión con un ID (hash alfanumérico generado en el servidor).La ID se pasa de una solicitud a otra mediante una cookie llamada PHPSESSID o algo así (puede ver las cookies que establece un sitio web con la ayuda de su navegador...en Firefox tienes Firebug + FireCookie y la maravillosa Web Developer Toolbar...con el que podrás visualizar la lista de cookies sin sudar).

Entonces ...PHP pasa el ID de sesión a través de la cookie PHPSESSID.Pero puede pasar el ID de la sesión como parámetros de solicitud GET simples.

Entonces cuando colocas el enlace html al feo nombre de dominio, asumiendo que es el mismo servidor PHP (con las mismas sesiones inicializadas), puedes ponerlo así…

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

Hace tiempo que no trabajo con PHP, pero creo que esto funcionará.

¿Funcionan las variables de sesión si presionas? http://www.myIsv.com/myWebSite/ ¿directamente?Me parece que la configuración del servidor determinará si las sesiones funcionarán o no.Sin embargo, si estás iniciando una sesión en www.mysmallwebsite.com de alguna manera (no parece que estés usando PHP, pero tal vez lo estés), no podrás transferir datos de la sesión sin escribir algo de backend. lógica que mueve la sesión de un servidor a otro.

Coloque un session_start() al comienzo de su script y vea si puede acceder a las variables nuevamente.

No funciona porque en el cliente las sesiones son por dominio.Todas las cookies se guardan para mysmallwebsite.com, por lo que myIsv.com no puede acceder a ellas.

@Pix0r www.myisv.com/mywebsite/ -> Session Variable Work www.mysmallwebsite.com -> La variable de sesión no funciona

@Alexandru desafortunadamente esto no está en el mismo servidor web

¿Qué navegador/ad-on tienes?Puede ser que su navegador o algún otro software (puede ser incluso el servidor web) esté bloqueando las sesiones. http://www.myIsv.com/myWebSite/ trabajando desde dentro del marco, ya que está ubicado en un sitio diferente, pensando que es un ataque XSS.

Si la sesión funciona en http://www.myIsv.com/myWebSite/ Sin el marco, siempre puedes enviarnos una redirección desde http://www.mysmallwebsite.com a la URL fea, en lugar de utilizar el marco.

EDITAR:Acabo de probar su código de marco en un sitio mío que usa sesiones, Firefox funcionó bien, iniciando sesión y permaneciendo conectado, pero IE7 me desconectó directamente nuevamente.

Entonces cuando colocas el enlace html al feo nombre de dominio, asumiendo que es el mismo servidor PHP (con las mismas sesiones inicializadas), puedes ponerlo así…

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

Desde el punto de vista de la seguridad, realmente espero que eso no funcione.

También puede configurar una cookie en el lado del usuario y luego verificar la presencia de esa cookie directamente después de redirigir, lo que si le preocupan las URL amigables significaría que no tiene que pasar un PHPSESSID en la cadena de consulta. .

Cuando la gente llega a www.mysmallwebsite.com, simplemente redirigiría a http://www.myIsv.com/myWebSite/

<?php header('Location: http://www.myIsv.com/myWebSite/'); ?>

Esto es todo lo que tendría en www.mysmqllwebsite.com/index.php
De esta manera, no tiene que preocuparse por la compatibilidad del navegador ni por el funcionamiento de las sesiones, simplemente realice la redirección y estará bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top