PHP は IP、ホスト名、クライアント エージェントなどを検出できます。PHP はクライアント ブラウザのモニター サイズ/解像度を検出できますか?
8 に答える
いいえ、できません。PHP はサーバー上で実行されるため、特定のクライアント側の手順を実行してサーバー上の PHP スクリプトに情報を渡さない限り、クライアント設定を検出できません。
次の例のように、JavaScript と一緒に 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 はサーバー側で実行されているため、画面の解像度を知る方法はありません。その情報は HTTP 環境変数で渡されないため、別のルートが必要です。Javascript は 1 つの代替手段です。
resolution
以下の例は、HTTP リクエストで渡される変数をチェックする PHP ページです。その変数が見つからない場合はresolution
、ページ上に短い JavaScript を作成し、その変数と高さと幅をリダイレクトでそれ自体に渡します。もちろん、リダイレクト後にページが再度読み込まれると、すべての変数が設定され、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 に粗雑さが追加され、リダイレクトが必要になります。それでも、誰かがより良い回答を投稿するきっかけになるかもしれません。参考までに、クレジットが必要なクレジット、この回答はこの投稿に触発されました。
これが最良の答えではないことはわかっているので、反対票を惜しまないでください。
<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>
一部の人々は、モバイル開発のためにブラウザーのサイズを必要とします。これは場合によっては重要な情報です。
ほとんどのモバイルは JS をサポートしていないため、WURFL と WALL を使用するとこれを回避できます。
JS はブラウザーのウィンドウ サイズを確認できますが、このサイズにはユーザー ツールバー、スクロールバーなどが含まれることに注意してください。ブラウザーの実際のワークスペース領域は、これらのツールバーのサイズによって異なります。
JS を使用してモニターのサイズを取得することはできません。ポーリングを行う必要があります :)