我有一個很奇怪的問題,我似乎無法追查。任何關於調試的幫助將是大大讚賞!調試幫助 - PHP包括導致頁面刷新
讓我來描述這個使用場景。
情景1(不正確)
- PHP召喚出一個CAS服務器(使用
curl_exec
),並獲取用戶信息回 - PHP檢查數據庫,以保證用戶從返回CAS存在並失敗(這是正確的,我正在測試一個不存在的用戶),並將錯誤消息設置爲「未找到用戶」(這是正確的錯誤消息)
- PHP inc ludes的
top.php
文件 - 頁面隨機刷新或重定向到自己,並啓動過程...這是我無法弄清楚。
- PHP召喚出到CAS服務器(使用
curl_exec
),並且由於CAS票已經被用來接收到錯誤,創下了一個新的錯誤消息「CAS駁回您的憑據」(這是不正確的) - PHP包括
top.php
文件和不刷新/重定向第二次 - PHP打印出「CAS駁回您的憑據」(這是不正確的)
方案2(半正確)
- PHP召喚出一個CAS服務器(使用
curl_exec
),並獲取用戶信息回 - PHP檢查數據庫,以保證用戶從CAS返回存在並且失敗(再次,這是正確的,我仍在測試不存在的用戶)並將錯誤消息設置爲「用戶未找到」(這是正確的錯誤消息)
- 我跳過
top.php
因爲它被註釋掉了,打印出來「用戶未找到」(這是正確的錯誤消息)
調試
所以,我已經檢查,反覆檢查和三重檢查了top.php
不使用include
,require
,redirect
(我們寫的一個函數打印一個<meta>
重定向標記,然後調用exit;
),或者其他實際刷新頁面的東西。
事實上,我已經輸入了一條die
語句,該語句打印出錯誤消息。在top.php
的一行上,它可以正確打印。當我將該語句向下移動一行時(HTML </div>
標籤下),它刷新頁面並打印不正確的錯誤消息。甚至沒有任何關於PHP標籤的地方。
據我所知,這意味着這個問題實際上不是在top.php
文件,因爲打印出</div>
不應導致頁面刷新/重定向。
關於如何從這裏進行調試的任何想法都將非常有幫助。清除緩存/緩存?如何更好地跟蹤PHP正在做什麼?
注意:沒有輸出PHP錯誤。
更新:耶,我找到了罪魁禍首!我只是複製/粘貼login.php
中的代碼,而不是調用include 'top.php';
,它提出了同樣的問題。於是,我開始刪除線,直到我發現造成問題的原因之一:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
所以,切換問題完全因爲我沒有太多擺在首位的一個問題:有人可以解釋爲什麼這會導致頁面刷新,爲什麼它只是有時(即它不會不斷刷新頁面)?
你可以發佈你的PHP文件嗎? – Mauro 2011-02-17 22:58:30
您實際上看到瀏覽器正在加載新頁面嗎?你在Apache的訪問日誌中看到新的第二個請求嗎? – 2011-02-17 22:58:59