调试帮助 - PHP包括导致页面刷新

时间:2011-02-17 22:53:40

标签: php debugging refresh

我有一个非常奇怪的问题,我似乎无法追查。任何有关调试的帮助都会 非常 赞赏!

让我用场景来描述这个。

场景1(不正确

  1. PHP呼叫CAS服务器(使用curl_exec)并获取用户信息
  2. PHP检查数据库以确保从CAS返回的用户存在并失败(这是正确的,我正在测试一个不存在的用户)并将错误消息设置为“User not found”(这是正确的错误消息)
  3. PHP包含top.php文件
  4. 该页面随机刷新或重定向到自身并开始处理...这是我无法弄清楚的。
  5. PHP呼叫CAS服务器(使用curl_exec)并收到错误,因为CAS票证已被使用,设置“CAS拒绝您的凭据”的新错误消息(不是正确的)
  6. PHP包含top.php文件,第二次刷新/重定向
  7. PHP打印出“CAS拒绝了您的凭据”(这是不正确的)
  8. 情景2(半正确

    1. PHP呼叫CAS服务器(使用curl_exec)并获取用户信息
    2. PHP检查数据库以确保从CAS返回的用户存在并失败(再次,这是正确的,我仍在测试不存在的用户)并将错误消息设置为“User not found” (这是正确的错误消息)
    3. 我跳过top.php,因为它已被注释掉,并打印出“找不到用户”(这是正确的错误消息)
    4. 调试

      所以,我已经检查,仔细检查并三重检查top.php不使用includerequireredirect(我们编写的打印函数) <meta>重定向标记,然后调用exit;),或实际刷新页面的任何其他内容。

      实际上,我已经输入了一个die语句来打印出错误消息。在top.php的一行中,它正确打印出来。当我将该语句向下移动一行(在HTML </div>标记下方)时,它会刷新页面并输出不正确的错误消息。任何地方都没有任何PHP标签。

      据我所知,这意味着问题实际上并不在top.php文件中,因为打印</div>不应该导致页面刷新/重定向。

      如何从这里进行调试的任何想法都会非常有用。清除缓存/缓冲区?如何更好地跟踪PHP正在做什么?

      注意:没有输出PHP错误。

      更新:是的,我找到了罪魁祸首!我没有调用include 'top.php';而只是复制/粘贴login.php内的代码,而是提出了相同的问题。所以我开始删除行,直到找到导致问题的行:

      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      

      所以,完全转换问题,因为我首先没有太多问题:有人可以解释为什么这会导致页面刷新,为什么只是有时候(即它不会持续)刷新页面?

1 个答案:

答案 0 :(得分:1)

如果你有firefox抓住自己的livehttpheaders副本。将其打开并完成方案1.跟踪http请求和响应标头以查看其中发生的情况。它应该为您提供有关浏览器和服务器之间发生的事情的更多信息。