【问题标题】:How to pass info from one page to another with cookies using php [duplicate]如何使用 php 将信息从一个页面传递到另一个页面 [重复]
【发布时间】:2012-11-02 09:27:09
【问题描述】:

可能重复:
“Warning: Headers already sent” in PHP

<?php
 session_start(); 

 $_SESSION['page'] = "test.php";

 echo "Page to load in iframe = ". $_SESSION['page']; 

 setcookie('PagetoShow', $_SESSION); 

 if(isset($_COOKIE['PagetoShow']))
$Page = $_COOKIE['PagetoShow']; 
echo "Page to load in iframe = ". $Page;
 else
$Page="welcome.php"

 ?>

我猜这是一个语法错误,但我对 php 知之甚少或一无所知。怎么了?

【问题讨论】:

    标签: php cookies setcookie


    【解决方案1】:
    <?php
     session_start(); 
    
     $_SESSION['page'] = "test.php";
    

    很好,至少你不要忘记在设置会话密钥之前运行session_start()

     echo "Page to load in iframe = ". $_SESSION['page']; 
    
     setcookie('PagetoShow', $_SESSION); 
    

    这是有问题的。 Cookie 在标头字段中发送,但您已经通过回显某些内容来刷新标头。

     if(isset($_COOKIE['PagetoShow']))
    $Page = $_COOKIE['PagetoShow']; 
    echo "Page to load in iframe = ". $Page;
     else
    $Page="welcome.php"
    

    这里有语法错误,需要给if-body加括号:

    if(isset($_COOKIE['PagetoShow'])) {
        $Page = $_COOKIE['PagetoShow']; 
        echo "Page to load in iframe = ". $Page;
    }
    

    一些文档:

    【讨论】:

      【解决方案2】:

      setcookie 的第二个参数必须是一个字符串 - 您传递的是一个数组 ($_SESSION)。你可以这样做:

       $_SESSION['page'] = "test.php"; 
      
       setcookie('PagetoShow', $_SESSION['page']); // <-- this is the only change needed
      
       if(isset($_COOKIE['PagetoShow']))
         $Page = $_COOKIE['PagetoShow']; 
         echo "Page to load in iframe = ". $Page;
       else
         $Page="welcome.php"
      

      【讨论】:

      • 不管是字符串,还是设置cookie(page=Array)。问题是已经打印了一些东西,因此无法发送 cookie 标头。
      • 哦,有道理。我已经更新了我的答案以修复“无法发送标头”错误。
      • 即使他在那个页面上调用了 setcookie,cookie 在下一个页面请求之前是不可用的。我认为这可能是他的困惑。
      • @Kyle - 好点 - 我想我假设它是单独的请求(首先使用 cookie 的原因)
      • 感谢您提供有关 cookie 在下一页请求之前不可用的信息,因为我将所有内容放在一个页面上只是为了测试目的。但它仍然不起作用,我收到 500 错误消息
      猜你喜欢
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多