문제

내 웹 사이트를 방문하는 사용자 화면의 화면 해상도를 찾아야합니까?

도움이 되었습니까?

해결책

순수한 PHP로 할 수 없습니다. JavaScript로해야합니다. 이 작업을 수행하는 방법에 대한 몇 가지 기사가 있습니다.

본질적으로 쿠키를 설정하거나 AJAX를 수행하여 정보를 PHP 스크립트로 보낼 수도 있습니다. jQuery를 사용하는 경우 다음과 같이 할 수 있습니다.

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

정말 기본이지만 어딘가에 데려다 줄 것입니다. 일반적으로 화면 해상도는 당신이 정말로 원하는 것이 아닙니다. 실제 브라우저 뷰 포트의 크기에 더 관심이있을 수 있습니다. 실제로 페이지가 렌더링되는 곳이므로 ...

다른 팁

PHP와 직접 직접 불가능하지만 ...

이 간단한 코드를 작성하여 이미지 갤러리에서 사용하기 위해 PHP 세션에서 화면 해상도를 저장합니다.

<?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>';
}
?>

PHP는 서버 측 언어입니다. 서버에서만 실행되며 결과 프로그램 출력은 클라이언트로 전송됩니다. 따라서 사용 가능한 "클라이언트 화면"정보가 없습니다.

즉, 클라이언트가 JavaScript를 통해 화면 해상도가 무엇인지 알려줄 수 있습니다. Screen.Width 및 Screen.Height- AJAX를 통해 또는이를 찾는 초기 "점프 페이지"를 통해 더 많은 스크립트를 보내면 다음으로 리디렉션을 보냅니다. http://example.net/index.php?size=axb

사용자로서 말하지만 화면 해상도를 유동적으로 처리하기 위해 사이트를 설계하는 것을 선호합니다. 다른 크기의 창문을 탐색하는데 대부분 극대화되지 않았습니다.

이것은 매우 간단한 과정입니다. 예, PHP에서 너비와 높이를 얻을 수 없습니다. jQuery가 화면의 너비와 높이를 제공 할 수 있다는 것은 사실입니다. 먼저갑니다 https://github.com/carhartl/jquery-cookie jQuery.cookie.js를 얻으십시오. 다음은 PHP를 사용하여 화면 너비와 높이를 얻는 예입니다.

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

실행할 수있는 테스트가 있습니다. http://rw-wrd.net/test.php

JavaScript 사용 (screen.width 그리고 screen.height IIRC, 그러나 나는 틀렸을 수도 있고, 한동안 JS를하지 않았을 수도 있습니다). PHP는 할 수 없습니다.

내 HTML 내부에서 CSS를 사용하여 PHP를 사용하는 것이 나에게 트릭을 수행했습니다.

<?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>'; 

    ?>

화면이 480px 이하인 경우 더 작은 크기의 헤드 라인을 출력합니다. 따라서 JS 또는 이와 유사한 VAR을 통과 할 필요가 없습니다.

Ress (Respondive Design + Server Side 구성 요소)를 사용해 볼 수 있습니다.이 자습서를 참조하십시오.

http://www.lukew.com/ff/entry.asp?1392

PHP로 화면 크기를 감지 할 수는 없지만 사용자 에이전트를 감지 할 수 있다고 생각합니다.

<?php
    if ( stristr($ua, "Mobile" )) {
        $DEVICE_TYPE="MOBILE";
    }

    if (isset($DEVICE_TYPE) and $DEVICE_TYPE=="MOBILE") {
        echo '<link rel="stylesheet" href="/css/mobile.css" />'
    }
?>

다음은보다 자세한 스크립트에 대한 링크입니다. PHP 모바일 감지

완전히 작동하는 예

실제 작업 PHP 예제를 찾을 수 없었습니다 "보이지 않게" (URL 매개 변수 없음) 클라이언트 화면 크기를 반환합니다, 및 기타 속성, 서버 측 PHP에 대한 기타 속성 이므로이 예제를 합치게됩니다.

JS는 숨겨진 양식을 채우고 제출합니다 (JS 특성 배열에서 PHP에 의해 스크립트), POST자체적으로 (현재 PHP에서 사용 가능한 데이터) 데이터를 테이블에 반환합니다.

( "여러"브라우저에서 테스트.)

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

반환 된 데이터는 다음과 같습니다 extract'변수로의 D. 예를 들어:

  • window.innerWidth 반환됩니다 $windowinnerWidth

유일한 방법은 JavaScript를 사용한 다음 JavaScript를 PHP에 게시 할 수 있습니다 (실제로 필요한 경우 서버 측면이 필요한 경우). 그러나 JavaScript를 끄면 얼굴이 완전히 평평해질 것입니다.

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'];

이것은 쿠키를 사용하여 쉽게 수행 할 수 있습니다. 이 방법을 사용하면 페이지가 스토리 쿠키 값을 화면 높이 및 너비 (또는 브라우저보기 포트 높이 및 너비 값)에 대해 확인할 수 있으며, 다른 경우 쿠키를 재설정하고 페이지를 다시로드합니다. 코드는 사용자 기본 설정을 허용해야합니다. 영구 쿠키가 꺼지면 세션 쿠키를 사용하십시오. 그래도 작동하지 않으면 기본 설정으로 가야합니다.

  1. JavaScript : 높이 및 너비 쿠키 세트가 있는지 확인하십시오
  2. JavaScript : SET이 설정된 경우 Screen.Height & Screen.Width (또는 원하는)가 쿠키의 현재 값과 일치하는지 확인하십시오.
  3. JavaScript : 쿠키가 설정되지 않았거나 현재 값과 일치하지 않는 경우 : a. JavaScript : 현재 화면의 값으로 'shw'라는 영구 또는 세션 쿠키를 만듭니다. height & screen.width.
    비. javaScript : Window.location.reload ()를 사용하여 자체로 리디렉션합니다. 다시로드되면 3 단계를 건너 뜁니다.
  4. php : $ _cookie [ 'shw']에는 값이 포함되어 있습니다.
  5. PHP를 계속하십시오

예를 들어, 웹에서 발견 된 몇 가지 일반적인 쿠키 기능을 사용하고 있습니다. SetCookie가 올바른 값을 반환해야합니다. 헤드 태그 직후이 코드를 넣었습니다. 분명히 함수는 AA 소스 파일에 있어야합니다.

<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를 사용하여 쿠키에서 창 너비를 설정할 수 있으며 PHP에서 얻을 수 있습니다.

<script type="text/javascript">
   document.cookie = 'window_width='+window.innerWidth+'; expires=Fri, 3 Aug 2901 20:47:11 UTC; path=/';
</script>

<?PHP
    $_COOKIE['window_width'];
?>

빠른 대답은 아니오입니다. 그렇다면 아마도 내가 PHP로 왜 그렇게 할 수 없는지 물어볼 것입니다. 좋아 여기 더 긴 답변이 있습니다. PHP는 서버 사이드 스크립팅 언어이므로 특정 클라이언트 유형과 관련이 없습니다. 그런 다음 "왜 PHP에서 브라우저 에이전트를 얻을 수 있습니까?"라고 물을 수 있습니다. 그 정보는 서버에 대한 요청시 초기 HTTP 헤더와 함께 전송되기 때문입니다. 따라서 HTTP 헤더로 전송되지 않는 클라이언트 정보를 원한다면 JavaScript와 같은 클라이언트 스크립팅 언어를 사용해야합니다.

PHP에는이 정보를 얻는 표준 방법이 없습니다. 그러나 타사 솔루션을 사용하는 경우 가능합니다. PHP의 51 도구 장치 검출기에는 필요한 속성이 있습니다.

픽셀로 사용자 화면의 너비와 높이를 제공합니다. 이러한 속성을 사용하려면 감지기를 다운로드해야합니다. Sourceforge. 그런 다음 화면 높이와 너비를 감지 해야하는 파일/파일에 다음 2 줄을 포함해야합니다.

<?php
require_once 'path/to/core/51Degrees.php';
require_once 'path/to/core/51Degrees_usage.php';
?>

Path/To/Core는 SourceForge에서 다운로드 한 'Core'디렉토리로의 경로입니다. 마지막으로 속성을 사용하려면 :

<?php
echo $_51d['ScreenPixelsHeight']; //Output screen height.
echo $_51d['ScreenPixelsWidth']; //Output screen width.
?>

이 변수에는 장치를 식별 할 수없는 경우에도 '알 수없는'값이 포함될 수 있습니다.

솔루션 : 확장 가능한 웹 디자인 만들기 ... (적절한 웹 디자인이라고 말해야한다) 포맷은 클라이언트 측면을 수행해야하며 정보가 서버로 전달되기를 바란다. 거래) 그러나 여전히 웹 디자인은 유동적이어야하므로 실제 테이블이 아니라면 각 행 요소를 테이블에 넣어서는 안됩니다 (데이터는 개별 셀로 스케일링 될 것입니다). 창문은 적절한 지점에서 행을 "파손"해야합니다. (적절한 CS가 필요합니다)

PHP는 사용자 호스트가 아닌 서버 측에서만 작동합니다. JavaScript 또는 JQuery를 사용 하여이 정보를 얻고 Ajax 또는 URL (? x = 1024 & y = 640)을 통해 보내십시오.

가장 쉬운 방법

<?php 
//-- you can modified it like you want

echo $width = "<script>document.write(screen.width);</script>";
echo $height = "<script>document.write(screen.height);</script>";

?>
<script type="text/javascript">

if(screen.width <= 699){
    <?php $screen = 'mobile';?>
}else{
    <?php $screen = 'default';?>
}

</script>

<?php echo $screen; ?> 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top