dongxu6418 2018-03-22 05:37
浏览 342
已采纳

PHP:if(isset($ _ COOKIE ['name']))无效

I made an input form when the user types in a name. a isset($_COOKIE) checks if the made cookie already exists. if the cookie exists you'll get a message: Welcome back. if not you'll get the message: this is your first time here. but somehow i always get the message welcome back.

Here is my code:

<?php 
 if(!empty($_POST)) 
 {
    header("Location:form_data.php");
    setcookie('name',$_POST['name'], time() + (86400 * 30));
 }
 if(isset($_COOKIE['name']))
 {
   echo "Welcome back ".$_COOKIE['name'];
 }else
 {
    echo "hello ".$_COOKIE['name']; echo " this is your first time here.";
    setcookie('name',$_POST['name'], time() + (86400 * 30));
 }

?>

can someone help me with this problem?

  • 写回答

2条回答 默认 最新

  • duanmeng3573 2018-03-22 05:41
    关注

    setcookie() must be called before any output is sent to the browser. Otherwise it will cause an header error.

    In your code:

    Change from:

     echo "hello ".$_POST['name']; echo " this is your first time here.";
     setcookie('name',$_COOKIE['name'], time() + (86400 * 30));
    

    To:

      setcookie('name',$_POST['name'], time() + (86400 * 30));
      echo "hello ".$_POST['name']; echo " this is your first time here.";
    

    So no other code will be executed after header() redirection, you should append exit() to it:

    So also change:

    header("Location:form_data.php");
    setcookie('name',$_POST['name'], time() + (86400 * 30));
    

    To:

    setcookie('name',$_POST['name'], time() + (86400 * 30));
    header("Location:form_data.php"); exit();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部