Back button re-submit form data ($_POST)

江枫思渺然 提交于 2019-11-26 20:43:31

If you are submitting a for with search parameters, you are trying to get some data, not modify some.

So, you should use the HTTP GET method, and not POST : POST should be used when you intend to create/modify data, and GET should be used when you intend to fetch some data.


Or, if you have some create/modify operation that has to be done :

  • The form first POSTs to a first page
    • That page does some operations (like writing something to a database)
    • And then redirects to another page, using a Location HTTP header.
  • It's that last page, that's queries by the browser using a GET requests, that displays the data fetched from the parameters received in the URL.

See the Post/Redirect/Get page on wikipedia, about this.

Send a Location header in the script you POSTed to, pointing to the page that comes after.

Don't use POST for search. Search can safely be done with GET since it won't alter anything.

This applies to PHP and IE8.

Not only must you set cacheing to private, but you must remove the 4 cacheing headers and this can only be done with PHP 5.3. In PHP 5.2 you can only set the 4 headers to blank values if using the Zend Framework's setHeader() method. For some reason is not sufficient on IE8 to set the 4 header values to empty values. Here's the code for PHP 5.3:

    header_remove("Expires");     header_remove("Cache-Control");     header_remove("Pragma");     header_remove("Last-Modified"); 

You can use session to do this.

eg.

$_SESSION['name'] = $_POST['name'];

Remeber to unset your variables after the process is completed to optimize memory usage.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!