dongxu6418 2018-03-22 13: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 13: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条)

报告相同问题?

悬赏问题

  • ¥20 蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏