使用$ _POST + = array()作为默认值

时间:2011-06-06 19:39:21

标签: php arrays post

我正在填写一份小型联系表单,并对$_POST提供默认值有疑问。我询问默认值的原因是因为在我的表单中我有这样的字段:

<input type="text" name="fullname" value="<?php echo $_POST['fullname']; ?>" />

显然,如果我不允许数据清除,我想保留提交的值。这会在首次加载页面时引发错误,因为$_POST['fullname']没有值。

对于我的问题:对于为$_POST数组提供默认值我是否应该承担任何问题,就像我在下一个代码示例中所做的那样:

$_POST += array(
  'fullname' = '',
);

如果$_POST['fullname']已经存在,它将被保留 - 如果不存在,它将在数组中创建。这样,在加载表单时,空白值将显示在输入字段中。

别担心,所有人 我清理了我的数据 感谢您的帮助

3 个答案:

答案 0 :(得分:2)

即使您这样做,也要将这些数据放入容器中,不要修改超级全局。创建将包含您的数据的类 - 然后您将使接口执行清理,操作并以正确的方式获取它。从$ _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);

答案 1 :(得分:2)

创建功能:

function displayValue($field) {
  if(isset($_POST[$field])) {
    echo 'value="' . htmlentities($_POST[$field]) . '"';
  }
}

然后使用:

<input type="text" name="fullname" <?php displayValue('fullname'); ?> />

答案 2 :(得分:0)

你也可以这样做:

<?php echo empty($_POST['fullname']) ? null : $_POST['fullname']; ?>