我刚才吃了点苦头:我写了两篇贴士,一篇贴士写好发布后,我使用了浏览器的后退按钮,回退到post-new.php页面,这时页面表面上看跟Write Post的页面一模一样,但post_id已经产生,而且跟第一个贴士的id一样,结果第二个贴士保存时,就把第一个贴士给覆盖了。郁闷,只好重新输入。
所以我想提醒大家,尤其是WordPress的编辑,应该避免使用浏览器的后退功能。不过,WordPress也应该更贴心一点,post-new.php应该关闭cache,这样每次进入post-new.php,不论是用浏览器的后退或是点击Write -> Write Post,每次都更新post_id,这样就不会覆盖以前的贴士了。这时的post_id应该是临时的,所以不用担心多次进入post-new.php页面导致数据库保存了空内容的贴士。
我特别喜欢程序在处理完post data以后作一个redirect,这样也可以避免上述数据覆盖的问题,而且解决后退时浏览器提示页面过期、要重新发送数据种种的不友好问题。Header redirect已成我的习惯,这么做好处很大,迄今也没遇到一起redirect after post带负面影响的情景。不过,我发现有同样习惯的人不多。难道有很多不好的scenarios我没想到?