在PHP中设置文件上传的cookie

时间:2009-10-04 05:28:15

标签: php

我在upload.php中有一个php上传处理程序,在那里,我必须关注

<? setcookie("test",100,time()+3600); ?>

但是,当我检查设置的cookie时,我根本看不到任何“测试”cookie。

你能帮我设一个上传文件的cookie吗?为什么这个上传脚本与浏览器访问的任何普通脚本有什么不同?

这是我的代码

<?php           
 if (!empty($_FILES)) {            
    if(move_uploaded_file($tempFile,$targetFile))
        {               
                setcookie("targetPath",$targetPath,time() + 3600,'/');
                print $_COOKIE['targetPath']; // prints fine here
                echo 1;
        }
        else
                echo -1;} 
else
{
//print_r($_COOKIE);
print "start cookie >> ";
print $_COOKIE['targetPath']; // does not print when I call upload.php standalone
print " << end cookie";

}
?>

4 个答案:

答案 0 :(得分:2)

这可能会或可能不会解决您的问题,但我认为我应该指出:

  1. 需要在任何输出之前调用setcookie,除非您使用输出缓冲。
  2. move_uploaded_file的第一个参数应该类似于$_FILES["pictures"]["tmp_name"][0]
  3. 使用setcookie设置的Cookie在下一页加载之前不会显示。是的,这是PHP手册中的documented

      

    一旦设置了cookie,他们就会   可以在下一页加载上访问   使用$ _COOKIE或$ HTTP_COOKIE_VARS   阵列。

    这意味着这段代码:

    setcookie(“targetPath”,$ targetPath,time()+ 3600,'/'); print $ _COOKIE ['targetPath']; //在这里打印好

    应该打印cookie的值。

  4. 如果setcookie失败,则返回false。您可能想要检查该返回值。

答案 1 :(得分:0)

尝试指定域名?

<?php    
setcookie( 'test', 100, time()+3600, '/', '.sitename.com' );

您是否使用$_COOKIE['test']

获取它?

PS - 你不应该使用短标签。将<?替换为<?php

答案 2 :(得分:0)

您是否在检查是否在upload.php中设置了Cookie,即。您设置相同的脚本?如果是这样,我不希望它们被设定。客户端在收到upload.php。

中的cookie后,将在下一个HTTP请求中发送cookie

答案 3 :(得分:0)

setcookie有“path”参数。如果未指定:“默认值是设置cookie的当前目录。” 因此,您很可能尝试为www.youdomain.com/actions/upload.php等设置cookie,在这种情况下,将为/ actions / path设置cookie。

同时检查调用setcookie是否已完成 >脚本中的任何输出