Necesito encontrar la resolución de la pantalla de una pantalla de usuarios que visita mi sitio web?

InformationsquelleAutor Roland | 2009-10-01

19 Comentarios

  1. 55

    Que no se puede hacer con PHP puro. Usted debe hacerlo con JavaScript. Hay varios artículos escritos sobre cómo hacer esto.

    Esencialmente, usted puede establecer una cookie, o puede incluso hacer algo de Ajax para enviar la información a un script de PHP. Si el uso de jQuery, se puede hacer algo como esto:

    jquery:

    $(function() {
        $.post('some_script.php', { width: screen.width, height:screen.height }, function(json) {
            if(json.outcome == 'success') {
                //do something with the knowledge possibly?
            } else {
                alert('Unable to let PHP know what the screen resolution is!');
            }
        },'json');
    });

    PHP (some_script.php)

    <?php
    //For instance, you can do something like this:
    if(isset($_POST['width']) && isset($_POST['height'])) {
        $_SESSION['screen_width'] = $_POST['width'];
        $_SESSION['screen_height'] = $_POST['height'];
        echo json_encode(array('outcome'=>'success'));
    } else {
        echo json_encode(array('outcome'=>'error','error'=>"Couldn't save dimension info"));
    }
    ?>

    Todos que es muy básico, pero debería llegar a algún lugar. Normalmente la resolución de la pantalla no es lo que realmente se desea pesar. Usted puede estar más interesado en el tamaño real de la ver del explorador de puerto, ya que es el lugar donde se procesa la página…

    • Kyle ha encontrado una manera de obtener el explorador de puerto de visualización dimensiones?
    • yo no soy tan bueno en jquery y json.. ¿cómo va a ser de código es que, como el bramido de $(function() { $.post('header.php', { width: 800px }, function(json) { if(json.outcome == 'success') { header-800px.php // do something with the knowledge possibly? } else { header.php; } },'json'); });
    • No estoy de acuerdo con usted acerca de la vista de la resolución, sin embargo, la respuesta es ¡genial! Supongo que esta información puede utilizarse para las estadísticas y la prohibición. Me gustaría más prefieren agente de usuario y la ip para que. La resolución de la pantalla también es bueno!
    • ¿Cuál es el significado de «some_script.php»? ¿Que tiene que ser el nombre de la carga de la página el script? Puede ser genérica para todas las páginas?
    • Un trabajo respuesta sería aún mejor. ¿Qué se supone que tengo que hacer algo con el??
    • nm, he hecho una aquí 🙂

  2. 27

    Directamente con PHP no es posible pero…

    Escribo este sencillo código para guardar la resolución de la pantalla en una sesión de PHP para su uso en una galería de imágenes.

    <?php
    session_start();
    if(isset($_SESSION['screen_width']) AND isset($_SESSION['screen_height'])){
        echo 'User resolution: ' . $_SESSION['screen_width'] . 'x' . $_SESSION['screen_height'];
    } else if(isset($_REQUEST['width']) AND isset($_REQUEST['height'])) {
        $_SESSION['screen_width'] = $_REQUEST['width'];
        $_SESSION['screen_height'] = $_REQUEST['height'];
        header('Location: ' . $_SERVER['PHP_SELF']);
    } else {
        echo '<script type="text/javascript">window.location = "' . $_SERVER['PHP_SELF'] . '?width="+screen.width+"&height="+screen.height;</script>';
    }
    ?>
    • Buena solución implementado y funciona muy bien. También me sacó http_user_agent (aunque no siempre lleno/precisa). Gustaría que hubiera una manera de llamar la real navegador visualización del tamaño del puerto. (frente a la pantalla de res).
    • Me gusta esta solución. Simple redirección a una página con el tamaño de la url. Para alguien que esta leyendo esto – usted puede obtener el tamaño de la ventana del navegador – consulte stackoverflow.com/questions/8794338 que dice (con jquery) el uso de la .la altura (a) y .width() funciones.
    • Buena solución, pero por favor, puede usted nos proporciona con el uso de una cookie en lugar de las sesiones ?
    • ¿Cuál es la forma más sencilla de hacerlo de forma invisible para el usuario? (por ejemplo, no hay parámetros de URL, etc)
    • Esto es en realidad bastante ingenioso!
  3. 19

    PHP es un lenguaje del lado del servidor – es ejecutado en el servidor, y el programa resultante se envía el resultado al cliente. Como tal, no hay un «cliente» de la información disponible.

    Que dijo, usted puede tener el cliente dirá cuál es su resolución de pantalla es a través de JavaScript. Escribir un pequeño scriptlet para enviarle la pantalla.la anchura y la pantalla.altura – posiblemente a través de AJAX, o más probablemente, con un primer «salto de página» que se encuentra, y luego redirige a http://example.net/index.php?size=AxB

    Aunque hablando como usuario, me gustaría mucho que usted prefiere para el diseño de un sitio a manejar de manera fluida cualquier resolución de pantalla. Puedo navegar en las diferentes ventanas de tamaño, en su mayoría no está maximizada.

    • +1 por las explicaciones detalladas, y no la maximización de su explorador de windows. Mi explorador de windows son por lo general alrededor de 800 píxeles de ancho; las páginas web que cambiar el tamaño de ellos con base en mi resolución de pantalla son la pesadilla de mi existencia!
    • menos 1 para no viable ejemplo o enlaces pertinentes..
  4. 5

    Este es un proceso muy simple. Sí, usted no puede obtener el ancho y alto en PHP. Es cierto que JQuery puede proporcionar la anchura de la pantalla y la altura. Primero hay que ir a https://github.com/carhartl/jquery-cookie y obtener jquery.cookie.js. Aquí es ejemplo de uso de php para obtener el ancho y alto de pantalla:

        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Test</title>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
            <script src="js/jquery.cookie.js"></script>
            <script type=text/javascript>
                function setScreenHWCookie() {
                    $.cookie('sw',screen.width);
                    $.cookie('sh',screen.height);
                    return true;
                }
                setScreenHWCookie();
            </script>
        </head>
        <body>
            <h1>Using jquery.cookie.js to store screen height and width</h1>
        <?php
             if(isset($_COOKIE['sw'])) { echo "Screen width: ".$_COOKIE['sw']."<br/>";}
             if(isset($_COOKIE['sh'])) { echo "Screen height: ".$_COOKIE['sh']."<br/>";}
        ?>
        </body>
        </html>

    Tengo una prueba de que se puede ejecutar: http://rw-wrd.net/test.php

    • buena idea el uso de cookies
    • Esto no hace nada para mí en Firefox.
  5. 4

    Uso de JavaScript (screen.width y screen.height si mal no recuerdo, pero puedo estar equivocado, no he hecho JS en un tiempo). PHP no puede hacerlo.

  6. 4

    He encontrado con CSS dentro de mi html dentro de mi php hizo el truco para mí.

    <?php             
        echo '<h2 media="screen and (max-width: 480px)">'; 
        echo 'My headline';
        echo '</h2>'; 
    
        echo '<h1 media="screen and (min-width: 481px)">'; 
        echo 'My headline';
        echo '</h1>'; 
    
        ?>

    Esto dará como resultado una menor tamaño título si la pantalla es 480px o menos.
    Así que no hay necesidad de pasar cualquier vars usando JS o similar.

    • Esto no responde a la pregunta
  7. 2

    Usted puede tratar de RESS (RESponsive design + componentes del lado de Servidor), ver este tutorial:

    http://www.lukew.com/ff/entry.asp?1392

    • No debería ser RDSSC ? Lol
    • He actualizado: RESponsive design + componentes del lado Servidor 🙂
    • El enlace está anticuado. Por favor, actualice.
    • actualizado, gracias por darse cuenta.
  8. 1

    Yo creo que no se puede detectar el tamaño de la pantalla puramente con PHP pero se puede detectar el agente de usuario..

    <?php
        if ( stristr($ua, "Mobile" )) {
            $DEVICE_TYPE="MOBILE";
        }
    
        if (isset($DEVICE_TYPE) and $DEVICE_TYPE=="MOBILE") {
            echo '<link  href="/css/mobile.css" />'
        }
    ?>

    Aquí hay un enlace a una descripción más detallada de secuencia de comandos: PHP Móvil Detectar

  9. 1

    Completamente Ejemplo De Trabajo

    No podía encontrar un trabajo real PHP ejemplo a «invisible» (sin parámetros de URL) retorno del cliente el tamaño de la pantalla, y otras propiedades, del lado del servidor PHP, así que pongo este ejemplo juntos.

    JS rellena y envía un formulario oculto (con guión de PHP a partir de una matriz de JS propiedades), POSTing a sí mismo (los datos ahora disponibles en PHP) y devuelve los datos en una tabla.

    (Probado en «varios» de los navegadores.)

    <!DOCTYPE html>
    <html>
    <head>
        <title>*Client Info*</title>
        <style>table,tr{border:2px solid gold;border-collapse:collapse;}td{padding:5px;}</style>
    </head>
    
    <body>
    <?php
      $clientProps=array('screen.width','screen.height','window.innerWidth','window.innerHeight', 
        'window.outerWidth','window.outerHeight','screen.colorDepth','screen.pixelDepth');
    
      if(! isset($_POST['screenheight'])){
    
        echo "Loading...<form method='POST' id='data' style='display:none'>";
        foreach($clientProps as $p) {  //create hidden form
          echo "<input type='text' id='".str_replace('.','',$p)."' name='".str_replace('.','',$p)."'>";
        }
        echo "<input type='submit'></form>";
    
        echo "<script>";
        foreach($clientProps as $p) {  //populate hidden form with screen/window info
          echo "document.getElementById('" . str_replace('.','',$p) . "').value = $p;";
        }
        echo "document.forms.namedItem('data').submit();"; //submit form
        echo "</script>";
    
      }else{
    
        echo "<table>";
        foreach($clientProps as $p) {   //create output table
          echo "<tr><td>".ucwords(str_replace('.',' ',$p)).":</td><td>".$_POST[str_replace('.','',$p)]."</td></tr>";
        }
        echo "</table>";
      }
    ?>
    <script>
        window.history.replaceState(null,null); //avoid form warning if user clicks refresh
    </script>
    </body>
    </html>

    Los datos devueltos se extraer‘d en las variables. Por ejemplo:

    • window.innerWidth se devuelve en $windowinnerWidth
    • Thx por el completado de código PHP. Eso es sólo copiar’npaste y funciona muy bien.
  10. 0

    La única manera es utilizar javascript, a continuación, obtener el código de javascript para enviar a tu php(si usted realmente necesita no res lado del servidor). Sin embargo, esto completamente caiga en su cara, si se desactiva javascript.

  11. 0

    JS:

    $.ajax({
        url: "ajax.php",
        type: "POST",
        data: "width=" + $("body").width(),
        success: function(msg) {
    
            return true;
        }
    });

    ajax.php

    if(!empty($_POST['width']))
        $width = (int)$_POST['width'];
  12. 0

    Esto se puede hacer fácilmente mediante la utilización de cookies. Este método permite a la página de verificación de la cookie almacena los valores en contra de la altura de la pantalla y el ancho (o de la vista del navegador de puerto de valores de altura y anchura), y si son diferentes se restablece el cookie y volver a cargar la página. El código debe permitir a las preferencias del usuario. Si los compuestos se desactivan las cookies, el uso de una cookie de sesión. Si eso no funciona, usted tiene que ir con una configuración predeterminada.

    1. Javascript: Comprobar si la altura de la & ancho de la cookie
    2. Javascript: Si, compruebe si la pantalla.la altura de la & pantalla.ancho (o lo que quieras) coincide con el valor actual de la cookie
    3. Javascript: Si la cookie no se establece o no coincide con el valor actual, entonces:
      una. Javascript: crear persistente o cookie de sesión con nombre (por ejemplo,) ‘acs’ al valor de la pantalla actual.la altura de la & pantalla.la anchura.

      b. Javascript: redirigir a la AUTO usando la ventana.ubicación.reload(). Cuando se vuelve a cargar, se saltará el paso 3.
    4. PHP: $_COOKIE[‘acs’] contiene los valores.
    5. Continuar con PHP

    E. g., Estoy utilizando algunas funciones de cookies de la web. Asegúrese de setCookie devuelve los valores correctos.
    Pongo este código inmediatamente después de la etiqueta head. Obviamente, la función debe estar en un archivo de código fuente.

    <head>
    <script src="/include/cookielib.js"></script>
    <script type=text/javascript>
    function setScreenHWCookie() {
        //Function to set persistant (default) or session cookie with screen ht & width
        //Returns true if cookie matches screen ht & width or if valid cookie created
        //Returns false if cannot create a cookies.
        var ok  = getCookie( "shw");
        var shw_value = screen.height+"px:"+screen.width+"px";
        if ( ! ok || ok != shw_value ) {
            var expires = 7 //days
            var ok = setCookie( "shw", shw_value, expires)
            if ( ok == "" ) {
                //not possible to set persistent cookie
                expires = 0
                ok = setCookie( "shw", shw_value, expires)
                if ( ok == "" ) return false //not possible to set session cookie
            }
            window.location.reload();
        }
        return true;
    }
    setScreenHWCookie();
    </script>
    ....
    <?php
    if( isset($_COOKIE["shw"])) {
        $hw_values = $_COOKIE["shw"];
    }
  13. 0

    PHP funciona sólo en el lado del servidor, no en la máquina del usuario. El uso de JavaScript o jQuery para obtener esta información y la envía a través de AJAX o URL (?x=1024&y=640).

    • Que sería ?x=1024&y=640
    • creo que usted necesita para utilizar &y en lugar de ?y
  14. 0

    Puede establecer la anchura de la ventana en las cookies a través de JS en el front-end y se puede conseguir en PHP:

    <script type="text/javascript">
       document.cookie = 'window_width='+window.innerWidth+'; expires=Fri, 3 Aug 2901 20:47:11 UTC; path=/';
    </script>
    
    <?PHP
        $_COOKIE['window_width'];
    ?>
  15. 0

    La respuesta rápida es no, entonces usted probablemente se estará preguntando ¿por qué no puedo hacerlo con php. OK aquí está una respuesta más larga. PHP es un server-side scripting lengua y, por tanto, no tiene nada que ver con el tipo de cliente específico. A continuación, usted podría preguntar: «¿por qué entonces puedo conseguir el agente navegador desde php?», eso es debido a que la información se envía con la inicial de los encabezados HTTP, previa petición al servidor. Así que si usted desea que la información del cliente que no se envía con el encabezado de HTTP se debe a un cliente de un lenguaje de scripting como javascript.

  16. -1

    En PHP no hay una manera estándar para obtener esta información. Sin embargo, es posible, si usted está utilizando una 3ra parte de la solución. 51Degrees dispositivo detector de PHP tiene las propiedades que se necesitan:

    Le da el Ancho y la Altura del usuario de la pantalla en píxeles. Con el fin de utilizar estas propiedades, usted necesita descargar el detector de sourceforge. A continuación, deberá incluir los siguientes 2 líneas en el archivo/archivos donde es necesario para detectar la altura de la pantalla y ancho:

    <?php
    require_once 'path/to/core/51Degrees.php';
    require_once 'path/to/core/51Degrees_usage.php';
    ?>

    Donde path/to/core es el camino a ‘Núcleo’ del directorio que se puede descargar desde sourceforge. Por último, el uso de las propiedades:

    <?php
    echo $_51d['ScreenPixelsHeight']; //Output screen height.
    echo $_51d['ScreenPixelsWidth']; //Output screen width.
    ?>

    Tenga en cuenta estas variables pueden contener ‘Desconocido’ valor algunas veces, cuando el dispositivo no pudo ser identificado.

  17. -1

    solución: hacer escalable diseño web … ( nuestra debo decir adecuado diseño de la web) formato debe hacerse del lado del cliente y me hizo desear la información sería transmitida al servidor, pero la información es todavía útil ( cuántos objetos por filas tipo de trato ) pero aún así el diseño de la web debe ser fluido, por lo tanto cada uno de los elementos de fila no se debe poner en las mesas a menos de una tabla real ( y los datos se escala para que las células individuales) si utiliza un div que se pueden apilar cada uno de los elementos uno al lado del otro y su ventana debe «romper» la fila en el lugar adecuado. ( sólo tiene necesidad de css)

  18. -1

    Manera más fácil

    <?php 
    //-- you can modified it like you want
    
    echo $width = "<script>document.write(screen.width);</script>";
    echo $height = "<script>document.write(screen.height);</script>";
    
    ?>
  19. -3
    <script type="text/javascript">
    
    if(screen.width <= 699){
        <?php $screen = 'mobile';?>
    }else{
        <?php $screen = 'default';?>
    }
    
    </script>
    
    <?php echo $screen; ?> 
    • No se puede establecer una variable de php en JavaScript.
    • Para explicar esta genial: en Primer lugar php se ejecuta en el lado del servidor, es decir. antes de alcanzar el navegador, mientras que javascript se ejecuta después de alcanzar el navegador.

Dejar respuesta

Please enter your comment!
Please enter your name here