一般我們在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,雖然內容頁也是找不到網頁。

至於如何運用就看個人了,因為我會找這個資訊是因為,我們公司要讓使用者丟資料到我們的公司的頁面,處理之後,要再丟到別的公司的頁面,之後別的公司在導回來我們的頁面。因為不想讓使用者直接看到別家公司丟到我們公司的資料,所以去查了這方面資訊。

創作者介紹

四處流浪的阿基。I am Vagrant Walker

阿基 發表在 痞客邦 PIXNET 留言(5) 人氣()


留言列表 (5)

發表留言
  • kerash
  • 不好意思,個人在測試的時候並沒有這個問題
    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的資訊。

    阿基 於 2012/04/24 15:47 回覆

  • kerash
  • 謝謝回覆
    我在測試看看~
  • 訪客

  • zzz
  • Cian
  • 感謝您提供這個小小的教學內容,小弟學習了。
  • 網頁設計
  • Refresh就等於在html中寫http-equiv=Refresh相同的原理。
找更多相關文章與討論

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼