问题描述
|
我正在填写一个小的联系表格,并且对提供
$_POST
的默认值有疑问。我询问默认值的原因是因为在表单中,我具有如下字段:
<input type=\"text\" name=\"fullname\" value=\"<?php echo $_POST[\'fullname\']; ?>\" />
显然,如果我不允许清除数据,我想保留提交的值。第一次加载页面时,这会产生错误,因为ѭ2s没有值。
对于我的问题:像在下一个代码示例中所做的那样,我是否应该为$_POST
数组提供默认值?
$_POST += array(
\'fullname\' = \'\',);
如果$_POST[\'fullname\']
已经存在,它将被保留-如果不存在,它将在数组中创建。这样,在加载表单时,空白值将显示在输入字段中。
不用担心
我清理我的数据
感谢您的帮助
解决方法
即使这样做,也请将该数据放入容器中,不要修改超全局变量。创建将包含您的数据的类-然后您将使接口进行清理,操作并以适当的方式获取它。从$ _POST导入数据,然后验证(如果所有必需的值都在其中)。
至于代码:
<?php
class PostData
{
private $data;
public function __construct(array $data)
{
$this->data = is_array($data)
? $data
: array();
}
public function set($key,$value)
{
$this->data[$key] = $value;
}
public function get($key,$default,$escaping)
{
if(isset($this->data[$key]))
{
switch($escaping)
{
case \'htmlspecialchars\':
{
return htmlspecialchars($this->data[$key]);
break;
}
case \'mysql_real_escape_string\':
{
return mysql_real_escape_string($this->data[$key]);
break;
}
// and so on,your invention goes here
default:
{
return $this->data[$key];
}
}
}
else
{
return $default;
}
}
}
$postData = new PostData($_POST);
, 创建函数:
function displayValue($field) {
if(isset($_POST[$field])) {
echo \'value=\"\' . htmlentities($_POST[$field]) . \'\"\';
}
}
然后像这样使用:
<input type=\"text\" name=\"fullname\" <?php displayValue(\'fullname\'); ?> />
, 您也可以这样:
<?php echo empty($_POST[\'fullname\']) ? null : $_POST[\'fullname\']; ?>