繁体   English   中英

调试帮助-PHP包含导致页面刷新的信息

[英]Debugging help - PHP include causes page refresh

我有一个非常奇怪的问题,我似乎无法追踪。 至于调试任何帮助将不胜感激!

让我使用场景对此进行描述。

方案1( 不正确

  1. PHP调用CAS服务器(使用curl_exec )并返回用户信息
  2. PHP检查数据库以确保从CAS返回的用户存在并且失败(这是正确的,我正在测试不存在的用户),并将错误消息设置为“找不到用户”(这是正确的错误消息)
  3. PHP包含top.php文件
  4. 该页面会随机刷新或重定向到其自身,然后重新开始该过程……这是我不知道的。
  5. PHP调用了CAS服务器(使用curl_exec ),并且由于已经使用了CAS票证而收到错误,并设置了新的错误消息“ CAS拒绝了您的凭据”(不正确)
  6. PHP包含top.php文件, 并且第二次刷新/重定向
  7. PHP打印“ CAS拒绝您的凭据”(不正确)

方案2( 半正确

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

调试

因此,我已经检查,仔细检查和三重检查了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" />

因此,由于我一开始就没有太多问题,所以完全切换问题: 有人可以解释一下为什么这会导致页面刷新吗,为什么只在某些时候(即,它不会不断刷新页面)?

如果您使用的是Firefox,则可以自己获取livehttpheaders的副本。 将其打开并进行场景1。跟踪http请求和响应标头以查看发生了什么。 它应该为您提供有关浏览器和服务器之间正在发生的事情的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM