2

ブラウザがIE6かIE7かを確認するために使用するコードに小さな問題があります。問題は、$browserCheck変数を処理する簡単なものだと思います。私の意図は$browserCheck可変インクリメントを使用することですが、テスト目的で可変エコーも使用しています。問題は、変数を整数として設定した場所をスクリプトが認識しなかったため、http://php.net/manual/en/language.types.type-juggling.phpを使用して型を変更したことである可能性があると考えました。これが掲載されているサイトはhttp://www.asuperiorcallcenter.com/development/です。

<?php
    $browserCheck = (int) 0;
    if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 6') !== false) { $browserCheck++; echo $browserCheck; }
    if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 7') !== false) { $browserCheck++; echo $browserCheck; }
    function browseRight($t)
    {
        if (($t == 'css') && ($browserCheck > 0))
        {
            ?>
            <link href='http://fonts.googleapis.com/css?family=Ubuntu|Oswald' rel='stylesheet' type='text/css'>
            <style type="text/css">
            #browseRight
            {
                min-width: 1000px;
                padding: 0px 100px 0px 100px;
                height: 440px;
                background: url(browseRight/bg.jpg) repeat;
                text-align: center;
            }

            #browseRight ul
            {
                width: 1000px;
            }

            #browseRight ul li
            {
                float: left;
                list-style-type: none;
                height: 310px;
                width: 180px;
                padding: 10px 10px 10px 10px;
            }

                #browseRight ul li:hover
                {
                    background: #eee7d5;
                }

            #browseRight ul li img
            {
                height: 130px;
                clear: both;
            }

            #browseRight h2
            {
                font-family: 'Oswald', sans-serif;
                width: 100%;
                clear: both;
                font-size: 20px;
                padding: 20px 0px 0px 0px;
                color: #333333;
            }

            #browseRight ul li h2
            {
                font-family: 'Oswald', sans-serif;
                width: 100%;
                clear: both;
                font-size: 16px;
                color: #333333;
            }

            #browseRight p
            {
                font-family: 'Ubuntu', sans-serif;
                font-size: 12px;
                color: #333333;
                text-align: center;
                overflow: hidden;
            }

            #browseRight ul li p
            {
                height: 80px;
            }
            </style>
            <?php
        }
        if (($t == 'html') && ($browserCheck > 0))
        {
            ?>
                <div align="center"><div id="browseRight">
                <h2>Your Browser is out of date.</h2>
                <p>Does the website below look bad? if so it is because your browser is out of date. Fortunately you can fix this, it is as easy as updating your web browser. Below are the most popular web browsers around, visit thier websites and update to a new browser.</p>
                <div align="center"><ul>
                    <a href="http://www.google.com/chrome/" target="_blank"><li><img src="browseRight/google-chrome-logo.png"><h2>Google Chrome</h2><p>Get a fast, free web browser</p></li></a>
                    <a href="http://www.mozilla.org/en-US/" target="_blank"><li><img src="browseRight/mozilla-firefox-logo.png"><h2>Mozilla Firefox</h2><p>We are mozilla. Non-profit, for the good of the Web</p></li></a>
                    <a href="http://www.apple.com/safari/" target="_blank"><li><img src="browseRight/safari-logo.png"><h2>Safari</h2><p>Opera Software has always strived to develop the fastest and technologically most advanced browsers.</p></li></a>
                    <a href="http://www.opera.com/" target="_blank"><li><img src="browseRight/opera-logo.png"><h2>Opera</h2><p>It’s a browser. It’s a platform. It’s an open invitation to innovate. Safari sets the standard for the way browsing should be.</p></li></a>
                    <a href="http://windows.microsoft.com/en-us/internet-explorer/products/ie/home" target="_blank"><li><img src="browseRight/internet-explorer-logo.png"><h2>Internet Explorer</h2><p>A more beautiful web</p></li></a>
                </ul></div>
                </div></div>
            <?php
        }
    }
?>
4

5 に答える 5

3

あなたの問題は$browserCheck、のタイプではなく、そのスコープに関係しています。関数内ではわかりません。globalキーワードを使用するか$GLOBALS['browserCheck']、関数内で使用するか、さらに良いことに、それをパラメーターとして関数に渡す必要があります。

ただし、$browserCheckコード内の他の場所で使用されていない場合は、グローバルスコープではなく、関数内で定義する必要があります。

最良の方法:パラメータとして渡す

// Declared at global scope, unknown to the function.
$browserCheck = 0;
if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 6') !== false) { $browserCheck++; echo $browserCheck; }
if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 7') !== false) { $browserCheck++; echo $browserCheck; }

// Pass as a parameter to the function.
function browseRight($t, $browserCheck)
{
  // etc...
}

代替:$GLOBALSを介したアクセス

function browseRight($t)
{
    // pull browserCheck from the $GLOBALS array
    if (($t == 'css') && ($GLOBALS['browserCheck'] > 0))
    {
    // etc...
}

global $browserCheck最後に、関数の上部で使用できますが、これはお勧めしません。$GLOBALSあなたがグローバル変数にアクセスしているという事実をあなたのコードで明示的にするので、私は好みます。

推奨読書:変数スコープに関するPHPのマニュアル。

于 2012-05-03T13:39:35.417 に答える
2

$browserCheck変数はグローバルです

関数内からアクセスする場合は、宣言する必要があります

global $browserCheck 

関数の開始時

于 2012-05-03T13:39:37.583 に答える
1

最も簡単な方法は、GLOBAL$browsercheckを追加することです。そのようです

function browseRight($t)
{
    GLOBAL $browserCheck;

関数を宣言した直後に追加します。しかし、これは迅速で汚いです。グローバルを使用するのではなく、実際に$browserCheckを関数に渡す必要があります。

于 2012-05-03T13:45:51.293 に答える
0

これで修正されます:

<?php
    $browserCheck = false;
    if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== FALSE) { $browserCheck = true; echo $browserCheck; }
    if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 7.') !== FALSE) { $browserCheck = true; echo $browserCheck; }
    function browseRight($t)
    {
        if (($t == 'css') && $browserCheck)
        {
            ?>
            <link href='http://fonts.googleapis.com/css?family=Ubuntu|Oswald' rel='stylesheet' type='text/css'>
            <style type="text/css">
            #browseRight
            {
                min-width: 1000px;
                padding: 0px 100px 0px 100px;
                height: 440px;
                background: url(browseRight/bg.jpg) repeat;
                text-align: center;
            }

            #browseRight ul
            {
                width: 1000px;
            }

            #browseRight ul li
            {
                float: left;
                list-style-type: none;
                height: 310px;
                width: 180px;
                padding: 10px 10px 10px 10px;
            }

                #browseRight ul li:hover
                {
                    background: #eee7d5;
                }

            #browseRight ul li img
            {
                height: 130px;
                clear: both;
            }

            #browseRight h2
            {
                font-family: 'Oswald', sans-serif;
                width: 100%;
                clear: both;
                font-size: 20px;
                padding: 20px 0px 0px 0px;
                color: #333333;
            }

            #browseRight ul li h2
            {
                font-family: 'Oswald', sans-serif;
                width: 100%;
                clear: both;
                font-size: 16px;
                color: #333333;
            }

            #browseRight p
            {
                font-family: 'Ubuntu', sans-serif;
                font-size: 12px;
                color: #333333;
                text-align: center;
                overflow: hidden;
            }

            #browseRight ul li p
            {
                height: 80px;
            }
            </style>
            <?php
        }
        if (($t == 'html') && $browserCheck)
        {
            ?>
                <div align="center"><div id="browseRight">
                <h2>Your Browser is out of date.</h2>
                <p>Does the website below look bad? if so it is because your browser is out of date. Fortunately you can fix this, it is as easy as updating your web browser. Below are the most popular web browsers around, visit thier websites and update to a new browser.</p>
                <div align="center"><ul>
                    <a href="http://www.google.com/chrome/" target="_blank"><li><img src="browseRight/google-chrome-logo.png"><h2>Google Chrome</h2><p>Get a fast, free web browser</p></li></a>
                    <a href="http://www.mozilla.org/en-US/" target="_blank"><li><img src="browseRight/mozilla-firefox-logo.png"><h2>Mozilla Firefox</h2><p>We are mozilla. Non-profit, for the good of the Web</p></li></a>
                    <a href="http://www.apple.com/safari/" target="_blank"><li><img src="browseRight/safari-logo.png"><h2>Safari</h2><p>Opera Software has always strived to develop the fastest and technologically most advanced browsers.</p></li></a>
                    <a href="http://www.opera.com/" target="_blank"><li><img src="browseRight/opera-logo.png"><h2>Opera</h2><p>It’s a browser. It’s a platform. It’s an open invitation to innovate. Safari sets the standard for the way browsing should be.</p></li></a>
                    <a href="http://windows.microsoft.com/en-us/internet-explorer/products/ie/home" target="_blank"><li><img src="browseRight/internet-explorer-logo.png"><h2>Internet Explorer</h2><p>A more beautiful web</p></li></a>
                </ul></div>
                </div></div>
            <?php
        }
    }
?>
于 2012-05-03T13:41:32.140 に答える
0

ブラウザを移動する必要があります。CSSとHTMLのどちらを表示するかは、関数に基づいているかどうかを確認してください。関数の外では役に立ちません。これにより、無駄に実行されることがなくなり、可変スコープを適切に管理できるようになります。

静的変数を使用すると、呼び出し間で値が失われることがなくなります。デフォルトでは、静的な値は最初の関数呼び出しでNULLになります(初期化しない限り)。

<?php
function browseRight($t)
{
    static $browserCheck;
    if (NULL === $browserCheck)
    {
        $browserCheck = 0;
        if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 6') !== false) { $browserCheck++; echo $browserCheck; }
        if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 7') !== false) { $browserCheck++; echo $browserCheck; }
    }

    if ($browserCheck === 0) return;

    if ($t == 'css')
    {
        ?>
        <link href='http://fonts.googleapis.com/css?family=Ubuntu|Oswald' rel='stylesheet' type='text/css'>
        <style type="text/css">
        #browseRight
        {
            min-width: 1000px;
            padding: 0px 100px 0px 100px;
            height: 440px;
            background: url(browseRight/bg.jpg) repeat;
            text-align: center;
        }

        #browseRight ul
        {
            width: 1000px;
        }

        #browseRight ul li
        {
            float: left;
            list-style-type: none;
            height: 310px;
            width: 180px;
            padding: 10px 10px 10px 10px;
        }

            #browseRight ul li:hover
            {
                background: #eee7d5;
            }

        #browseRight ul li img
        {
            height: 130px;
            clear: both;
        }

        #browseRight h2
        {
            font-family: 'Oswald', sans-serif;
            width: 100%;
            clear: both;
            font-size: 20px;
            padding: 20px 0px 0px 0px;
            color: #333333;
        }

        #browseRight ul li h2
        {
            font-family: 'Oswald', sans-serif;
            width: 100%;
            clear: both;
            font-size: 16px;
            color: #333333;
        }

        #browseRight p
        {
            font-family: 'Ubuntu', sans-serif;
            font-size: 12px;
            color: #333333;
            text-align: center;
            overflow: hidden;
        }

        #browseRight ul li p
        {
            height: 80px;
        }
        </style>
        <?php
    }

    if ($t == 'html')
    {
        ?>
            <div align="center"><div id="browseRight">
            <h2>Your Browser is out of date.</h2>
            <p>Does the website below look bad? if so it is because your browser is out of date. Fortunately you can fix this, it is as easy as updating your web browser. Below are the most popular web browsers around, visit thier websites and update to a new browser.</p>
            <div align="center"><ul>
                <a href="http://www.google.com/chrome/" target="_blank"><li><img src="browseRight/google-chrome-logo.png"><h2>Google Chrome</h2><p>Get a fast, free web browser</p></li></a>
                <a href="http://www.mozilla.org/en-US/" target="_blank"><li><img src="browseRight/mozilla-firefox-logo.png"><h2>Mozilla Firefox</h2><p>We are mozilla. Non-profit, for the good of the Web</p></li></a>
                <a href="http://www.apple.com/safari/" target="_blank"><li><img src="browseRight/safari-logo.png"><h2>Safari</h2><p>Opera Software has always strived to develop the fastest and technologically most advanced browsers.</p></li></a>
                <a href="http://www.opera.com/" target="_blank"><li><img src="browseRight/opera-logo.png"><h2>Opera</h2><p>It’s a browser. It’s a platform. It’s an open invitation to innovate. Safari sets the standard for the way browsing should be.</p></li></a>
                <a href="http://windows.microsoft.com/en-us/internet-explorer/products/ie/home" target="_blank"><li><img src="browseRight/internet-explorer-logo.png"><h2>Internet Explorer</h2><p>A more beautiful web</p></li></a>
            </ul></div>
            </div></div>
        <?php
    }
}
于 2012-05-03T13:47:40.187 に答える