remove - Obteniendo la resolución de pantalla usando PHP
screen width php (16)
Descubrí que usar CSS dentro de mi html dentro de mi php fue lo mejor 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 tamaño más pequeño si la pantalla es 480px o menos. Así que no es necesario pasar ningún vars usando JS o similar.
Necesito encontrar la resolución de pantalla de una pantalla de usuario que visita mi sitio web?
Directamente con PHP no es posible pero ...
Escribo este código simple para guardar la resolución de la pantalla en una sesión de PHP para usar 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>'';
}
?>
En PHP no hay una forma estándar de obtener esta información. Sin embargo, es posible si está usando una solución de terceros. El detector de dispositivo 51Degrees para PHP tiene las propiedades que necesita:
Te da ancho y alto de la pantalla del usuario en píxeles. Para usar estas propiedades, debes descargar el detector de sourceforge . Luego debe incluir las siguientes 2 líneas en su archivo / archivos donde es necesario detectar la altura y el ancho de la pantalla:
<?php
require_once ''path/to/core/51Degrees.php'';
require_once ''path/to/core/51Degrees_usage.php'';
?>
Donde path / to / core es la ruta al directorio ''Core'' que descargó de sourceforge. Finalmente, para usar las propiedades:
<?php
echo $_51d[''ScreenPixelsHeight'']; //Output screen height.
echo $_51d[''ScreenPixelsWidth'']; //Output screen width.
?>
Tenga en cuenta que estas variables pueden contener el valor ''Desconocido'' algunas veces, cuando el dispositivo no pudo ser identificado.
Este es un proceso muy simple. Sí, no puedes obtener el ancho y alto en PHP. Es cierto que JQuery puede proporcionar el ancho y alto de la pantalla. Primero vaya a https://github.com/carhartl/jquery-cookie y obtenga jquery.cookie.js. Aquí hay un ejemplo usando php para obtener el ancho y alto de la 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 que puedes ejecutar: http://rw-wrd.net/test.php
Esto se puede hacer fácilmente usando cookies. Este método permite que la página compruebe los valores almacenados de cookies con respecto a la altura y el ancho de la pantalla (o valores de altura y ancho del puerto de la vista del navegador) y, si son diferentes, restablecerá la cookie y volverá a cargar la página. El código debe permitir las preferencias del usuario. Si las cookies persistentes están desactivadas, use una cookie de sesión. Si eso no funciona, debe ir con una configuración predeterminada.
- Javascript: compruebe si el conjunto de cookies de altura y ancho
- Javascript: si está configurado, comprueba si screen.height & screen.width (o lo que quieras) coincide con el valor actual de la cookie
- Javascript: si la cookie no está configurada o no coincide con el valor actual, entonces: a. Javascript: crea una cookie persistente o de sesión con el nombre (por ejemplo) ''shw'' al valor de screen.height y screen.width actual.
segundo. Javascript: redirigir a SELF usando window.location.reload (). Cuando se recarga, omitirá el paso 3. - PHP: $ _COOKIE [''shw''] contiene valores.
- Continuar con PHP
Por ejemplo, estoy usando algunas funciones de cookies comunes que se encuentran en la web. Asegúrese de que setCookie devuelva los valores correctos. Puse este código inmediatamente después de la etiqueta de la cabeza. Obviamente, la función debe estar en un archivo 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"];
}
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''];
La única forma es usar javascript, luego obtener el javascript para publicarlo en tu php (si realmente lo necesitas allí está el lado del servidor). Sin embargo, esto caerá totalmente en su cara, si desactivan JavaScript.
La forma más fácil es:
$width = "<script>var windowWidth = screen.width; document.writeln(windowWidth); </script>";
$height = "<script>var windowHeight = screen.height; document.writeln(windowHeight); </script>";
echo ''This screen is : ''.$width.'' x ''.$height;
No creo que puedas detectar el tamaño de la pantalla puramente con PHP, pero puedes detectar el agente de usuario.
<?php
if ( stristr($ua, "Mobile" )) {
$DEVICE_TYPE="MOBILE";
}
if (isset($DEVICE_TYPE) and $DEVICE_TYPE=="MOBILE") {
echo ''<link rel="stylesheet" href="/css/mobile.css" />''
}
?>
Aquí hay un enlace a un script más detallado: PHP Mobile Detect
No puedes hacerlo con PHP puro. Debes hacerlo con JavaScript. Hay varios artículos escritos sobre cómo hacer esto.
Esencialmente, puede establecer una cookie o incluso puede hacer un poco de Ajax para enviar la información a un script PHP. Si usas jQuery, puedes hacerlo de la siguiente 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 (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"));
}
?>
Todo eso es realmente básico, pero debería llevarte a algún lado. Normalmente, la resolución de pantalla no es lo que realmente quieres. Es posible que esté más interesado en el tamaño del puerto de visualización del navegador real, ya que es en realidad donde se representa la página ...
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 de "pantalla de cliente" disponible.
Dicho esto, puede hacer que el cliente le diga cuál es su resolución de pantalla a través de JavaScript. Escriba una pequeña 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 la encuentre, luego redirija a http://example.net/index.php?size=AxB
Aunque hablo como usuario, preferiría que diseñaras un sitio para manejar con fluidez cualquier resolución de pantalla. Navego en ventanas de diferentes tamaños, la mayoría no maximizadas.
PHP funciona solo en el servidor, no en el host del usuario. Use JavaScript o jQuery para obtener esta información y envíela a través de AJAX o URL (? X = 1024 & y = 640).
Puede probar RESS (diseño Responsive + componentes del lado del servidor), consulte este tutorial:
Use JavaScript ( screen.width
y screen.height
IIRC, pero puedo estar equivocado, hace mucho tiempo que no uso JS). PHP no puede hacerlo.
solución: haga que el diseño web escalable ... (nuestro diseño web debería ser adecuado) debe hacerse desde el lado del cliente y desearía que la información se transmita al servidor, pero la información sigue siendo útil (¿cuántos objetos por filas tipo de tratar) pero el diseño web debe ser fluido, por lo que cada elemento de fila no debe colocarse en tablas a menos que sea una tabla real (y los datos se escalarán a sus celdas individuales) si usa un div puede apilar cada elemento uno al lado del otro y su ventana debe "romper" la fila en el lugar apropiado. (solo necesita css adecuado)
<script type="text/javascript">
if(screen.width <= 699){
<?php $screen = ''mobile'';?>
}else{
<?php $screen = ''default'';?>
}
</script>
<?php echo $screen; ?>