ホームページ  >  記事  >  バックエンド開発  >  奇妙なことに、この PHP 文は正しいように見えますが、正しい結果が得られません。

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

WBOY
WBOYオリジナル
2016-06-23 14:05:27890ブラウズ

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


$screen_w を直接 echo します; 正しい結果は 1366 です

判定された場合、結果は 1366 から 500 未満になります

(int)$screen_w または intval($screen_w) が直接 0 として表示される場合

とは説明?

ディスカッションへの返信(解決策)

文法上の誤りがない場合、それは正しいということですか?

1. jsよりも先にphpが実行される! $screen_w = "3f1c4e4b6b16bbbd69b2ee476dc4f83adocument.write(screen.width);2cacc6d41bbb37262a98f745aa00fbf0"; でデータを取得できるとしても、それは PHP コードが実行された後でのみです
2. $screen_w = "27835793f4768f4164d1421d99e293bcdocument.write(screen.width);2cacc6d41bbb37262a98f745aa00fbf0";
それは何ですか?単なる文字列の割り当てです
echo $screen_w; があっても
ブラウザに表示されるだけです
var_dump が出力するときは 46 ビットの文字列であり、その中に JS コードも含まれています。数値を照合するための式を再度比較します。

一致していないようで、数字の出し方がわかりません。

私も以前にこの問題に遭遇しました、基礎がしっかりしていません

js と php を分離する必要があります、

まず第一に、どれがクライアント側のコードでどれがサーバー側のコードであるかを理解する必要があります。コードが先に実行され、クライアント側のコードが先に実行され、後から実行されます

ただし、画面の幅がメインの幅より小さい場合にそれを判断する文を書きたいです。コンテンツ、コンテンツをブロックするフローティング バーは出力されません

これらの問題は初心者にとってほぼ必須であり、これは毎年のことです (その年も例外ではありませんでした、笑)。いろいろな教科書にこのことについて書いてありますか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。