Saludos. Tengo la siguiente situación:
principal.php contiene frame1.php, frame2.php y frame3.php
frame1.php muestra una colección de fotos de un evento en particular, a seleccionar previamente.
frame2.php muestra in formación del evento, y el número de la foto en detalle (frame3.php), así mismo, muestra dos enlaces que abren una ventana emergente cada uno (mientras los diseñadores hacen los botones.gif o .jpg), uno para iniciar la sesión como usuario registrado (sesion.php) y otro para registrarse (registro.php). Una vez iniciada la sesión, se recarga principal.php, así como también, estos dos enlaces cambian por otros enlaces de manipulación del album personal (compuesto por fotos del sitio) tales como agregar, eliminar, finalizar sessión, entre otros.
frame3.php muestra una foto en detalle del evento que se está visualizando en ese momento, acompañada por flechas de "paginación" derecha - izquierda.
Me han pedido que agregue un enlace para agregar una foto, aún sin estar logeado. Lo que pensé fue, enlace de 'agregar foto' que despliegue una ventana emergente (temporal.php), muestre información del sitio, y dos los mismos dos enlaces de frame2.php, sesion.php y registro.php
Lo implementé de la siguiente forma,
sí agregar_foto viene de temporal.php debe abrir sesion.php, permitir el inicio de sesión, el refresco de principal.php y la inserción en la BD de la foto respectiva,
si agregar_foto viene de frame2.php, se mantiene igual.
La diferencia viene por la relación de padre-hijo-nieto en las ventanas emergentes, y el método para recargar, los valores de las páginas. Lo hice con js, pero me da problemas de compatibilidad entre navegadores y SOs. Muestro lo que hice,
en frame3.php, y en caso de no estar logeado,
Código HTML:
<A href="temporal.php?guardar=t" target="popup" onclick='window.open("", "popup","")';>
en temporal.php,
Código PHP:
<?php
session_start();
$_SESSION['cadena']=$_SERVER['PHP_SELF'];
$_SESSION['guardar']=$_REQUEST[guardar];
?>
Asumiendo que el usuario existe, y elige el enlace para iniciar sesión, en sesion.php,
Código PHP:
$cadena=$_SESSION['cadena'];
$cadena2="sesion2";
$pos=strpos($cadena, $cadena2);
if ( !empty($pos) ) {
echo "<script language=\"JavaScript\" type=\"text/javascript\">";
echo "window.opener.opener.parent.top.location.reload();";
echo "window.opener.close();";
echo "window.close();";
if ($_SESSION['guardar']===t)
echo "window.open(\"privado.php\", \"privado\", \"\")";
echo "</script>";
}
Esto está diseñado en Debian Linux, con Quanta Plus, y probado en Firefox. Funciona perfectamente, pero al revisar en otros navegadores, y en otros SOs, funciona mal o no funciona. Entendiendo que el problema es por la mala estandarización del javascript, quisiera buscar otro diseño que incluya la menor cantidad de js posible, y fortalecer el PHP, pero no me viene nada a la mente.
Cualquier idea será bienvenida.