Obtener la resolución de la pantalla usando PHP

Resuelto Elitmiar asked hace 54 años • 23 respuestas

¿Necesito encontrar la resolución de pantalla de la pantalla de un usuario que visita mi sitio web?

Elitmiar avatar Jan 01 '70 08:01 Elitmiar
Aceptado

No puedes hacerlo con PHP puro. Debes hacerlo con JavaScript. Hay varios artículos escritos sobre cómo hacer esto.

Básicamente, puedes configurar una cookie o incluso puedes usar Ajax para enviar la información a un script PHP. Si usas jQuery, puedes hacerlo de esta manera:

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 (algún_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"));
}
?>

Todo eso es realmente básico pero debería llevarte a alguna parte. Sin embargo, normalmente la resolución de la pantalla no es la que realmente deseas. Quizás esté más interesado en el tamaño de la ventana de visualización del navegador real, ya que ahí es donde se representa la página...

KyleFarris avatar Oct 01 '2009 15:10 KyleFarris

Directamente con PHP no es posible pero...

Escribo este código simple para guardar la resolución de la pantalla en una sesión PHP y usarla 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>';
}
?>

Nueva solución si necesita enviar otro parámetro en el método Get (por Guddu Modok)

<?php
session_start();
if(isset($_SESSION['screen_width']) AND isset($_SESSION['screen_height'])){
    echo 'User resolution: ' . $_SESSION['screen_width'] . 'x' . $_SESSION['screen_height'];
    print_r($_GET);
} else if(isset($_GET['width']) AND isset($_GET['height'])) {
    $_SESSION['screen_width'] = $_GET['width'];
    $_SESSION['screen_height'] = $_GET['height'];
$x=$_SERVER["REQUEST_URI"];    
    $parsed = parse_url($x);
$query = $parsed['query'];
parse_str($query, $params);
unset($params['width']);
unset($params['height']);
$string = http_build_query($params);
$domain=$_SERVER['PHP_SELF']."?".$string;
        header('Location: ' . $domain);
} else {
$x=$_SERVER["REQUEST_URI"];    
    $parsed = parse_url($x);
$query = $parsed['query'];
parse_str($query, $params);
unset($params['width']);
unset($params['height']);
$string = http_build_query($params);
$domain=$_SERVER['PHP_SELF']."?".$string;
    echo '<script type="text/javascript">window.location = "' . $domain . '&width="+screen.width+"&height="+screen.height;</script>';
}
?>
Carlos Ricardo Schmitz avatar Jul 10 '2012 20:07 Carlos Ricardo Schmitz

PHP es un lenguaje del lado del servidor: se ejecuta únicamente en el servidor y el resultado del programa resultante se envía al cliente. Como tal, no hay información disponible en la "pantalla del cliente".

Dicho esto, puedes hacer que el cliente te diga cuál es su resolución de pantalla a través de JavaScript. Escriba un pequeño scriptlet para enviarle screen.width y screen.height, posiblemente a través de AJAX, o más probablemente con una "página de salto" inicial que lo encuentre y luego lo redireccione a http://example.net/index.php?size= AxB

Aunque como usuario, prefiero que diseñes un sitio que maneje con fluidez cualquier resolución de pantalla. Navego en ventanas de diferentes tamaños, la mayoría no maximizadas.

Adam Wright avatar Oct 01 '2009 15:10 Adam Wright

La 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>";

?>
WebSon avatar Feb 06 '2019 15:02 WebSon

Descubrí que usar CSS dentro de mi html dentro de mi php funcionó 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 generará un título de menor tamaño si la pantalla tiene 480 px o menos. Por lo tanto, no es necesario pasar ninguna variable usando JS o similar.

delp avatar Jul 24 '2012 09:07 delp