Avatar billede hist Praktikant
17. februar 2016 - 12:44 Der er 11 kommentarer

Find brugers skærmstrøelse

Hvordan finder jeg folks skærmstrøelse og smidt det ind i en php variabel
så jeg kan se hvor stor den er om den skal vise til mobil visning eller pc
Avatar billede KHHP Juniormester
17. februar 2016 - 13:02 #1
Umiddelbart kan det ikke lade sig gøre uden at du har noget JavaScript med ind over.
Problemet ligger i at informationer omkring browserens størrelse ikke bliver sendt med når den forespørger en side på din webserver, så derfor kan PHP ikke kende til dette.
Din mulighed er dog at kontrollere om den User-Agent der anvendes er en mobil eller en computer/tablet.

Hvis du vil arbejde med skærmstørrelsen i PHP, så skal du ud i noget med AJAX, hvor du i en JavaScript variabel udtrækker størrelsen og så sender dette med AJAX til dit php-script, som herfra tager stilling til om det skal være den ene eller den anden løsning.

Hvis du vil springe alt det bøvl over, så kan du blot anvende responsivt webdesign, da den er automatisk tilpasser sig og fungerer fint til de fleste formål.
Se evt her: http://getbootstrap.com/
Avatar billede hist Praktikant
17. februar 2016 - 13:12 #2
kan man ikke noget alla det her
<script>
ScreenWidth  = window.screen.width;
ScreenHeight = window.screen.height;

if (ScreenWidth != 480)
{
    <? $tablestr = "mindre"; ?>
}
else
{
    <? $tablestr = "støre"; ?>
}
</script>
Avatar billede Slater Ekspert
17. februar 2016 - 14:04 #3
Nej. PHP bliver udført før Javascript - og som regel på to helt forskellige computere (server og klient). Du kan ikke smide data tilbage fra Javascript til PHP uden at hente en ny side fra serveren, enten med et sideskift eller med AJAX.
Avatar billede claes57 Ekspert
17. februar 2016 - 14:12 #4
send en dummy-side afsted der via javascript aflæser skærmdata, og kalder den 'rigtige' side med data i linket.
Avatar billede hist Praktikant
26. februar 2016 - 08:38 #5
Claes57 hvordan det ?
Avatar billede claes57 Ekspert
26. februar 2016 - 09:29 #6
i starten på din side (i body) tester du med php, og du har variablerne b & h i kaldet.
Hvis ikke så viser du kun
<script>
location.href = location.href + '?b=' + screen.width + '&h=' + screen.height + '';
</script>
i <body> og afslutter siden - ellers kører du hele din ønskede side.

Den vil så ved kald hos bruger lige vende en gang med en linje javascript og returnere med størrelsen, som du kan aflæse som vanligt med php.
Bruger kalder fx index.php, og efter den er vendt rundt, så er kaldet i virkeligheden fx index.php?b=1920&h=1080
Avatar billede hist Praktikant
26. februar 2016 - 10:21 #7
er der ikke en fejl der ?
for den bliver ved med at reloade
Avatar billede claes57 Ekspert
26. februar 2016 - 10:36 #8
ok - location.href tager bare fra cache lokalt - det må den ikke.
Hvis din originale side er fx index.php, så omdøb den til index2.php, og index.php (ny side) skal så kun indeholde script i <body>

<script>
location.href = 'index2.php?b=' + screen.width + '&h=' + screen.height + '';
</script>
Avatar billede hist Praktikant
26. februar 2016 - 10:47 #9
er det ikke også ok at lave den sådan her ?
<?
$_SESSION['b'] = $_GET['b'];
$_SESSION['h'] = $_GET['h'];
if($_SESSION['b']== '' && $_SESSION['h'] == ''){
    ?>
    <script>
location.href = location.href + '?b=' + screen.width + '&h=' + screen.height + '';
</script>
    <?
    }
Avatar billede hist Praktikant
26. februar 2016 - 10:48 #10
nope bare glem den der var lige noget jeg ikke havde set
Avatar billede hist Praktikant
26. februar 2016 - 10:49 #11
det bare fordi jeg køre et cms system php-fusion og det er ikke helt til at finde rundt i
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester