我正在使用会话在表单上发送变量以安全地删除后端上的记录。一切正常:
然而,在重定向之后,除非我在删除之前刷新页面,否则这不起作用。即使在重定向之后再次创建会话(我已经检查过它工作正常),当我再次提交删除表单时,会话不会持久保存到处理表单的文件。
有没有人知道可能会发生什么?
我如何设置会话:
$token = SessionManager::setTokenForForm('delete-' . $row->id, $values);
echo '<form method="post" action="' . FrontendConstants::$BASE_URL . FrontendConstants::$DELETE_RECORD_URL . '">';
echo ' <input type="hidden" name="token" value="' . $token . '"/>';
echo ' <input type="hidden" name="redirect_url" value="' . $fullRedirectUrl . '"/>';
echo ' <input type="hidden" name="id" value="' . $row->id . '"/>';
echo ' <input type="submit" class="btn btn-default" value="Delete"/>';
echo ' </form>';
函数setTokenForForm:
public static function setTokenForForm($form, $values = null) {
$token = uniqid();
if (!isset($_SESSION)) {
session_start();
}
$session = array();
$session['token'] = $token;
if ($values != null) {
$session['values'] = $values;
} else {
$session['values'] = array();
}
$_SESSION[$form] = $session;
return $token;
}
在delete.php上,这是表单调用的文件,在查阅会话并删除项目后,我重定向到上一页:
header('Location: ' . $redirect_url);