一般我們在PHP執行要轉跳頁面,大部分我們都是使用 header("Location:$url" )的方式。可以直接把頁面轉到特定你所指定的URL。比較少人用 header("Refresh: 0; url=$url")。這兩行都可以做到同樣轉跳網址的功能。但是還是有些微差異。
這邊我分別說明一下。當我透過A頁面,送出http://titan.test.com.tw/B.php?A=10,到B.php處理,如果使用 header("Location:c.php" ),頁面在執行B.php之後就會馬上導到C.php,所以使用者的瀏覽器中,只會看到A.php與C.php在歷史中。當你導到C.php之後,如果你按上一頁。網頁會直接跳到A.php,瀏覽器並不會知道B的存在。
如果你使用header("Refresh: 0; url=c.php"),瀏覽器會在B.php停頓,然後在導到C.php,但是這個方法還有一個好處,可以設定N秒之後在進行轉跳頁面。只要修改Refresh後面的數字,就可以。如果我要停頓3秒之後在轉頁面,那就是header("Refresh: 3; url=c.php")。
我在實做時,有一個狀況,如果當C.php是不存在的時後,如果選擇header("Location:c.php" ),由頁面A送出http://titan.test.com.tw/B.php?A=10的時後,因為C.php的頁面不存在。使用者的瀏覽器的網址列就會停留在http://titan.test.com.tw/B.php?A=10,但是頁面內容卻是找不到頁面的資訊。下圖只是讓大家知道我所指的瀏覽器的網址列是什麼。變成A.php送什麼東西到B.php,只要C.php 不存在,就所有送過來的資訊都會被一覽無遺。
但是如果使用header("Refresh: 0; url=c.php"),使用者在瀏覽器的網址列就會停留在c.php,雖然內容頁也是找不到網頁。
至於如何運用就看個人了,因為我會找這個資訊是因為,我們公司要讓使用者丟資料到我們的公司的頁面,處理之後,要再丟到別的公司的頁面,之後別的公司在導回來我們的頁面。因為不想讓使用者直接看到別家公司丟到我們公司的資料,所以去查了這方面資訊。

不好意思,個人在測試的時候並沒有這個問題 A.php send GET => b.php header => c.php 若 c.php 不在,那一樣會被跳轉過去 example http://kerash.net16.net/demo/a.php b 是使用 refresh , d 是使用 location 若使用 refresh 時,跳轉速度不快我仍然可以讓瀏覽器停止時顯示網頁的內容 d 則是沒有機會停止 不知道這部分跟您的測試有哪邊不同呢?
沒有不同..我要表達的是.如果從 A主機的A.php => B主機的B.php....B.php運算完再丟回來A 主機的C.php之後,還有導到D.php,如果你在C.php 是用refresh的方法,就算D.php不存在,在使用者的URL..D.php,反之如果你在C.php用的是location,當D頁面不存在的時後,使用者就會知道B.php 送過來給C.php 有什麼樣的資訊。 應該說我少寫了一個步驟! 一般來說我是要故意藏匿B.php 送到 C.php的資訊。
謝謝回覆 我在測試看看~
喔 zzz
感謝您提供這個小小的教學內容,小弟學習了。
Refresh就等於在html中寫http-equiv=Refresh相同的原理。