PHP는 IP, 호스트 이름, 클라이언트 에이전트 등을 탐지 할 수 있습니다. PHP는 클라이언트 브라우저 모니터 크기/해상도를 감지 할 수 있습니까?PHP는 클라이언트 브라우저 모니터의 크기/해상도를 감지 할 수 있습니까?
답변
대부분의 추적 코드처럼 (투명 이미지 요청으로) 자바 스크립트에서 PHP 스크립트까지 전달해야합니다.
당신은 this example에서처럼, 자바 스크립트와 함께 PHP를 사용해야합니다 :
$url = $_SERVER['PHP_SELF'];
if(isset($HTTP_COOKIE_VARS["res"]))
$res = $HTTP_COOKIE_VARS["res"];
else {
?>
<script language="javascript">
<!--
go();
function go()
{
var today = new Date();
var the_date = new Date("August 31, 2020");
var the_cookie_date = the_date.toGMTString();
var the_cookie = "res="+ screen.width +"x"+ screen.height;
var the_cookie = the_cookie + ";expires=" + the_cookie_date;
document.cookie=the_cookie
location = '<?echo "$url";?>';
}
//-->
</script>
<?php
}
//Let's "split" the resolution results into two variables
list($width, $height) = split('[x]', $res);
//Take the width and height minus 300
$tb_width = $width-300;
$tb_height = $height-300;
//Make the table
print("<table align=center border=1 width=" .$tb_width . " height=" . $tb_height . " >
<tr><td align=center>Your screen resolution is " . $width . " by " . $height . ".<br>
The width/height of this table is " . $tb_width . " by " . $tb_height . ".</td></tr>
</table>");
아니, 문이 안 열려. PHP는 서버에서 실행되므로 특정 클라이언트 측 단계를 거치지 않고 정보를 서버의 PHP 스크립트에 전달하지 않으면 클라이언트 설정을 감지 할 수 없습니다.
? 예, 그럴 수 있습니다. –
우리의 브라우저와 같은 우리의 일부가 아닌 최대주의를주세요. 아마도 화면 해상도가 아닌 브라우저 크기를 감지하는 것이 좋습니다. 나는 JS가 둘 중 하나를 수행하는 것이 매우 비슷하다고 생각하지만, 사실 그것이 사실인지는 모른다.
또한 시각 장애인의 스크린 리더의 해상도는 어떻게됩니까?
+1. 2560x1600 화면 해상도를 가지고 있으며 거의 최대화를 실행하지 않습니다. 보기 포트 크기 (도구 모음, 스크롤 막대, 상태 표시 줄 및 창 장식을 포함하지 않는 창 영역)를 읽어야합니다. – SpliFF
JS는 브라우저의 창 크기를 확인할 수 있지만이 크기에는 사용자 도구 모음, 스크롤 막대 등이 포함됩니다. 브라우저의 실제 작업 영역은 해당 도구 모음 크기에 따라 다릅니다.
일부 사람들은 모바일 devoloping을 위해 브라우저 크기가 필요합니다. 어떤 경우에는 이것은 필수 정보입니다.
WURFL과 WALL을 사용하면 대부분의 휴대 전화가 JS를 지원하지 않으므로이 문제를 해결할 수 있습니다.
나는 이것도 찾고 있었지만,이 답변들 중 어느 것도 정말로 그 질문에 답을 찾지 못했습니다! 실제로 PHP가 서버 측에서 실행 중이므로 화면 해상도를 알 수있는 방법이 없습니다. 이 정보는 HTTP 환경 변수에 전달되지 않으므로 다른 경로가 필요합니다. Javascript가 하나의 대안입니다.
아래 예제는 HTTP 요청에서 전달되는 변수 resolution
을 확인하는 PHP 페이지입니다. 변수 resolution
을 찾지 못하면 해당 변수와 높이 및 너비를 전달하는 페이지에 간단한 자바 스크립트 비트를 생성하여 리디렉션에서 다시 그 자체로 되돌립니다. 물론 리디렉션 후에 페이지가 다시로드되면 모든 변수가 설정되고 PHP는 해상도를 알 수 있습니다.
<?php
if(!isset($_GET['resolution'])) {
echo "<script language=\"JavaScript\">
<!--
document.location=\"$PHP_SELF?resolution=1&width=\"+screen.width+\"&height=\"+screen.height;
//-->
</script>";
} else {
// Code to be displayed if resolution is detected
if(isset($_GET['width']) && isset($_GET['height'])) {
echo "Width: " . $_GET['width'] . " and Height: " . $_GET['height'] . "<br />";
} else {
echo "Resolution not detected.";
}
}
?>
결국이 방법은 상당히 만족스럽지 못했습니다. 그것은 작동하지만, 못생긴 URL에 cruft를 추가하고 리디렉션이 필요합니다. 그래도 더 나은 답변을 게시하는 데 영감을 줄 수 있습니다. 참고로 크레딧이 만료되는 크레딧은 this post에서 영감을 얻었습니다.
당신은 한 시점에서 해상도를 알고 있습니다.하지만 리디렉션 후에로드 할 때까지 누가 해상도가 무엇인지 압니다. – xaxxon
나는 이것이 최선의 해결책이 아니라는 것을 알고 있으므로, downvote를 남겨주세요.
<script>
/*
JAVASCRIPT IS ON TELL THE DEVELOPER#
*/
// GET BROWSER WIDTH AND HEIGHT
var bh=screen.height;
var bw=screen.width;
window.location="?doSubmit=do&js=yes&bh="+bh+"&bw="+bw+"";
</script>
<noscript>
<!--
JAVASCRIPT IS OFF TELL THE DEVELOPER#
-->
<meta http-equiv='refresh' content='0;url=?doSubmit=do&js=off&bh=off&bw=off'>
</noscript>
<?
if($_GET["doSubmit"]=="do"){
// VARS
$bh=$_GET["bh"];
$bw=$_GET["bw"];
$js=$_GET["js"];
// PRINT HTML ?>
<table>
<tr><td><strong>Browser Width:</strong></td><td><?=$bw;?>px</tr>
<tr><td><strong>Browser Height:</strong></td><td><?=$bh;?>px</tr>
<tr><td><strong>JavaScript Detection (y/n):</strong></td><td><?=$js;?></tr>
</table>
- 1. Vaadin의 클라이언트 브라우저 감지
- 2. PHP는 서버가 종료 될 때를 감지 할 수 있습니까?
- 3. 사용자가 다른 브라우저 탭으로 전환하면이를 감지 할 수 있습니까?
- 4. 어떻게 플래시의 브라우저 지원을 감지 할 수 있습니까?
- 5. SSL 브라우저 지원 감지
- 6. 동아시아 언어 지원을 감지 할 수 있습니까?
- 7. 클라이언트 측에서 브라우저 캐시의 페이지를 어떻게 무효화 할 수 있습니까?
- 8. 애플릿의로드를 감지 할 수 있습니까?
- 9. 브라우저 파일 호환성 감지
- 10. 브라우저 리디렉션 루프 감지
- 11. PHP는 플래시 양식에 로그인 할 수 있습니까?
- 12. PHP는 스캔 한도를 업로드 할 수 있습니까?
- 13. 이 PHP는 어떻게 간단하게 할 수 있습니까?
- 14. WPF에서 브라우저 버전 감지
- 15. CSS가있는 Android 브라우저 만 감지 할 수있는 방법이 있습니까?
- 16. Android 에뮬레이터 브라우저 감지
- 17. 레일 브라우저 감지 방법
- 18. jQuery 브라우저 감지?
- 19. 브라우저 감지 Python/mod_python?
- 20. JQuery와 브라우저 버전 감지
- 21. Silverlight에서 바인딩 변경을 감지 할 수 있습니까?
- 22. Update_all이 성공했는지 감지 할 수 있습니까?
- 23. iPhone이 터치 크기를 감지 할 수 있습니까?
- 24. VS IDE에서 건물을 감지 할 수 있습니까?
- 25. Perl이 배열을 감지 할 수 있습니까?
- 26. '종료 프로세스'를 외부에서 감지 할 수 있습니까?
- 27. Zend_Measure가 미터법을 감지 할 수 있습니까?
- 28. onTouchevent 화면에서 어디에서 감지 할 수 있습니까?
- 29. 화면 회전을 어떻게 감지 할 수 있습니까?
- 30. 가비지 수집기가 작동하면 감지 할 수 있습니까?
와 사용자가 윈도우 나 같은 다른 이벤트의 크기를 조정하는 경우는 아직 말할 수 없다 ... 당신은 함께 자바 스크립트 – xaxxon