document.write(screen.width);"; if($screen_w < 500){ echo '幅が 500 未満'; } それ以外{ エッチ"/> document.write(screen.width);"; if($screen_w < 500){ echo '幅が 500 未満'; } それ以外{ エッチ">

ホームページ  >  記事  >  バックエンド開発  >  奇妙なことに、この PHP ステートメントは正しいように見えますが、正しい結果を得ることができません。

奇妙なことに、この PHP ステートメントは正しいように見えますが、正しい結果を得ることができません。

WBOY
WBOYオリジナル
2016-06-13 12:48:35709ブラウズ

奇妙なことに、この PHP 文は正しいように見えますが、正しい結果が得られません。

<br />
<br />
$screen_w = "<script>document.write(screen.width);</script>";<br />
<br />
if($screen_w < 500){<br />
echo '宽度小于500';<br />
}<br />
else{<br />
echo '大于等于500';<br />
}<br />
<br />


$screen_w を直接エコーすると、得られる正しい結果は 1366
です。
判定すると、1366 が 500 未満であることがわかります

If (int)$screen_w または intval($screen_w)

そのまま0
と表示されます。
説明は何ですか?


-----解決策--------------------------------
文法上の誤りがなければ、それは「はい」を意味しますよね?

1. jsよりも先にphpが実行される! $screen_w = "3f1c4e4b6b16bbbd69b2ee476dc4f83adocument.write(screen.width);2cacc6d41bbb37262a98f745aa00fbf0"; がデータを取得できるとしても、それは PHP コードが実行された後でのみです。 2. $screen_w = "3f1c4e4b6b16bbbd69b2ee476dc4f83adocument.write(screen.width);2cacc6d41bbb37262a98f745aa00fbf0";
それは何ですか?それは単なる文字列の代入です
echo $screen_w;
を使用しても これはブラウザに表示されるだけです

------解決策---------var_dump 印刷すると、は 46 ビット文字列であり、正規表現を使用して数値を照合し、比較するだけです。

------解決策----------------------まず、どれがクライアントコードであるかを理解する必要がありますこれはサーバー側のコードです。サーバー側のコードが最初に実行され、クライアント側のコードが最後に実行されます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。