PHP IF语句与isset&;有问题!空的

PHP IF语句与isset&;有问题!空的,php,cookies,Php,Cookies,我今天被困在一堵混乱的墙前,我希望有人能帮助我:) 我有一个基本项目的数据库,在该表中有项目名称、项目编号、项目图像等属性。我可以毫无疑问地输入新项目/显示现有项目/等等 当我想编辑一个项目时,我的问题似乎出现了。我的想法是,我必须创建一个IF语句来确定是否上传了新文件,如果有,则在数据库中设置新文件名,如果没有,则在数据库中保留旧文件名 我已经玩了好几天了,我觉得我开始有点太超前了。我已经开始分解到基本问题,我被我的IF语句难住了,感觉它是倒退的?这有意义吗 示例: if (isset($_C

我今天被困在一堵混乱的墙前,我希望有人能帮助我:)

我有一个基本项目的数据库,在该表中有项目名称、项目编号、项目图像等属性。我可以毫无疑问地输入新项目/显示现有项目/等等

当我想编辑一个项目时,我的问题似乎出现了。我的想法是,我必须创建一个IF语句来确定是否上传了新文件,如果有,则在数据库中设置新文件名,如果没有,则在数据库中保留旧文件名

我已经玩了好几天了,我觉得我开始有点太超前了。我已经开始分解到基本问题,我被我的IF语句难住了,感觉它是倒退的?这有意义吗

示例:

if (isset($_COOKIE["OldProjectImage1"])){$OldProjectImage1 = $_COOKIE["OldProjectImage1"];}

if(isset($OldProjectImage1)){ 
echo 'Your Browser Cookies are not enabled';
} else if(isset($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES isset';
} else if(!empty($_FILES['ProjectImage1']['name'])){
echo 'Image1 FILES empty';
}
现在在搜索StackExchange时,我发现我们必须对COOKIE部分执行语句,而不是像上面那样对变量执行语句,但它也同样失败

if (isset($_COOKIE["OldProjectImage1"])){$OldProjectImage1 = $_COOKIE["OldProjectImage1"];}

if(!empty($_COOKIE['OldProjectImage1'])){ 
echo 'Your Browser Cookies are not enabled';
} else if(isset($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES isset';
} else if(!empty($_FILES['ProjectImage1']['name'])){
echo 'Image1 FILES empty';
}
我也试过用isset

if (isset($_COOKIE["OldProjectImage1"])){$OldProjectImage1 = $_COOKIE["OldProjectImage1"];}

if(isset($_COOKIE['OldProjectImage1'])){ 
echo 'Your Browser Cookies are not enabled';
} else if(isset($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES isset';
} else if(!empty($_FILES['ProjectImage1']['name'])){
echo 'Image1 FILES empty';
}
我用我的脚本尝试了这两种方法,它们的行为都很相似。也许我只是对整个过程感到困惑

当我在启用cookies和不启用cookies的情况下运行测试时,它似乎总是跳过IF语句的第一部分(同时使用isset和!empty)并跳到下一部分。然后,类似地,它感觉IF语句是向后的(如果这有任何意义的话)——如果我设置一个填充ProjectMage1的上传文件,我会得到“Image1 FILES empty”。如果我没有设置上传和提交表单的文件,我会得到“Image1文件集”

我想基本上是,用简单的英语

If cookie is empty then echo "Your Browser Cookies are not enabled"
Else if ProjectImage1 Name is set, echo "Image1 FILES isset"
Else if ProjectImage1 Name is Empty, echo "Image1 FILES empty"
但我觉得这是倒退?我理解错了吗

提前感谢您的回复

问题在于:

if(isset($_COOKIE['OldProjectImage1'])){ 
echo 'Your Browser Cookies are not enabled';
}
检查cookie是否存在,如果存在,则表示未启用cookie。有点奇怪。添加在婚礼之前。那么if语句和文本是正确的

我想,但我只能假设,你最终想要这个:

if (isset($_COOKIE["OldProjectImage1"])){
    // I believe the variable below can also be put between the else { and } down below
    $OldProjectImage1 = $_COOKIE["OldProjectImage1"];
}

if(!isset($_COOKIE['OldProjectImage1'])){ 
echo 'Your Browser Cookies are not enabled';
} else if(!isset($_FILES['ProjectImage1']['name'])){ 
echo 'Image1 FILES is not set';
} else if(empty($_FILES['ProjectImage1']['name'])){
echo 'Image1 FILES is empty';
}else {
    // upload file here
}

我想您要检查浏览器cookie是否已启用

Shiplu Mokaddim的答复:

session_start();
if (isset($_GET['check']) && $_GET['check'] == true) {
    if (isset($_COOKIE['foo']) && $_COOKIE['foo'] == 'bar') {
        // cookie is working
        // get back to our old page
        header("location: {$_SESSION['page']}");
    } else {
        // show the message "cookie is not working"
    }
} else {
    // save the referrer in session. if cookie works we can get back to it later.
    $_SESSION['page'] = $_SERVER['HTTP_REFERER'];
   // set a cookie to test
    setcookie('foo', 'bar', time() + 3600);
    // redirecting to the same page to check 
    header("location: {$_SERVER['PHP_SELF']}?check=true");
}
检测Javascript中的cookie

因此,结合您的代码和我自己的解释:

<?php 
    session_start();
    //check if a cookie test is started
    if (isset($_GET['check']) && $_GET['check'] == true) {
        //cookie test is started
        if (isset($_COOKIE['foo']) && $_COOKIE['foo'] == 'bar') {
            //cookie test success, go back to the previous page
            header("location: {$_SESSION['page']}");
        } else {
            //cookie test fail, echo the message and continue
            echo 'Your Browser Cookies are not enabled';
        }
    } else {
        //start cookie test if a cookie test wasn't done
        //check if a cookie test was done.
        if (!isset($_COOKIE['foo']) && $_COOKIE['foo'] == 'bar') {
            //start a cookie test if a cookie test wasn't done
            $_SESSION['page'] = $_SERVER['HTTP_REFERER'];
            setcookie('foo', 'bar', time() + 3600);
            header("location: {$_SERVER['PHP_SELF']}?check=true");
        }
    }
    if(!isset($_COOKIE['OldProjectImage1'])){ 
        echo "OldProjectImage1 doesn't exists in cookies.";
    } else if(!isset($_FILES['ProjectImage1']['name'])){ 
        echo "Image1 FILES is not set";
    } else if(empty($_FILES['ProjectImage1']['name'])){
        echo "Image1 FILES is empty";
    }
?>

您必须先设置cookie,然后才能读取它。但是cookie与数据库无关,与上传文件无关。所以实际上,我不明白你想做什么。试试看
if(!empty(
如果变量存在,则
empty()
将返回true,但为空。此时,如果变量包含某些内容,写入
!empty
将返回
true
(并因此传递if条件)。var\u dump($\u COOKIE[“oldprojectmage1]”)的输出是什么;抱歉,GolezTrol,我本应该对整个项目提供更多的见解,但是我觉得这与Phil Cross提到的IF语句直接相关是愚蠢的。我希望我可以标记一条评论作为答案-这正是我需要的Phil!谢谢你的解释!我对很多PHP还是新手,而且我已经被黑客入侵了将示例中的内容组合在一起,但没有意识到添加或删除!