PHP 怎麼判斷 一個php頁面 是從 <form>提交 來的,還是從地址欄直接輸入的?

來源:互聯網
上載者:User

就拿這個例子來說,這個 http://localhost/yb1/Home/curd/create 怎麼判斷是提交,還是在地址欄輸入的?

其實是這麼個意思:
我提交一次之後,就會到 http://localhost/yb1/Home/curd/create ,
http://localhost/yb1/Home/curd/create 中執行動作就執行了一次,

如果直接按F5重新整理,肯定會出錯,我就是想 按F5 的時候,知道是從 post 來的, 還是我直接從 這個頁面重新整理的..

回複內容:

就拿這個例子來說,這個 http://localhost/yb1/Home/curd/create 怎麼判斷是提交,還是在地址欄輸入的?

其實是這麼個意思:
我提交一次之後,就會到 http://localhost/yb1/Home/curd/create ,
http://localhost/yb1/Home/curd/create 中執行動作就執行了一次,

如果直接按F5重新整理,肯定會出錯,我就是想 按F5 的時候,知道是從 post 來的, 還是我直接從 這個頁面重新整理的..

通過referer來判斷;來源地址

覺得你可能是需要防止重複提交表單,可以加token實現。

在create這個頁面用$_SERVER['REQUEST_METHOD']來判斷,值為get說明是頁面重新整理來的,post說明是form提交的

可以在 POST 處理完成後,後端發起一個重新導向,重新導向到一個新的 URL 上,這樣使用者就沒有重新整理提交的機會了。

-- 完善一下

大概的虛擬碼可能是:

if ($_SERVER['REQUEST_METHOD'] != 'POST') {    // 處理非 POST 的邏輯,如報錯頁面或渲染表單頁面等等    return;}// 處理使用者提交的 POST 請求// 如建立使用者、添加文章等等// 處理完畢,重新導向請求,可以是由 POST 請求新建立的頁面,如使用者中心、文章詳情等// 甚至可以是 POST 請求發起的來源頁面,此時可以考慮處理下使用者輸入回填,或者給個成功或失敗的提示資訊header('Location: /path/to/location');

你點擊表單提交的時候記錄一個標記 提交完成刪除標記可以判斷 還有就是post和get這種類型也是可以判斷的 地址欄提交是屬於get

可以讀一遍地址欄資料來監測,但是這個方法指標不治本,還是可以通過其他途徑偽造post或者get的method。
加入隱藏欄位可能可以

你應該是用tp吧,tp可以

if(IS_POST){    echo 1;}else {    echo 0;}

如果你的表單提交方式為POST,那麼你再次按F5重新整理的時候,也是POST請求方式。
建議題主瞭解一下等冪請求

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.