在PHP中使用html localStorage

时间:2013-08-07 13:06:26

标签: php html local-storage

我的主要问题是,为什么以下代码打印出来:

false

boolean value true

我希望变量“boolean”值也是假的

我想在javascript中存储一些数据,然后在PHP中使用它,它甚至可能吗?

<!doctype html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Storage test?</title>
</head>
<body>
    <script type='text/javascript'>
        localStorage.save = 'false';
    </script>
    <?php
        $boolean = "<script type='text/javascript'>" .
                   "document.write(localStorage.save);".
                   "</script>";

        echo $boolean;

        if($boolean = 'true'){
            echo "<p>boolean value true</p>";   
        } else {
            echo "<p>boolean value false</p>";  
        }
    ?>

</body>

5 个答案:

答案 0 :(得分:5)

if($boolean = 'true'){ <-- this line
        echo "<p>boolean value true</p>";   
    } else {
        echo "<p>boolean value false</p>";  
    }

您没有将$ boolean变量与'true'进行比较,而是将值分配为'true'。

尝试两个等号。

我甚至不确定你在做什么是可能的。但等号肯定是个问题。

答案 1 :(得分:4)

就像上面说的那样,你不是在比较,而是因为=声明中的单一同等对象if而进行分配。

除此之外,您无法直接从PHP读取localStorage。因此,即使你有一个双等于==进行比较,它仍然会超出boolean value true

这是因为您在string内放置了$Boolean

$boolean = "<script type='text/javascript'>document.write(localStorage.save);</script?";

您没有评估任何类似的JavaScript代码。

当一个PHP变量包含某些东西时,它就是一个字符串或数字等。它总是在true语句中评估为if。除非值为false0null

要比较实际布尔值,您必须使用显式比较。你用三个等号===来做到这一点。

if ( $someBool === true )
{ // do stuff }

但不,你不能直接从JS到PHP获取localStorage值。您需要一个Ajax调用将它传递回PHP。而且我认为这是你最终要做的事情。

答案 2 :(得分:0)

我想这是if你做的

中的拼写错误
if($boolean == 'true'){
    ....
}

答案 3 :(得分:0)

要分配一个=,比较可以是=====

此示例显示“Hello”:

<?php
function getData()
{
    return 'Hello';
}

if ($data = getData()) {
    echo $data;
}

此示例显示“23”:

<?php
function getData()
{
    return 'Hello';
}

$data = getData()

if ($data === 'hello') {
    echo 1;
}

if ($data == 'hello') {
    echo 2;
}

if ($data === 'Hello') {
    echo 3;
}

答案 4 :(得分:0)

使用Scanner只会为该值分配$ boolean并返回true,因为它不是=false0。尝试使用null==。 :)