Passare la risoluzione da javascript a php in modo trasparente

angeloulivieri

Utente Attivo
8 Set 2009
71
0
0
Salve,
mi servirebbe che da una pagina web mi trovo la risoluzione del monitor dell'utente e passo questo dato al server (in cui uso php). Come è possibile farlo tramite passaggio invisibile all'utente? Dunque senza usare la GET.
grazie a chiunque sappia rispondere
 

angeloulivieri

Utente Attivo
8 Set 2009
71
0
0
Salva i dati in un cookie che poi leggi con PHP.
Purtroppo non credo che i cookie siano la soluzione migliore nel mio caso. Gli utenti che dovranno accedere al sito sono tantissimi e immagina quanti li avranno disabilitati.

Comunque devo passare dati sulla risoluzione. Il client mi dice la risoluzione monitor e il server passa una specifica pagina css a secodna della risoluzione individuata.
 

angeloulivieri

Utente Attivo
8 Set 2009
71
0
0
Purtroppo non credo che i cookie siano la soluzione migliore nel mio caso. Gli utenti che dovranno accedere al sito sono tantissimi e immagina quanti li avranno disabilitati.

Comunque devo passare dati sulla risoluzione. Il client mi dice la risoluzione monitor e il server passa una specifica pagina css a secodna della risoluzione individuata.
Ho visto che una cosa del genere è possibile farla con i FORM. Passando il dato tramite POST. Tu credi che possa mettere un form prima del tag BODY?
Nell'HEAD insomma. Questo perché a me serve richiamare un foglio di stile tramite questa operazione.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
22
Roma
alessandro1997.netsons.org
Tanto per citare una soluzione (ma è quanto di più scomodo ci possa essere) puoi sempre reindirizzare l'utente ad una pagina dove vengono passati i dati in GET... questa pagina li salva in una sessione e poi reindirizza alla Home. Il problema è che per le sessioni servono comunuqe i cookie, anche se esistono altri modi di passare il Session ID ad uno script PHP, ma questi sono argomenti troppo fuori dal tema.
 

angeloulivieri

Utente Attivo
8 Set 2009
71
0
0
e se invece utilizzassi Ajax? Credete che possa fare tutto in una sola pagina php? Tipo... rilevo la risoluzione con js e la passo con una richiesta http. Sapete come fare? Ci sono esempi?
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
e se invece utilizzassi Ajax? Credete che possa fare tutto in una sola pagina php? Tipo... rilevo la risoluzione con js e la passo con una richiesta http. Sapete come fare? Ci sono esempi?
se ti preoccupi di tutti quelli che hanno i cookies disabilitati dovresti pensare anche a chi ha disabilitato il supporto per Javascript..:rolleyes:
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
A questo non ci avevo pensato. Quindi, se ci mettiamo a calcolare tutte le possibilità, viene fuori che non puoi fare quello che chiedi. Un consiglio? Meno paranoie! Ormai il 98% degli utenti che navigano nel Web hanno i cookie e Javascript abilitati.
e per quel 2% che rimane puoi sempre creare degli alert che ne richiedano l'abilitazione
 

angeloulivieri

Utente Attivo
8 Set 2009
71
0
0
c'avete ragione.. quasi quasi uso javascript e mando i parametri a php tramite variabili di sessione.
X Alessandro: la soluzione "onlyJS" non mi attira perché sto creando un css per ogni risoluzione da 640x480 a 1280x960. Sono 5 file e se faccio tutto con js me li scarica prima tutti sul client (vero?). Invece facendolo fare a php magari la cosa viene risolta lato server e all'utente viene mandato solo un file css.
Che ne dite?

P.S. Mica sapete dove posso trovare un bello script che mi faccia questa cosa con le sessioni? Quasi quasi me lo cerco.. l'avranno fatta in tanti questa cosa.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
da quello che so io (poco) con js, che è quello che ti legge la risoluzione, non puoi creare sessioni ma solo cookie.
ma puo darsi che sbagli.

io, sto ceranco di fare quello che fai tu, avrei pensato di fare una pagina index.htm con il js che legge la risolizione e forma il cookie con valore dello schermo e vita 0 (si dovrebbe cancellare all'uscita del bw). nella index metto il reindirizzamento alla home.php
nella parte php della home
if(!isset($_cockie['risoluzione']){
carico il css standard
}elseif($_cockie['risoluzione']=1024){
carico il css per 1024
}elseif{ eccetera......

qui, volendo il cookie puo essere messo in sessione per le altre pagine ed eventualmete eliminato (così l'utento non lo vede)
 

angeloulivieri

Utente Attivo
8 Set 2009
71
0
0
ciao
da quello che so io (poco) con js, che è quello che ti legge la risoluzione, non puoi creare sessioni ma solo cookie.
ma puo darsi che sbagli.
No, non credo. Io cookie non ne ho usati proprio. Le variabili di sessione si gestiscono lato server, dunque. Se io faccio in js una funzione del tipo:

function registra_risoluzione() {
res_width = screen.width;
res_height = screen.height;
// DEBUG document.write( res_width + "," + res_height );
var ajax = assegnaXMLHttpRequest();
// DEBUG document.write( ajax );
if(ajax) {
// inizializzo la request
ajax.open( "get" , "prova3.php?x=" + res_width + "&y=" + res_height , true );
// invio la richiesta
ajax.send(null);
}
// ricarico la pagina che ha eseguito la richiesta cosi da rendere
// subito disponibili le variabili di sessione impostate
location.reload();
}// JavaScript Document

e la chiamo dalla pagina html iniziale... Come vedi questa funzione redireziona un output su una seconda pagina php. La pagina php a questo punto, prende il dato inviato tramite GET e dovrebbe poter scrivere nell'head della pagina il css da caricare:


echo "<link href='default.css' rel='stylesheet' type='text/css'/> ";

Senza usare cookie... Quindi in teoria, visto che le variabili di sessione le registra il server a me non importa quello che fa il client.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
dato che sono inesperto di js e inespertissimo di ajax, dovrei fare una pagina index così? la funzione poi la metto nel body?
al posto di prova3.php immagino che dovrò mettere index.php

PHP:
<?php
if(!isset($_SESSION)){
session_start ();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
<script language="Javascript" type="text/javascript">
<!--
function registra_risoluzione() {
res_width = screen.width;
res_height = screen.height;
// DEBUG document.write( res_width + "," + res_height );
var ajax = assegnaXMLHttpRequest();
// DEBUG document.write( ajax );
if(ajax) {
// inizializzo la request
ajax.open( "get" , "prova3.php?x=" + res_width + "&y=" + res_height , true );
// invio la richiesta
ajax.send(null);
}
// ricarico la pagina che ha eseguito la richiesta cosi da rendere 
// subito disponibili le variabili di sessione impostate
location.reload();
}// JavaScript Document
-->
</script>
registra_risoluzione()
<?php
if(!isset($_GET['x'])){
	$_SESSION['risoluzione']=0;//nelle altre pagine se session=0 carico default.css
	echo "<link href='default.css' rel='stylesheet' type='text/css'/> ";
}else($_GET['x']==1024){
	switch($_GET['x']){
		case 1024:
			$_SESSION['risoluzione']=1024;
			echo "<link href='css1024.css' rel='stylesheet' type='text/css'/> ";
		break;
		case 9999://o quello che è, eccetera....
			$_SESSION['risoluzione']=9999;
			echo "<link href='css9999.css' rel='stylesheet' type='text/css'/> ";
		break;
		default://nel caso che non sia compresa
			$_SESSION['risoluzione']=0;
			echo "<link href='default.css' rel='stylesheet' type='text/css'/> ";
		break;
	}
}
?>
</head>
<body>
bla, bla, bla......
</body>
</html>
poi nelle successive al posto di $_GET uso $_SESSION['risoluzione'], o ho capito male?