php - 多维 $_SESSION 数组为 NULL
问题描述
运行 PHP 7.x
我以这种方式使用了一些 $_SESSION 数组:
$_SESSION['form_data']['form_field'] = $data;
每个“form_data”有多个“form_field”。
此 $_SESSION 仅在表单数据已更改时设置。如果 $_SESSION 为空,我如何将它设置为 NULL,而不必分别检查每个?
我试过 $_SESSION['form_data'] = NULL; 但是,这似乎不起作用。
如果 $_SESSION['form_data']['form_field'] 在页面上没有特别设置,它会引发警告。
我知道我可以毫无问题地隐藏警告,但我宁愿找出正确的方法来做到这一点。或者,隐藏警告的正确方法是什么?
谢谢,瑞克
+++++++++++++++++++++++++++++++++编辑添加添加代码++++++++++++ +++++++++++++++++++++
//Displays original data from database unless new data was submitted in form
function display_form_value($orig_data = NULL, $new_data = NULL) {
if(trim($new_data) != NULL) {
return $new_data;
} else {
return $orig_data;
}
}
在我的表单处理页面上:
$defineTopLink = $_POST['defineTopLinkFollow_1']; //Add'l security removed for clarity
if($defineTopLink != $define['TopLink']) {
//$define['TopLink'] is a value pulled from the database
$_SESSION['form_data']['defineTopLink'] = $defineTopLink; }
else {
$_SESSION['form_data']['defineTopLink'] = "";
}
在表单页面上
<input
id="defineTopLink_1"
name="defineTopLink_1"
type="text"
value="<?= display_form_value($define['TopLink'], $_SESSION['form_data']['defineTopLink']) ?>" />
解决方案
隐藏警告或错误不是一个好习惯。您可能需要做的可能是if(isset($_SESSION['form_data']['form_field']))
在实际访问它之前使用它。
即使您对字段的描述并不完全清楚,如果您执行以下操作,您将得到您想要的
function getFormField($formData, $formField){
if(isset($_SESSION[$formData][$formField]) {
return $_SESSION[$formData][$formField];
}
}
...
//somewhere else in your code
$formData = 'some_form_data';
$formField = 'some_field_name'
$formFieldValue = getFormField(formData,formField)
推荐阅读
- sharepoint-online - 如果当前站点的底层 o365 组是公共的还是私有的,如何签入 sharepoint spfx 组件?
- r - 如何从多个文本中识别和检索多个模式?
- python - 模拟类为所有属性返回相同的值
- c++ - 制作马赛克图像(位图格式)
- authentication - 使用 Google Cloud Database (Bigtable) 的 Web 应用身份验证/安全最佳实践
- r - 从R函数中的文本文件导入方程
- postgresql - postgres逻辑复制中可以将多少数据复制到发布者
- r - 如何从 R 中的列表中提取子元素旁边的元素?
- android - 带有空响应正文的 Twitter oauth/request_token 200 代码
- c++ - 将接口对象传递给构造函数c++?