php - encabezado - ¿Cómo puedo recorrer las páginas?
encabezado php (12)
Este es un desafío con el que me han encargado recientemente. Todavía no he descubierto la mejor manera de hacerlo, tal vez alguien más tiene una idea.
Usando PHP y / o HTML, cree una página que pase por cualquier cantidad de páginas en un intervalo determinado.
Por ejemplo, cargaríamos esta página y nos llevaría a google por 20 segundos, luego a yahoo por 10 segundos, luego a stackoverflow por 180 segundos y así sucesivamente.
Logré crear esto. No es bonito, pero funciona.
<?php
# Path the config file, full or relative.
$configfile="config.conf";
$tempfile="tmp.html";
# Read the file into an array
$farray=file($configfile);
# Count array elements
$count=count($farray);
if(!isset($_GET[''s''])){
$s=0;
}else{
$s=$_GET[''s''];
if($s==($count-1)){ # -1 because of the offset in starting our loop at 0 instead of 1
$s=0;
}else{
$s=$_GET[''s'']+1; # Increment the counter
}
}
# Get the line from the array
$entry=$farray[$s];
# Break the line on the comma into 2 entries
$arr=explode(",",$entry);
# Now each line is in 2 pieces - URL and TimeDelay
$url=strtolower($arr[0]);
# Check our url to see if it has an HTTP prepended, if it doesn''t, give it one.
$check=strstr($url,"http://");
if($check==FALSE){
$url="http://".$url;
}
# Trim unwanted crap from the time
$time=rtrim($arr[1]);
# Get a handle to the temp file
$tmphandle=fopen($tempfile,"w");
# What does our meta refresh look like?
$meta="<meta http-equiv=/"refresh/" content=/"".$time.";url=index.php?s=".$s."/">/n";
# The iframe to display
$content="<iframe src =/"".$url."/" height=/"100%/" width=/"100%/"></iframe>";
# roll up the meta and content to be written
$str=$meta.$content;
# Write it
fwrite($tmphandle,$str);
# Close the handle
fclose($tmphandle);
# Load the page
die(header("Location:tmp.html"));
?>
Los archivos de configuración se parecen a (URL, hora de permanecer en esa página): google.com, 5 http: //yahoo.com,10
Cree una página HTML de envoltura con un IFrame, con un tamaño de 100% x 100%
. Luego agregue un javascript que cambie el src
del IFrame entre los intervalos establecidos.
Creo que debería funcionar como gabbly.com , que apesta en otros sitios web y los muestra con su propio contenido.
Una vez que leíste el otro sitio y estuviste listo para mostrarlo, no podías hacerlo "en PHP"; Tendría que enviar una metaetiqueta de redireccionamiento de HTML:
<meta HTTP-EQUIV="REFRESH" content="15; url=http://www.thepagecycler.com/nextpage.html">
O puede usar Javascript en lugar de la metaetiqueta.
Cuando te llevan a otro sitio (por ejemplo, Google), el control pasa a ese sitio, por lo que para que tu script siga en ejecución, necesitarás cargar el nuevo sitio en un marco, y mantener tu script (lo que me imagino podría implementarse más fácilmente usando Javascript) en otro marco (que podría hacerse muy pequeño para que no pueda verlo).
Depende de tus requisitos exactos. Si permite JavaScript y permite marcos, puede pegar un marco oculto dentro de un conjunto de marcos en su página en la que cargue JavaScript. Este JavaScript controlará el contenido del cuadro principal utilizando el objeto window.location y la función setTimeout.
La desventaja sería que la barra de direcciones del usuario no se actualizaría con la nueva URL. No estoy seguro de cómo esto podría lograrse de lo contrario. Si puede aclarar las limitaciones, puedo brindarle más ayuda.
Editar - La sugerencia de Shad es una posibilidad, aunque a menos que el usuario active la acción, el navegador puede bloquear la ventana emergente. De nuevo, tendrías que aclarar si una ventana emergente está permitida.
Esto no es factible en un script PHP, a menos que desee editar el redireccionamiento ... PHP es una tecnología de back-end; vas a necesitar hacer esto en Javascript o similares.
Lo mejor que vas a hacer, hasta donde yo sé, es crear un archivo de texto en tu servidor web y cargar una dirección HTTP diferente en función del tiempo de ese archivo de texto, luego redirigir el navegador al sitio que se encuentra en ese Archivo de texto.
La primera solución que salta a la mente es hacer esto en un conjunto de marcos. Oculta uno de los marcos, y el otro muestra las páginas en cuestión. Conduzca las transiciones de página con Javascript desde el marco oculto.
function RefreshFrame()
{
parent.VisibleFrame.location.href = urlArray[i];
i++;
if(i < urlArray.length) SetTimeout("RefreshFrame()", 20000);
}
var i = 0;
var urlArray = [''http://google.com'',''http://yahoo.com'', ''http://www.search.com''];
RefreshFrame();
En este ejemplo, el Javascript estaría en el marco oculto, y nombraría su marco visible "VisibleFrame".
Descargo de responsabilidad: acabo de escribir este código en la ventana de comentarios y no lo he probado
La teoría detrás de la solicitud es básicamente la capacidad de recorrer los paneles de la página web para varios sistemas desde una PC "kiosco". Superviso un centro de datos y tenemos varios sistemas de monitoreo que me permiten ver paneles de control de temperatura, tiempo de actividad del sistema, etc. La idea es cargar una página que pasaría del panel al panel de control restante por un período de tiempo especificado por mí , 1 minuto en esta placa, 30 segundos en la próxima placa, 2 minutos en la siguiente y así sucesivamente ... Javascript es absolutamente permisible (aunque tengo poca experiencia con él). Mis medios de elección son PHP / HTML y no veo una manera de hacer que esto suceda limpiamente solo con ellos.
Puedes hacer esto con JavaScript bastante fácilmente. Ayudaría a conocer el entorno de despliegue. ¿Es un kiosco o algo así?
Para la solución de JavaScript, publique una página que contenga un JavaScript que abrirá una nueva ventana del navegador. La página del controlador hará que la nueva ventana del navegador recorra una serie de páginas. Esa es la forma más sencilla de hacer esto que puedo pensar.
Editar: Estoy de acuerdo con el comentario de Simon. Esta solución funcionaría mejor en un kiosco o en un entorno de visualización grande y público donde las páginas solo se muestran sin ninguna interacción del usuario.
Utilice un iframe independiente para el contenido, luego use Javascript para delay()
un período de tiempo y establezca la propiedad de location
del iframe.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>Dashboard Example</title>
<style type="text/css">
body, html { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; }
iframe { border: none; }
</style>
<script type="text/javascript">
var Dash = {
nextIndex: 0,
dashboards: [
{url: "http://www.google.com", time: 5},
{url: "http://www.yahoo.com", time: 10},
{url: "http://www..com", time: 15}
],
display: function()
{
var dashboard = Dash.dashboards[Dash.nextIndex];
frames["displayArea"].location.href = dashboard.url;
Dash.nextIndex = (Dash.nextIndex + 1) % Dash.dashboards.length;
setTimeout(Dash.display, dashboard.time * 1000);
}
};
window.onload = Dash.display;
</script>
</head>
<body>
<iframe name="displayArea" width="100%" height="100%"></iframe>
</body>
</html>
Hay varias formas en que puede hacer esto, iv escribió varios scripts y herramientas con todo, desde JS hasta Ruby.
Al final, fue mucho más fácil usar http://dashboardrotator.com . Manejó reinicios de navegador, asignación de memoria y cierre de ventana accidental para mí con una GUI simple y agradable.