0

に複数回使用するためにPHPで変数を設定する際に問題が発生しましたif statements

私のレイアウトには多くのファイルがありますが、これらはこの問題に関連する3つのファイルです。

session.php(実際には、javascriptファイルに含まれている訪問者のブラウザー幅を決定するJavaScript関数であり、これをajax呼び出しで呼び出します。ただし、これはこの問題とは無関係であるため、混乱や多すぎることを避けるためです。このページのコード私はそのファイルを避けています。)

<?php
    session_start();
    $_SESSION['layoutType'] = $_REQUEST['layoutType'];  
?>

core.php

<?php
    session_start();
    if (empty($_SESSION['layoutType'])) {
        echo '<script type="text/javascript"> var session=false; var layoutType;</script>';
    } else {
        echo '<script type="text/javascript"> var session=true; var layoutType=' . $_SESSION['layoutType'] . ';</script>';
    }

    $layout = 'normal';

    if (!empty($_SESSION['layoutType'])) {
       $layoutType = $_SESSION['layoutType'];
       if ( $layoutType <= 219 ) {
          $layout = 'minimal';
       } else if ($layoutType >= 220 && $layoutType <= 1024 ) {
          $layout = 'small';
       } else {
          $layout = 'normal';
       }
    $_SESSION['layout'] = $layout;

    }

index.php

<?php
include ('core/core.php');


// Function to load all the JavaScript files

getJS();

echo '<div>Your browser width is: ' . $_SESSION['layoutType'] . ' and Value of $layout variable currently is <strong>'.$layout.'</strong></div>'; 

if ($layout = 'normal') { ?>

    <?php echo '<strong>' . $layout . '</strong> is the value of $layout in session'; ?>

    <div id="sidebar">
    <p>Widgets go here</p>
    </div>

<?php } ?>

出力 ここに画像の説明を入力してください

レイアウト幅は小さいカテゴリに分類されますが(ブラウザの幅は872で、現在$ layout変数の値は小さいです)、layout-widthカテゴリが正常である場合にのみ表示されるビットが表示されます( normalは、セッション内の$ layoutの値です)

通常、ここで発生しているのは、の値がファイル内ので$layout上書きされていることです。if statementindex.php

私が探しているものは?

とともに、のロジックに基づいてセッションでlayoutTypeの値を設定する必要があります。いろいろなサイトで何度も使えるように。$layoutcore.phpif statements

これらは、訪問者のデバイスに応じてロード/非ロードしたいレイアウト内のさまざまなウィジェット/コンテンツであるため、これは非常に重要です。したがって、ほとんどすべてのウィデットはにラップされますif statement

親切に助けてください。

4

1 に答える 1

4
if ($layout = 'normal') { ?>

==割り当て(使用または===代わり)であるため、trueと評価されます。比較演算子の詳細については、PHPのマニュアルを参照してください。

于 2012-05-06T12:41:14.567 に答える