将php变量转换为会话变量

时间:2012-05-06 12:35:51

标签: php session-state session-variables

我在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 } ?>

输出 enter image description here

尽管如此,布局宽度属于小类 (您的浏览器宽度为:872,当前布局变量值为$) ,它仍然是显示它应该只显示的位是布局 - 这个类别是正常的 (正常是会话中$ layout的值)

通常情况下,$layout文件中的if statement会覆盖index.php的值。

我在寻找什么?

layoutType一起,我还希望根据$layout中的逻辑在会话中设置core.php的值。这样我就可以在网站上多次if statements使用它。

这非常重要,因为这些是我的布局中的varioys小部件/内容,我想根据访问者的设备加载/不加载。因此,几乎所有的widhe都将被包裹成if statement

请帮助。

1 个答案:

答案 0 :(得分:4)

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

评估为true,因为它是一项作业(改为使用=====)。您可以在the PHP manual中找到有关比较运算符的更多信息。