Foros del Web » Programando para Internet » PHP »

Saber la resolución del Cliente por PHP

Estas en el tema de Saber la resolución del Cliente por PHP en el foro de PHP en Foros del Web. A ver, quiero saber la resolución del cliente para que la página se adapte a él (el alto de una capa concretamente). Por le momento ...
  #1 (permalink)  
Antiguo 12/04/2007, 08:10
 
Fecha de Ingreso: abril-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Saber la resolución del Cliente por PHP

A ver, quiero saber la resolución del cliente para que la página se adapte a él (el alto de una capa concretamente). Por le momento tengo el siguiente código mezcla de javascript y php:

En la cabecera va esto:
Código:
<?php
$altophp=$_POST['altophp'];
?>
<script language=Javascript>
var alto=screen.height;
</script>
En el body (dentro de php) tengo esto:
Código:
if ($altophp=="")
{
echo "<form action='./archivo.php' method='POST' name='resol'>";
echo "<input type=hidden name=altophp>";
echo "</form>";
echo "<script language=Javascript>";
echo "document.resol.altophp.value=alto;";
echo "document.resol.submit() ";
echo "</script>";
}
?>
El problema es que en el momento que me meto en cualquier otra zona del menú, la variable se borra y se vueleve a llamar de nuevo otra vez el archivo a si mismo, volviendo al principio de la página. Ya he probado en convertir la variable $altophp en una variable de sesión, pero sigue borrandose, y ya no se que hacer...
He pensado en hacer que el script que pide la resolución cree una cookie, con el único contenido de el nº del alto de la resolución (que es lo que interesa) y que el php se limite a mirar si esa cookie está y la use si asi es. Pero no se como sería al script que crease la cookie y no tengo muy claro si se podría condicionar el php con un if dependiendo de si esa cookie existe o no.
A ver que me decis.
Sayonara.
  #2 (permalink)  
Antiguo 12/04/2007, 08:19
Avatar de reyesoft  
Fecha de Ingreso: abril-2006
Ubicación: San Rafael, Mendoza
Mensajes: 311
Antigüedad: 18 años
Puntos: 15
Re: Saber la resolución del Cliente por PHP

Cuando necesites saber la resolución has lo siguiente entre el <body> y el </body>:

Código PHP:
include 'resolucion.inc.php'

resolucion.js

Código:
function SetCookie(obligar) {
    document.cookie = 'PHPRes='+screen.width + 'x' + screen.height;
    if (obligar == 1 && document.cookie != '')
        document.location.href=document.location.href;
}
function ChequearResolucion(ancho, alto) {
    if(ancho != screen.width && alto != screen.height) {
        SetCookie();
    }
}

resolucion.inc.php
Código PHP:
<script src="resolucion.js" type="text/javascript"></script>
<script type="text/JavaScript">
<!--
<?
    $res 
= array(0,0);
    if(isset(
$_COOKIE['PHPRes']) || !empty($_COOKIE['PHPRes']))
    {
        
$res explode("x",$_COOKIE['PHPRes']);
        
$resolucion = array(intval($res[0]), intval($res[1]));
        unset(
$res);
        echo 
'ChequearResolucion('.$resolucion[0].', '.$resolucion[1].');';
    } else {
        echo 
'SetCookie('.((isset($resolucion_obligar))?1:0).');
        '
;
    }
?>
//-->
</script>
Anda de lujo, yo lo uso en mi página de wallpapers.
__________________
Pablo Reyes

Compra/venta saldos PayPal, Skrill, Neteller, Bitcoins, etc.
  #3 (permalink)  
Antiguo 12/04/2007, 09:14
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Saber la resolución del Cliente por PHP

Puedes hacer algo como lo siguiente:

entre el head:

funcion alto(){
document.capa.style.height=Screen.height*0.5;
}

en el body
<body onload="javascript:alto();">
<div id="capa" .....></div>
</body>

Obviamente el alto le colocas lo que quieras.

Espero te sirva.
  #4 (permalink)  
Antiguo 12/04/2007, 10:38
 
Fecha de Ingreso: abril-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
De acuerdo Re: Saber la resolución del Cliente por PHP

OK, este último me ha dado la idea para solucionarlo. Al final resultaba que me estaba complicando la vida a lo tonto, y he optado por usar un script a palo seco, os lo paso porque puede venir muy bien:

En la cabecera:
Código:
<script>
var alt_res = screen.height
</script>
En el body:
Código:
<script>
document.write("<div style='overflow:auto; height:");
document.write(alt_res - 200);
document.write(";'>");
</script>
Como se ve, lo que pretendía era que la capa tuviese un alto de 200 px menos que la resolución de pantalla, asi siempre se adapta. Y como esta parte pertenece a una zona de puro html, no importa que se vea el código fuente.
Lógicamente, en el segundo document.write, se pondrian las propiedades de alto que se quiera que tenga la capa. Y en el primer script si en lugar de screen.height, pones screen.width también funciona para el ancho. Y además también puede servir para tablas, celdas...

Última edición por Umbriel; 12/04/2007 a las 10:46
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 13:48.