Ho bisogno di trovare la risoluzione dello schermo di uno schermo utente che visita il mio sito web?Ottenere la risoluzione dello schermo usando PHP
risposta
Non è possibile farlo con PHP puro. Devi farlo con JavaScript. Ci sono diversi articoli scritti su come farlo.
In sostanza, è possibile impostare un cookie oppure è possibile persino fare un po 'di Ajax per inviare le informazioni a uno script PHP. Se si utilizza jQuery, si può fare qualcosa di simile:
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"));
}
?>
Tutto ciò che è veramente essenziale, ma dovrebbe portarti da qualche parte Normalmente la risoluzione dello schermo non è ciò che vuoi veramente. Si può essere più interessati alla dimensione della porta di visualizzazione del browser vero e proprio dal momento che è in realtà in cui la pagina viene visualizzata ...
Kyle hai trovato un modo per ottenere le dimensioni della porta di visualizzazione del browser? –
@KyleFarris ... non sono così bravo su jquery e json .. come sarà il codice è come il muggito '$ (function() { $ .post ('header.php', {width: 800px }, la funzione (jSON) { se (json.outcome == 'successo') { header-800px.php // fare qualcosa con la conoscenza possibilmente ?} else { header.php; }} ,' json '); }); ' –
Non sono d'accordo con te sulla risoluzione della vista, tuttavia la risposta è ottima! Immagino che queste informazioni possano essere usate per statistiche e ban. Preferirei di più user agent e ip per questo. Anche la risoluzione dello schermo è buona! – volter9
Utilizzare JavaScript (screen.width
e screen.height
IIRC, ma potrei avere torto, non ho fatto JS tra un po '). PHP non può farlo.
L'unico modo è usare javascript, quindi ottenere il javascript per postarlo sul tuo php (se hai davvero bisogno di lì lato res server). Questo tuttavia cadrà completamente sulla sua faccia, se si spegne javascript.
PHP funziona solo sul lato server, non sull'host dell'utente. Utilizzare JavaScript o jQuery per ottenere queste informazioni e inviarle tramite AJAX o URL (? X = 1024 & y = 640).
Sarebbe? X = 1024 & y = 640 – EFraim
penso che sia necessario utilizzare & y invece di? Y –
PHP è un linguaggio lato server - viene eseguito solo sul server e l'output del programma risultante viene inviato al client. Pertanto, non sono disponibili informazioni sullo "schermo client".
Detto questo, puoi chiedere al client quale sia la risoluzione dello schermo tramite JavaScript. Scrivi un piccolo scriptlet per inviarti screen.width e screen.height - possibilmente tramite AJAX, o più probabilmente con una "jump page" iniziale che lo trova, quindi reindirizza a http://example.net/index.php?size=AxB
Pur parlando come utente, vorrei Preferisco di gran lunga progettare un sito per gestire in modo fluido qualsiasi risoluzione dello schermo. Scorro finestre di dimensioni diverse, per lo più non ingrandite.
+1 per le spiegazioni dettagliate e non massimizzare le finestre del browser. Le finestre del mio browser sono generalmente larghe circa 800 pixel; le pagine Web che si ridimensionano in base alla risoluzione dello schermo sono la rovina della mia esistenza! –
Direttamente con PHP non è possibile, ma ...
Scrivo questo semplice codice a salva la risoluzione dello schermo su una sessione PHP da utilizzare su una galleria di immagini.
<?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>';
}
?>
Buona soluzione - implementata e funziona alla grande. Ho anche estratto http_user_agent (anche se non è sempre pieno/accurato). Vorrei che ci fosse un modo per afferrare la dimensione effettiva della porta di visualizzazione del browser. (in contrasto con lo schermo res). –
Mi piace questa soluzione. Semplice: reindirizza a una pagina con dimensioni nell'URL. Per chiunque stia leggendo questo, è possibile ottenere la dimensione del viewport del browser: consultare http://stackoverflow.com/questions/8794338 che dice (con jquery) utilizza le funzioni .height() e .width(). – Ukuser32
Buona soluzione ma, per favore, puoi fornirci una cookie usando invece delle sessioni? –
Ho trovato utilizzando CSS nel mio html all'interno del mio php ha fatto il trucco per me.
<?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>';
?>
Questo visualizzerà un titolo di dimensioni più piccole se lo schermo è 480px o meno. Quindi non è necessario passare alcun vars usando JS o simili.
Questo non funziona –
Si può provare RESS (componenti lato server di design + reattivo), consultare questo tutorial:
Non credo che è possibile rilevare le dimensioni dello schermo puramente con PHP, ma è possibile rilevare l'utente -agent ..
<?php
if (stristr($ua, "Mobile")) {
$DEVICE_TYPE="MOBILE";
}
if (isset($DEVICE_TYPE) and $DEVICE_TYPE=="MOBILE") {
echo '<link rel="stylesheet" href="/css/mobile.css" />'
}
?>
Ecco un link ad uno script più dettagliato: PHP Mobile Detect
In PHP non c'è stan modo per ottenere queste informazioni. Tuttavia, è possibile se si sta utilizzando una soluzione di terze parti. Rilevatore dispositivo 51Degrees per PHP ha le proprietà che hanno bisogno:
Ti dà larghezza e l'altezza dello schermo dell'utente in pixel. Per utilizzare queste proprietà è necessario scaricare il rilevatore da sourceforge. Allora avete bisogno di includere le seguenti 2 righe nel file/file dove è necessario rilevare l'altezza dello schermo e larghezza:
<?php
require_once 'path/to/core/51Degrees.php';
require_once 'path/to/core/51Degrees_usage.php';
?>
Dove path/to/core è percorso di directory 'core', che è stato scaricato da sourceforge. Infine, per utilizzare le proprietà:
<?php
echo $_51d['ScreenPixelsHeight']; //Output screen height.
echo $_51d['ScreenPixelsWidth']; //Output screen width.
?>
Tenete a mente queste variabili possono contenere valore 'Unknown' alcune volte, quando il dispositivo non è stato identificato.
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'];
questo può essere fatto facilmente usando i cookie. Questo metodo consente alla pagina di controllare i valori dei cookie memorizzati rispetto all'altezza e alla larghezza dello schermo (o ai valori di altezza e larghezza della porta del browser) e, se sono diversi, ripristinerà il cookie e ricaricherà la pagina. Il codice deve consentire le preferenze dell'utente. Se i cookie persistenti sono disattivati, utilizzare un cookie di sessione. Se ciò non funziona devi andare con un'impostazione predefinita.
- Javascript: Verificare se l'altezza & cookie di larghezza impostato
- Javascript: Se impostato, controllare se screen.height & screen.width (o quello che volete) corrisponde al valore corrente del cookie
- Javascript: Se il cookie non è impostato o non corrisponde al valore corrente, allora: a. Javascript: crea un cookie persistente o di sessione chiamato (ad esempio) 'shw' sul valore della schermata attuale.una schermata & screen.width.
b. Javascript: reindirizza a SELF usando window.location.reload(). Quando si ricarica, salterà il passaggio 3. - PHP: $ _COOKIE ['shw'] contiene valori.
- Continuare con PHP
Ad es, Sto usando alcune funzioni di cookie comuni trovate sul web. Assicurati che setCookie restituisca i valori corretti. Inserisco questo codice immediatamente dopo il tag head. Ovviamente la funzione dovrebbe essere in un file sorgente.
<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"];
}
<script type="text/javascript">
if(screen.width <= 699){
<?php $screen = 'mobile';?>
}else{
<?php $screen = 'default';?>
}
</script>
<?php echo $screen; ?>
Non è possibile impostare una variabile php in un JavaScript. – japetko
Per spiegare questo genoso: Primo php eseguito sul lato server ie. prima di raggiungere il browser, mentre javascript viene eseguito dopo aver raggiunto il browser. – reverbnation
soluzione: fare web design scalabile ... (il nostro dovrei dire una corretta progettazione web) formattazione dovrebbe essere fatto lato client e volevo informazioni sarebbe stata tramandata al server, ma le informazioni sono ancora utile (quanti oggetti per riga tipo di deal) ma il web design dovrebbe essere fluido, quindi ogni elemento di riga non dovrebbe essere inserito nelle tabelle a meno che non sia una tabella reale (e i dati scaleranno alle sue singole celle) se si usa un div puoi impilare ogni elemento uno accanto all'altro e la finestra dovrebbe "spezzare" la fila nel punto giusto. (serve solo css corretto)
- 1. QT ottenere la risoluzione dello schermo senza il monitor esteso
- 2. Come posso ottenere la risoluzione dello schermo in R
- 3. Come posso ottenere la risoluzione dello schermo in java?
- 4. Come ottenere la risoluzione dello schermo in Android Honeycomb?
- 5. Come ottenere la risoluzione dello schermo in C++?
- 6. Ottieni risoluzione nativa dello schermo
- 7. Qual è la risoluzione dello schermo dell'iPhone?
- 8. Riesci a ottenere una dimensione/risoluzione dello schermo di un utente usando javascript?
- 9. Ottenere lo stato dello schermo usando ADB
- 10. Risoluzione dello schermo nell'app UWP Win10
- 11. Come ottenere una cattura dello schermo a doppia risoluzione?
- 12. XNA - Ottieni risoluzione dello schermo corrente
- 13. Come ridimensionare la jframe alla risoluzione dello schermo in netbeans?
- 14. Ridimensionamento della risoluzione dello schermo JavaFX
- 15. Qual è la risoluzione dello schermo più popolare di oggi?
- 16. Quale risoluzione dello schermo dovrei usare?
- 17. Ottieni la risoluzione dello schermo reale su Ice Cream Sandwich
- 18. Cambia la risoluzione dello schermo ospite MacOS X per VirtualBox
- 19. Risoluzione dello schermo su un'app PhoneGap
- 20. Ottieni la risoluzione dello schermo su un sito web mobile
- 21. Come recuperare la risoluzione dello schermo da un'app Winform C#?
- 22. Android: Ottieni la risoluzione dello schermo/pixel come valori interi
- 23. Come rilevare la modifica della risoluzione dello schermo in Delphi?
- 24. jQuery Risoluzione schermo Risoluzione altezza
- 25. cattura dello schermo usando DirectX
- 26. Come cambiare la risoluzione dello schermo usando QT, OpenGL, C++ e Linux?
- 27. Come gestire diverse dimensioni dello schermo/risoluzione dello schermo durante lo sviluppo di un sito?
- 28. Android ottenere le dimensioni dello schermo dell'orientamento dello schermo
- 29. Ridimensionare le immagini in base alla risoluzione dello schermo Android
- 30. Come posso ottenere la risoluzione dello schermo dell'utente in ActionScript 3?
Questo viene fatto tramite JavaScript, non in PHP. PHP viene eseguito solo sul lato server. Mentre annusi la risoluzione dello schermo di un utente, tieni presente che non tutti gli utenti navigano a schermo intero! – sjstrutt
Un modo CSS per il rendering del design dep sulle dimensioni: http://stackoverflow.com/questions/19186243/javascript-to-get-screen-width-in-php-variable –
Usa JavaScript per ottenere queste informazioni e inviare tramite AJAX – Elyor