为什么我的“if”语句总是被确定为TRUE?

时间:2013-01-05 20:24:33

标签: php forms button if-statement conditional-statements

我正在尝试编写调试脚本来测试我的cookie,但由于某种原因,它总是运行脚本删除所有cookie,即使条件不满足。这是我的代码 - 它都是html和php:

<form id="cookietest" name="CookieTest" method="post">
    <input type="submit" name="createcookie" value="Create cookie" />
    <input type="submit" name="removecookie" value="Remove cookie" />
    <input type="submit" name="removeallcookies" value="Remove all cookies" />
</form>
<?php
    $Domain = thedomain.com
    if($_POST['createcookie'] == TRUE)
    {
        $expire = 60*60*24*14 + time();
        setcookie('TestCookie', 'IExist', $expire, '/', $Domain);
        echo 'TestCookie should have been created. See its value below.<br />';
    }
    if($_POST['removecookie'] == TRUE)
    {
        $expire = time() - 60*60*24*14;
        setcookie('TestCookie', 'IExist', $expire, '/', $Domain);
        echo 'TestCookie should have been deleted. See its value below.<br />';
    }
    if($_POST['removeallcookies'] == TRUE);
    {
        $expire = time() - 60*60*24*14;
        setcookie('TestCookie', 'IExist', $expire, '/', $Domain);
        setcookie('Cookie1', '', $expire, '/', $Domain); // destroys persistent cookie
        setcookie('Cookie2', '', $expire, '/', $Domain); // destroys persistent cookie
        setcookie('Cookie3', '', $expire, '/', $Domain); // destroys persistent cookie
        echo 'All specified cookies should have been removed. <br />';
    }
    if($_POST['createcookie'] == FALSE && $_POST['removecookie'] == FALSE)
    {
        echo 'Neither the cookie create nor cookie remove button was clicked.<br />';
    }
    echo "The contents of 'TestCookie':";
    echo "${_COOKIE['TestCookie']}<br />";
    echo "The cookie array<br />";
    echo "<pre>";
        print_r($_COOKIE);
    echo "</pre>";
?>

3 个答案:

答案 0 :(得分:5)

如果条件导致你的if块未被执行,那么你已经添加了semi-colon

if($_POST['removeallcookies'] == TRUE);  //<<< semi-colon 

答案 1 :(得分:3)

我认为您应该使用 isset 而不是仅使用==

if(isset($_POST['createcookie']) )
{
}

答案 2 :(得分:0)

正如@Cthulhu所说的相反使用:

检查是否已设置:

if(isset($_POST[index])){


// do something

}

检查未设置:

if(!isset($_POST[index])){


// do something

}