Getting the screen resolution using PHP

前端 未结 21 1872
你的背包
你的背包 2020-11-22 06:50

I need to find the screen resolution of a users screen who visits my website?

相关标签:
21条回答
  • 2020-11-22 07:11

    solution: make scalable web design ... ( our should i say proper web design) formating should be done client side and i did wish the info would be passed down to server but the info is still usefull ( how many object per rows kind of deal ) but still web design should be fluid thus each row elements should not be put into tables unless its an actual table ( and the data will scale to it's individual cells) if you use a div you can stack each elements next to each other and your window should "break" the row at the proper spot. ( just need proper css)

    0 讨论(0)
  • 2020-11-22 07:12

    You can't do it with pure PHP. You must do it with JavaScript. There are several articles written on how to do this.

    Essentially, you can set a cookie or you can even do some Ajax to send the info to a PHP script. If you use jQuery, you can do it something like this:

    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"));
    }
    ?>
    

    All that is really basic but it should get you somewhere. Normally screen resolution is not what you really want though. You may be more interested in the size of the actual browser's view port since that is actually where the page is rendered...

    0 讨论(0)
  • 2020-11-22 07:12

    Use JavaScript (screen.width and screen.height IIRC, but I may be wrong, haven't done JS in a while). PHP cannot do it.

    0 讨论(0)
  • 2020-11-22 07:14

    This is a very simple process. Yes, you cannot get the width and height in PHP. It is true that JQuery can provide the screen's width and height. First go to https://github.com/carhartl/jquery-cookie and get jquery.cookie.js. Here is example using php to get the screen width and height:

        <!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>
    

    I have a test that you can execute: http://rw-wrd.net/test.php

    0 讨论(0)
  • 2020-11-22 07:17

    The only way is to use javascript, then get the javascript to post to it to your php(if you really need there res server side). This will however completly fall flat on its face, if they turn javascript off.

    0 讨论(0)
  • 2020-11-22 07:18

    Fully Working Example

    I couldn't find an actual working PHP example to "invisibly" (without URL parameters) return client screen size, and other properties, to server-side PHP, so I put this example together.

    JS populates and submits a hidden form (scripted by PHP from an array of JS properties), POSTing to itself (the data now available in PHP) and returns the data in a table.

    (Tested in "several" browsers.)

    <!DOCTYPE html>
    <html>
    <head>
        <title>*Client Info*</title>
        <style>table,tr{border:2px solid gold;border-collapse:collapse;}td{padding:5px;}</style>
    </head>
    
    <body>
    <?php
      $clientProps=array('screen.width','screen.height','window.innerWidth','window.innerHeight', 
        'window.outerWidth','window.outerHeight','screen.colorDepth','screen.pixelDepth');
    
      if(! isset($_POST['screenheight'])){
    
        echo "Loading...<form method='POST' id='data' style='display:none'>";
        foreach($clientProps as $p) {  //create hidden form
          echo "<input type='text' id='".str_replace('.','',$p)."' name='".str_replace('.','',$p)."'>";
        }
        echo "<input type='submit'></form>";
    
        echo "<script>";
        foreach($clientProps as $p) {  //populate hidden form with screen/window info
          echo "document.getElementById('" . str_replace('.','',$p) . "').value = $p;";
        }
        echo "document.forms.namedItem('data').submit();"; //submit form
        echo "</script>";
    
      }else{
    
        echo "<table>";
        foreach($clientProps as $p) {   //create output table
          echo "<tr><td>".ucwords(str_replace('.',' ',$p)).":</td><td>".$_POST[str_replace('.','',$p)]."</td></tr>";
        }
        echo "</table>";
      }
    ?>
    <script>
        window.history.replaceState(null,null); //avoid form warning if user clicks refresh
    </script>
    </body>
    </html>
    

    The returned data is extract'd into variables. For example:

    • window.innerWidth is returned in $windowinnerWidth
    0 讨论(0)
提交回复
热议问题