如果输入验证在{{1}上失败,我只需要使用会话来保持从edit.php
(1)到post.php
(2)到edit.php
(3)的表单输入}},以便我的用户无需在save_post
(3)处重新填写表单edit.php
(1),因为edit.php
(2)不会重新发布到post.php
(3)。有许多方法可以通过此隧道暂时生成数据:
edit.php
变量可能对查询字符串来说太多了等。
我不会使用会话登录(因为我正在使用WordPress,我会让WordPress处理这个。)从网上搜索,我在$_POST
中插入了以下内容:
functions.php
我只需要知道我是否做对了。
我特别关注我也关注我读到的关于取消设置cookie及其复杂性的内容 - 我是否需要这样做?我不使用任何cookie,我只使用两个会话变量:
/*
* manage sessions
*/
// http://wblinks.com/notes/secure-session-management-tips
// http://devondev.com/2012/02/03/using-the-php-session-in-wordpress/
// http://en.wikipedia.org/wiki/Session_fixation
// http://www.php.net/manual/en/function.session-regenerate-id.php
if (is_admin()) add_action('init', 'empl_sesh_start', 1);
add_action('wp_login', 'empl_sesh_cleanup');
add_action('wp_logout', 'empl_sesh_cleanup');
function empl_sesh_start() {
session_start();
// check if loaded session is server-generated
if (!isset($_SESSION['IS_SERVER_TRUSTED']))
session_regenerate_id(true); // if not, regenerate id and clean-up previous session files
// regenerate id for every request
session_regenerate_id();
$_SESSION['IS_SERVER_TRUSTED'] = true; // set flag
}
// cleanup
function empl_sesh_cleanup() {
session_start(); // needed for the rest of this function to work
$_SESSION = array(); // cleanup session variables
session_regenerate_id(true); // regenerate id and clean-up previous session files
session_destroy();
}
我在这里发布了这个而不是在wordpress.stackexchange.com上(我认为)这不是一个真正的WordPress问题,而是更多的PHP会话最佳实践。
解决方法:我最终放弃了整个会话,并实施了碰撞解决(至少对我的用例来说)1秒到期的瞬态。谢谢@Robbie
答案 0 :(得分:2)
您不应该需要会话来从表单发布,甚至不需要在wordpress中发布。
您的脚本/插件应该是可读的。
如果您使用向导(多页表单)方法,则可以使用会话。这样,表格会显示用户输入的内容和错误。
但是,要回答你的问题,你的addactions()可能就是你想要的,但功能却很激进。
超时示例:
if ($_SESSION['empl_form_expires'] > time()) { // Also add user agent chack or something
$_SESSION['empl_form_inputs'] = array(); // Clear values
} else {
$_SESSION['empl_form_expires'] = time() + 600; // Keep the time running
}